Skip to contentSkip to conversation

libata: print device model and firmware revision for ATAPI devices

PATCH In review Albert Lee 2 participants 2 messages Jun 5, 2007 – Jun 10, 2007 libata

lore
Share & tools
lore

Albert Lee

author
#0 lore raw

PATCH 1/1 libata: print device model and firmware revision for ATAPI devices

For ATA/CFA devices, libata prints out the device model and firmware revision.
Do the same for ATAPI devices.

---
Sometimes the error happens after identify but before the SCSI messages. Knowing the device model and firmware revision could also help.

Dmesg looks like below after the patch.
ata1.00: ATA-6: WDC WD2000JB-00KFA0, 08.05J08, max UDMA/100 ata1.00: 390721968 sectors, multi 16: LBA48 ata5.00: ATAPI: LITE-ON CD-RW SOHR-5238S, 4S07, max UDMA/33 For your review, thanks.

drivers/ata/libata-core.c +10 -8
diff -Nrup 00_libata-dev/drivers/ata/libata-core.c 01_atapi_dmesg/drivers/ata/libata-core.c
@@ -1900,6 +1900,13 @@ int ata_dev_configure(struct ata_device 
 	if (ata_msg_probe(ap))
 		ata_dump_id(id);
 
+	/* SCSI only uses 4-char revisions, dump full 8 chars from ATA */
+	ata_id_c_string(dev->id, fwrevbuf, ATA_ID_FW_REV,
+			sizeof(fwrevbuf));
+
+	ata_id_c_string(dev->id, modelbuf, ATA_ID_PROD,
+			sizeof(modelbuf));
+
 	/* ATA-specific feature tests */
 	if (dev->class == ATA_DEV_ATA) {
 		if (ata_id_is_cfa(id)) {
@@ -1914,13 +1921,6 @@ int ata_dev_configure(struct ata_device 
 
 		dev->n_sectors = ata_id_n_sectors(id);
 
-		/* SCSI only uses 4-char revisions, dump full 8 chars from ATA */
-		ata_id_c_string(dev->id, fwrevbuf, ATA_ID_FW_REV,
-				sizeof(fwrevbuf));
-
-		ata_id_c_string(dev->id, modelbuf, ATA_ID_PROD,
-				sizeof(modelbuf));
-
 		if (dev->id[59] & 0x100)
 			dev->multi_count = dev->id[59] & 0xff;
 
@@ -2009,7 +2009,9 @@ int ata_dev_configure(struct ata_device 
 
 		/* print device info to dmesg */
 		if (ata_msg_drv(ap) && print_info)
-			ata_dev_printk(dev, KERN_INFO, "ATAPI, max %s%s\n",
+			ata_dev_printk(dev, KERN_INFO,
+				       "ATAPI: %s, %s, max %s%s\n",
+				       modelbuf, fwrevbuf,
 				       ata_mode_string(xfer_mask),
 				       cdb_intr_string);
 	}
#1 lore raw
Quoted 9 lines · Albert Lee

For ATA/CFA devices, libata prints out the device model and firmware revision.
Do the same for ATAPI devices.

---
Sometimes the error happens after identify but before the SCSI messages. Knowing the device model and firmware revision could also help.

Quoted 4 lines

Dmesg looks like below after the patch.
ata1.00: ATA-6: WDC WD2000JB-00KFA0, 08.05J08, max UDMA/100
ata1.00: 390721968 sectors, multi 16: LBA48 ata5.00: ATAPI: LITE-ON CD-RW SOHR-5238S, 4S07, max UDMA/33 For your review, thanks.

good idea... applied to #upstream-fixes