]> git.sur5r.net Git - u-boot/blobdiff - drivers/mmc/pci_mmc.c
Merge branch 'master' of git://git.denx.de/u-boot-mmc
[u-boot] / drivers / mmc / pci_mmc.c
index 37171bfa71edd8358b8ee8a22cb39b29d9c21a43..e39b476834e650d187cfa25278ac48e7cfe87232 100644 (file)
 #include <sdhci.h>
 #include <asm/pci.h>
 
-int pci_mmc_init(const char *name, struct pci_device_id *mmc_supported,
-                int num_ids)
+int pci_mmc_init(const char *name, struct pci_device_id *mmc_supported)
 {
        struct sdhci_host *mmc_host;
-       pci_dev_t devbusfn;
        u32 iobase;
        int ret;
        int i;
 
-       for (i = 0; i < num_ids; i++) {
-               devbusfn = pci_find_devices(mmc_supported, i);
-               if (devbusfn == -1)
-                       return -ENODEV;
+       for (i = 0; ; i++) {
+               struct udevice *dev;
 
+               ret = pci_find_device_id(mmc_supported, i, &dev);
+               if (ret)
+                       return ret;
                mmc_host = malloc(sizeof(struct sdhci_host));
                if (!mmc_host)
                        return -ENOMEM;
 
-               mmc_host->name = (char *)name;
-               pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_0, &iobase);
-               mmc_host->ioaddr = (void *)iobase;
+               mmc_host->name = name;
+               dm_pci_read_config32(dev, PCI_BASE_ADDRESS_0, &iobase);
+               mmc_host->ioaddr = (void *)(ulong)iobase;
                mmc_host->quirks = 0;
+               mmc_host->max_clk = 0;
                ret = add_sdhci(mmc_host, 0, 0);
                if (ret)
                        return ret;