dm: Convert PCI MMC over to use DM PCI API

At present pci_mmc_init() does not correctly use the PCI function since the
list it passes is not terminated. The array size passed to pci_mmc_init() is
actually not used correctly. Fix this and adjust the pci_mmc_init() to scan
all available MMC devices.

Adjust this code to use the new driver model PCI API.

This should move over to the new MMC uclass at some point.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
diff --git a/drivers/mmc/pci_mmc.c b/drivers/mmc/pci_mmc.c
index 37171bf..5fb7151 100644
--- a/drivers/mmc/pci_mmc.c
+++ b/drivers/mmc/pci_mmc.c
@@ -11,26 +11,25 @@
 #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);
+		dm_pci_read_config32(dev, PCI_BASE_ADDRESS_0, &iobase);
 		mmc_host->ioaddr = (void *)iobase;
 		mmc_host->quirks = 0;
 		ret = add_sdhci(mmc_host, 0, 0);