aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-core.c
diff options
context:
space:
mode:
authorEric D. Mudama <edmudama@gmail.com>2007-01-31 01:00:40 -0500
committerJeff Garzik <jeff@garzik.org>2007-02-09 17:39:38 -0500
commit3f64f565bebbb4a1a4e9ccce5565c9f86458ddb1 (patch)
treec48cb3fb9a60dc7f9720bccb8b3991bc76c55901 /drivers/ata/libata-core.c
parent24a01453892e0a4a6ad38460541bd0dae9b1837f (diff)
libata: rearrange dmesg info to add full ATA revision
Per Jeff's suggestion, this patch rearranges the info printed for ATA drives into dmesg to add the full ATA firmware revision and model information, while keeping the output to 2 lines. Signed-off-by: Eric D. Mudama <edmudama@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r--drivers/ata/libata-core.c52
1 files changed, 31 insertions, 21 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 2e8ca652c0d9..5c2e581bf990 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1540,6 +1540,8 @@ int ata_dev_configure(struct ata_device *dev)
1540 const u16 *id = dev->id; 1540 const u16 *id = dev->id;
1541 unsigned int xfer_mask; 1541 unsigned int xfer_mask;
1542 char revbuf[7]; /* XYZ-99\0 */ 1542 char revbuf[7]; /* XYZ-99\0 */
1543 char fwrevbuf[ATA_ID_FW_REV_LEN+1];
1544 char modelbuf[ATA_ID_PROD_LEN+1];
1543 int rc; 1545 int rc;
1544 1546
1545 if (!ata_dev_enabled(dev) && ata_msg_info(ap)) { 1547 if (!ata_dev_enabled(dev) && ata_msg_info(ap)) {
@@ -1594,6 +1596,16 @@ int ata_dev_configure(struct ata_device *dev)
1594 1596
1595 dev->n_sectors = ata_id_n_sectors(id); 1597 dev->n_sectors = ata_id_n_sectors(id);
1596 1598
1599 /* SCSI only uses 4-char revisions, dump full 8 chars from ATA */
1600 ata_id_c_string(dev->id, fwrevbuf, ATA_ID_FW_REV_OFS,
1601 sizeof(fwrevbuf));
1602
1603 ata_id_c_string(dev->id, modelbuf, ATA_ID_PROD_OFS,
1604 sizeof(modelbuf));
1605
1606 if (dev->id[59] & 0x100)
1607 dev->multi_count = dev->id[59] & 0xff;
1608
1597 if (ata_id_has_lba(id)) { 1609 if (ata_id_has_lba(id)) {
1598 const char *lba_desc; 1610 const char *lba_desc;
1599 char ncq_desc[20]; 1611 char ncq_desc[20];
@@ -1613,13 +1625,16 @@ int ata_dev_configure(struct ata_device *dev)
1613 ata_dev_config_ncq(dev, ncq_desc, sizeof(ncq_desc)); 1625 ata_dev_config_ncq(dev, ncq_desc, sizeof(ncq_desc));
1614 1626
1615 /* print device info to dmesg */ 1627 /* print device info to dmesg */
1616 if (ata_msg_drv(ap) && print_info) 1628 if (ata_msg_drv(ap) && print_info) {
1617 ata_dev_printk(dev, KERN_INFO, "%s, " 1629 ata_dev_printk(dev, KERN_INFO,
1618 "max %s, %Lu sectors: %s %s\n", 1630 "%s: %s, %s, max %s\n",
1619 revbuf, 1631 revbuf, modelbuf, fwrevbuf,
1620 ata_mode_string(xfer_mask), 1632 ata_mode_string(xfer_mask));
1633 ata_dev_printk(dev, KERN_INFO,
1634 "%Lu sectors, multi %u: %s %s\n",
1621 (unsigned long long)dev->n_sectors, 1635 (unsigned long long)dev->n_sectors,
1622 lba_desc, ncq_desc); 1636 dev->multi_count, lba_desc, ncq_desc);
1637 }
1623 } else { 1638 } else {
1624 /* CHS */ 1639 /* CHS */
1625 1640
@@ -1636,22 +1651,17 @@ int ata_dev_configure(struct ata_device *dev)
1636 } 1651 }
1637 1652
1638 /* print device info to dmesg */ 1653 /* print device info to dmesg */
1639 if (ata_msg_drv(ap) && print_info) 1654 if (ata_msg_drv(ap) && print_info) {
1640 ata_dev_printk(dev, KERN_INFO, "%s, "
1641 "max %s, %Lu sectors: CHS %u/%u/%u\n",
1642 revbuf,
1643 ata_mode_string(xfer_mask),
1644 (unsigned long long)dev->n_sectors,
1645 dev->cylinders, dev->heads,
1646 dev->sectors);
1647 }
1648
1649 if (dev->id[59] & 0x100) {
1650 dev->multi_count = dev->id[59] & 0xff;
1651 if (ata_msg_drv(ap) && print_info)
1652 ata_dev_printk(dev, KERN_INFO, 1655 ata_dev_printk(dev, KERN_INFO,
1653 "ata%u: dev %u multi count %u\n", 1656 "%s: %s, %s, max %s\n",
1654 ap->id, dev->devno, dev->multi_count); 1657 revbuf, modelbuf, fwrevbuf,
1658 ata_mode_string(xfer_mask));
1659 ata_dev_printk(dev, KERN_INFO,
1660 "%Lu sectors, multi %u, CHS %u/%u/%u\n",
1661 (unsigned long long)dev->n_sectors,
1662 dev->multi_count, dev->cylinders,
1663 dev->heads, dev->sectors);
1664 }
1655 } 1665 }
1656 1666
1657 dev->cdb_len = 16; 1667 dev->cdb_len = 16;