--- a/drivers/ata/ahci_platform.c +++ b/drivers/ata/ahci_platform.c @@ -29,12 +29,23 @@ static const struct ata_port_info ahci_p .port_ops = &ahci_platform_ops, }; +static const struct ata_port_info cns3xxx_port_info = { + .flags = AHCI_FLAG_COMMON, + .pio_mask = ATA_PIO4, + .udma_mask = ATA_UDMA6, + .port_ops = &ahci_pmp_retry_srst_ops, +}; + static int ahci_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct ahci_host_priv *hpriv; + const struct ata_port_info *info = &ahci_port_info; int rc; + if (IS_ENABLED(CONFIG_ARCH_CNS3XXX)) + info = &cns3xxx_port_info; + hpriv = ahci_platform_get_resources(pdev); if (IS_ERR(hpriv)) return PTR_ERR(hpriv);