/* * Copyright (C) 2015, Google, Inc * Copyright (C) 2014, Bin Meng * * SPDX-License-Identifier: GPL-2.0+ */ #include #include #include #include #include int pci_mmc_init(const char *name, struct pci_device_id *mmc_supported, int num_ids) { 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; 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->quirks = 0; ret = add_sdhci(mmc_host, 0, 0); if (ret) return ret; } return 0; }