Skip to contentSkip to conversation

ata: pata_atiixp allow maximum UDMA speed

PATCH In review Ioannis Barkas 2 participants 2 messages Oct 13 libata

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ata: pata_atiixp allow maximum UDMA speed

Enable UDMA 6 for compatible IDE hosts, tested on SB600 & SB700 using ATA133 HDDs & SSDs. SSDs can exceed now 100MB/s

---
 drivers/ata/pata_atiixp.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
drivers/ata/pata_atiixp.c +19 -1
index 4c612f9543..74ef9195bd 100644
@@ -279,8 +279,26 @@ static int atiixp_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
 		.udma_mask = ATA_UDMA5,
 		.port_ops = &atiixp_port_ops
 	};
+	static const struct ata_port_info info_ata133 = {
+		.flags = ATA_FLAG_SLAVE_POSS,
+		.pio_mask = ATA_PIO4,
+		.mwdma_mask = ATA_MWDMA12_ONLY,
+		.udma_mask = ATA_UDMA6,
+		.port_ops = &atiixp_port_ops
+	};
 	const struct ata_port_info *ppi[] = { &info, &info };
 
+	/* SB300 and newer: UDMA6 */
+	switch (pdev->device) {
+	case PCI_DEVICE_ID_ATI_IXP300_IDE:
+	case PCI_DEVICE_ID_ATI_IXP400_IDE:
+	case PCI_DEVICE_ID_ATI_IXP600_IDE:
+	case PCI_DEVICE_ID_ATI_IXP700_IDE:
+	case PCI_DEVICE_ID_AMD_HUDSON2_IDE:
+		ppi[0] = ppi[1] = &info_ata133;
+		break;
+	}
+
 	/* SB600 doesn't have secondary port wired */
 	if (pdev->device == PCI_DEVICE_ID_ATI_IXP600_IDE)
 		ppi[1] = &ata_dummy_port_info;
@@ -314,7 +332,7 @@ static struct pci_driver atiixp_pci_driver = {
 module_pci_driver(atiixp_pci_driver);
 
 MODULE_AUTHOR("Alan Cox");
-MODULE_DESCRIPTION("low-level driver for ATI IXP200/300/400");
+MODULE_DESCRIPTION("low-level driver for ATI IXP200/300/400, AMD SB600/700 series and Hudson-2");
 MODULE_LICENSE("GPL");
 MODULE_DEVICE_TABLE(pci, atiixp);
 MODULE_VERSION(DRV_VERSION);
Signature · 1 line
2.53.0
maintainer
#1 lore raw
Quoted 2 lines · Ioannis Barkas

Enable UDMA 6 for compatible IDE hosts, tested on SB600 & SB700 using ATA133 HDDs & SSDs. SSDs can exceed now 100MB/s

This commit log is a bit short. Please provide some more information.

You commit log mentions SB600 & SB700, but the code comment mentions SB300.

Quoted 3 lines

The email addresses in this patch, and in all your other patches, are missing corrupt. The format is:

i.e. you are missing <> around the email address.

Quoted 36 lines
---
 drivers/ata/pata_atiixp.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
drivers/ata/pata_atiixp.c +18 -0
index 4c612f9543..74ef9195bd 100644
@@ -279,8 +279,26 @@ static int atiixp_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
 		.udma_mask = ATA_UDMA5,
 		.port_ops = &atiixp_port_ops
 	};
+	static const struct ata_port_info info_ata133 = {
+		.flags = ATA_FLAG_SLAVE_POSS,
+		.pio_mask = ATA_PIO4,
+		.mwdma_mask = ATA_MWDMA12_ONLY,
+		.udma_mask = ATA_UDMA6,
+		.port_ops = &atiixp_port_ops
+	};
 	const struct ata_port_info *ppi[] = { &info, &info };
 
+	/* SB300 and newer: UDMA6 */
+	switch (pdev->device) {
+	case PCI_DEVICE_ID_ATI_IXP300_IDE:
+	case PCI_DEVICE_ID_ATI_IXP400_IDE:
+	case PCI_DEVICE_ID_ATI_IXP600_IDE:
+	case PCI_DEVICE_ID_ATI_IXP700_IDE:
+	case PCI_DEVICE_ID_AMD_HUDSON2_IDE:
+		ppi[0] = ppi[1] = &info_ata133;
+		break;
+	}
+
 	/* SB600 doesn't have secondary port wired */
 	if (pdev->device == PCI_DEVICE_ID_ATI_IXP600_IDE)
 		ppi[1] = &ata_dummy_port_info;

drivers/ata/pata_atiixp.c static struct pci_driver atiixp_pci_driver = { · line 335

Quoted 5 lines
drivers/ata/pata_atiixp.c +1 -1
@@ -314,7 +332,7 @@ static struct pci_driver atiixp_pci_driver = {
 module_pci_driver(atiixp_pci_driver);
 
 MODULE_AUTHOR("Alan Cox");
-MODULE_DESCRIPTION("low-level driver for ATI IXP200/300/400");
+MODULE_DESCRIPTION("low-level driver for ATI IXP200/300/400, AMD SB600/700 series and Hudson-2");

This is a separate logical change, please drop it.

As we can see from the context above:

/* SB600 doesn't have secondary port wired */

The driver already supports SB600 in PATA mode, even though it was not explicitly mentioned in the module description.

I don't see why we would need to change it now.

Kind regards,
Niklas