sata_sil: Enable DM_PCI operation
authorAndre Przywara <andre.przywara@arm.com>
Thu, 11 Jun 2020 11:03:19 +0000 (12:03 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 7 Jul 2020 22:23:48 +0000 (18:23 -0400)
Even though the sata_sil driver was converted over to the driver model,
it still assumed that the PCI controller is using the legacy interface.

Allow the "devno" member to be a struct udevice pointer and use
DM_PCI_COMPAT to covert the rest of the interface.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
drivers/ata/sata_sil.c
drivers/ata/sata_sil.h

index 6896fa8771be0231f7efcb04544827ac5ebfed77..d5ba94c1725326f2c0c25970312dbefe70e04c34 100644 (file)
 
 #include "sata_sil.h"
 
+#ifdef CONFIG_DM_PCI
+#define virt_to_bus(devno, v)  dm_pci_virt_to_mem(devno, (void *) (v))
+#else
 #define virt_to_bus(devno, v)  pci_virt_to_mem(devno, (void *) (v))
+#endif
 
 /* just compatible ahci_ops */
 struct sil_ops {
@@ -608,13 +612,18 @@ static int sil_init_sata(struct udevice *uc_dev, int dev)
        /* Save the private struct to block device struct */
 #if !CONFIG_IS_ENABLED(BLK)
        sata_dev_desc[dev].priv = (void *)sata;
+       sata->devno = sata_info.devno;
 #else
        priv->sil_sata_desc[dev] = sata;
        priv->port_num = dev;
+#ifdef CONFIG_DM_PCI
+       sata->devno = uc_dev->parent;
+#else
+       sata->devno = sata_info.devno;
+#endif /* CONFIG_DM_PCI */
 #endif
        sata->id = dev;
        sata->port = port;
-       sata->devno = sata_info.devno;
        sprintf(sata->name, "SATA#%d", dev);
        sil_cmd_soft_reset(sata);
        tmp = readl(port + PORT_SSTATUS);
index ef41e8259ac587b9505f5099147b0a455954756b..a300c0c38875f0812f8aa65077b397333cdcf934 100644 (file)
@@ -21,7 +21,11 @@ struct sil_sata {
        u16             pio;
        u16             mwdma;
        u16             udma;
-       pci_dev_t devno;
+#ifdef CONFIG_DM_PCI
+       struct udevice  *devno;
+#else
+       pci_dev_t       devno;
+#endif
        int             wcache;
        int             flush;
        int             flush_ext;