2017-05-15 23:44 GMT+02:00 Matthias Kraemer <matthiasmartinsson@xxxxxxxxx>: > This patch applies customized PCI_DEVICE_ macros to specify the pci_ids > instead of open-coding them within the sdhci-pci driver. > > By introducing device specific macros the pci_ids table becomes much > shorter and easier to comprehend than it would be possible using the > generic version of the PCI_DEVICE_ macros. > > Signed-off-by: Matthias Kraemer <matthiasmartinsson@xxxxxxxxx> Thanks, applied for next! Kind regards Uffe > --- > drivers/mmc/host/sdhci-pci-core.c | 618 +++++--------------------------------- > drivers/mmc/host/sdhci-pci.h | 43 ++- > 2 files changed, 112 insertions(+), 549 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c > index 92fc3f7..b3ddc32 100644 > --- a/drivers/mmc/host/sdhci-pci-core.c > +++ b/drivers/mmc/host/sdhci-pci-core.c > @@ -1171,554 +1171,76 @@ static const struct sdhci_pci_fixes sdhci_amd = { > }; > > static const struct pci_device_id pci_ids[] = { > - { > - .vendor = PCI_VENDOR_ID_RICOH, > - .device = PCI_DEVICE_ID_RICOH_R5C822, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_ricoh, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_RICOH, > - .device = 0x843, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_ricoh_mmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_RICOH, > - .device = 0xe822, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_ricoh_mmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_RICOH, > - .device = 0xe823, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_ricoh_mmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_ENE, > - .device = PCI_DEVICE_ID_ENE_CB712_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_ene_712, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_ENE, > - .device = PCI_DEVICE_ID_ENE_CB712_SD_2, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_ene_712, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_ENE, > - .device = PCI_DEVICE_ID_ENE_CB714_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_ene_714, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_ENE, > - .device = PCI_DEVICE_ID_ENE_CB714_SD_2, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_ene_714, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_MARVELL, > - .device = PCI_DEVICE_ID_MARVELL_88ALP01_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_cafe, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_JMICRON, > - .device = PCI_DEVICE_ID_JMICRON_JMB38X_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_jmicron, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_JMICRON, > - .device = PCI_DEVICE_ID_JMICRON_JMB38X_MMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_jmicron, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_JMICRON, > - .device = PCI_DEVICE_ID_JMICRON_JMB388_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_jmicron, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_JMICRON, > - .device = PCI_DEVICE_ID_JMICRON_JMB388_ESD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_jmicron, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_SYSKONNECT, > - .device = 0x8000, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_syskt, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_VIA, > - .device = 0x95d0, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_via, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_REALTEK, > - .device = 0x5250, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_rtsx, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_QRK_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_qrk, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_MRST_SD0, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mrst_hc0, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_MRST_SD1, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mrst_hc1_hc2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_MRST_SD2, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mrst_hc1_hc2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_MFD_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_sd, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_MFD_SDIO1, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_MFD_SDIO2, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_MFD_EMMC0, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_MFD_EMMC1, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_PCH_SDIO0, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_pch_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_PCH_SDIO1, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_pch_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BYT_EMMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BYT_SDIO, > - .subvendor = PCI_VENDOR_ID_NI, > - .subdevice = 0x7884, > - .driver_data = (kernel_ulong_t)&sdhci_ni_byt_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BYT_SDIO, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BYT_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sd, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BYT_EMMC2, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BSW_EMMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BSW_SDIO, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BSW_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sd, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_CLV_SDIO0, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_sd, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_CLV_SDIO1, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_CLV_SDIO2, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_CLV_EMMC0, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_CLV_EMMC1, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_MRFLD_MMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_mrfld_mmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_SPT_EMMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_SPT_SDIO, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_SPT_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sd, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_DNV_EMMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BXT_EMMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BXT_SDIO, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BXT_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sd, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BXTM_EMMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BXTM_SDIO, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_BXTM_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sd, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_APL_EMMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_APL_SDIO, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_APL_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sd, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_GLK_EMMC, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_emmc, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_GLK_SDIO, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sdio, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_INTEL, > - .device = PCI_DEVICE_ID_INTEL_GLK_SD, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sd, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_8120, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_8220, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_8221, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_8320, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_8321, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_FUJIN2, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_SDS0, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_SDS1, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_SEABIRD0, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - > - { > - .vendor = PCI_VENDOR_ID_O2, > - .device = PCI_DEVICE_ID_O2_SEABIRD1, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_o2, > - }, > - { > - .vendor = PCI_VENDOR_ID_AMD, > - .device = PCI_ANY_ID, > - .class = PCI_CLASS_SYSTEM_SDHCI << 8, > - .class_mask = 0xFFFF00, > - .subvendor = PCI_ANY_ID, > - .subdevice = PCI_ANY_ID, > - .driver_data = (kernel_ulong_t)&sdhci_amd, > - }, > - { /* Generic SD host controller */ > - PCI_DEVICE_CLASS((PCI_CLASS_SYSTEM_SDHCI << 8), 0xFFFF00) > - }, > - > + SDHCI_PCI_DEVICE(RICOH, R5C822, ricoh), > + SDHCI_PCI_DEVICE(RICOH, R5C843, ricoh_mmc), > + SDHCI_PCI_DEVICE(RICOH, R5CE822, ricoh_mmc), > + SDHCI_PCI_DEVICE(RICOH, R5CE823, ricoh_mmc), > + SDHCI_PCI_DEVICE(ENE, CB712_SD, ene_712), > + SDHCI_PCI_DEVICE(ENE, CB712_SD_2, ene_712), > + SDHCI_PCI_DEVICE(ENE, CB714_SD, ene_714), > + SDHCI_PCI_DEVICE(ENE, CB714_SD_2, ene_714), > + SDHCI_PCI_DEVICE(MARVELL, 88ALP01_SD, cafe), > + SDHCI_PCI_DEVICE(JMICRON, JMB38X_SD, jmicron), > + SDHCI_PCI_DEVICE(JMICRON, JMB38X_MMC, jmicron), > + SDHCI_PCI_DEVICE(JMICRON, JMB388_SD, jmicron), > + SDHCI_PCI_DEVICE(JMICRON, JMB388_ESD, jmicron), > + SDHCI_PCI_DEVICE(SYSKONNECT, 8000, syskt), > + SDHCI_PCI_DEVICE(VIA, 95D0, via), > + SDHCI_PCI_DEVICE(REALTEK, 5250, rtsx), > + SDHCI_PCI_DEVICE(INTEL, QRK_SD, intel_qrk), > + SDHCI_PCI_DEVICE(INTEL, MRST_SD0, intel_mrst_hc0), > + SDHCI_PCI_DEVICE(INTEL, MRST_SD1, intel_mrst_hc1_hc2), > + SDHCI_PCI_DEVICE(INTEL, MRST_SD2, intel_mrst_hc1_hc2), > + SDHCI_PCI_DEVICE(INTEL, MFD_SD, intel_mfd_sd), > + SDHCI_PCI_DEVICE(INTEL, MFD_SDIO1, intel_mfd_sdio), > + SDHCI_PCI_DEVICE(INTEL, MFD_SDIO2, intel_mfd_sdio), > + SDHCI_PCI_DEVICE(INTEL, MFD_EMMC0, intel_mfd_emmc), > + SDHCI_PCI_DEVICE(INTEL, MFD_EMMC1, intel_mfd_emmc), > + SDHCI_PCI_DEVICE(INTEL, PCH_SDIO0, intel_pch_sdio), > + SDHCI_PCI_DEVICE(INTEL, PCH_SDIO1, intel_pch_sdio), > + SDHCI_PCI_DEVICE(INTEL, BYT_EMMC, intel_byt_emmc), > + SDHCI_PCI_SUBDEVICE(INTEL, BYT_SDIO, NI, 7884, ni_byt_sdio), > + SDHCI_PCI_DEVICE(INTEL, BYT_SDIO, intel_byt_sdio), > + SDHCI_PCI_DEVICE(INTEL, BYT_SD, intel_byt_sd), > + SDHCI_PCI_DEVICE(INTEL, BYT_EMMC2, intel_byt_emmc), > + SDHCI_PCI_DEVICE(INTEL, BSW_EMMC, intel_byt_emmc), > + SDHCI_PCI_DEVICE(INTEL, BSW_SDIO, intel_byt_sdio), > + SDHCI_PCI_DEVICE(INTEL, BSW_SD, intel_byt_sd), > + SDHCI_PCI_DEVICE(INTEL, CLV_SDIO0, intel_mfd_sd), > + SDHCI_PCI_DEVICE(INTEL, CLV_SDIO1, intel_mfd_sdio), > + SDHCI_PCI_DEVICE(INTEL, CLV_SDIO2, intel_mfd_sdio), > + SDHCI_PCI_DEVICE(INTEL, CLV_EMMC0, intel_mfd_emmc), > + SDHCI_PCI_DEVICE(INTEL, CLV_EMMC1, intel_mfd_emmc), > + SDHCI_PCI_DEVICE(INTEL, MRFLD_MMC, intel_mrfld_mmc), > + SDHCI_PCI_DEVICE(INTEL, SPT_EMMC, intel_byt_emmc), > + SDHCI_PCI_DEVICE(INTEL, SPT_SDIO, intel_byt_sdio), > + SDHCI_PCI_DEVICE(INTEL, SPT_SD, intel_byt_sd), > + SDHCI_PCI_DEVICE(INTEL, DNV_EMMC, intel_byt_emmc), > + SDHCI_PCI_DEVICE(INTEL, BXT_EMMC, intel_byt_emmc), > + SDHCI_PCI_DEVICE(INTEL, BXT_SDIO, intel_byt_sdio), > + SDHCI_PCI_DEVICE(INTEL, BXT_SD, intel_byt_sd), > + SDHCI_PCI_DEVICE(INTEL, BXTM_EMMC, intel_byt_emmc), > + SDHCI_PCI_DEVICE(INTEL, BXTM_SDIO, intel_byt_sdio), > + SDHCI_PCI_DEVICE(INTEL, BXTM_SD, intel_byt_sd), > + SDHCI_PCI_DEVICE(INTEL, APL_EMMC, intel_byt_emmc), > + SDHCI_PCI_DEVICE(INTEL, APL_SDIO, intel_byt_sdio), > + SDHCI_PCI_DEVICE(INTEL, APL_SD, intel_byt_sd), > + SDHCI_PCI_DEVICE(INTEL, GLK_EMMC, intel_byt_emmc), > + SDHCI_PCI_DEVICE(INTEL, GLK_SDIO, intel_byt_sdio), > + SDHCI_PCI_DEVICE(INTEL, GLK_SD, intel_byt_sd), > + SDHCI_PCI_DEVICE(O2, 8120, o2), > + SDHCI_PCI_DEVICE(O2, 8220, o2), > + SDHCI_PCI_DEVICE(O2, 8221, o2), > + SDHCI_PCI_DEVICE(O2, 8320, o2), > + SDHCI_PCI_DEVICE(O2, 8321, o2), > + SDHCI_PCI_DEVICE(O2, FUJIN2, o2), > + SDHCI_PCI_DEVICE(O2, SDS0, o2), > + SDHCI_PCI_DEVICE(O2, SDS1, o2), > + SDHCI_PCI_DEVICE(O2, SEABIRD0, o2), > + SDHCI_PCI_DEVICE(O2, SEABIRD1, o2), > + SDHCI_PCI_DEVICE_CLASS(AMD, SYSTEM_SDHCI, PCI_CLASS_MASK, amd), > + /* Generic SD host controller */ > + {PCI_DEVICE_CLASS(SYSTEM_SDHCI, PCI_CLASS_MASK)}, > { /* end: all zeroes */ }, > }; > > diff --git a/drivers/mmc/host/sdhci-pci.h b/drivers/mmc/host/sdhci-pci.h > index 37766d20..e63fb9b 100644 > --- a/drivers/mmc/host/sdhci-pci.h > +++ b/drivers/mmc/host/sdhci-pci.h > @@ -2,7 +2,7 @@ > #define __SDHCI_PCI_H > > /* > - * PCI device IDs > + * PCI device IDs, sub IDs > */ > > #define PCI_DEVICE_ID_INTEL_PCH_SDIO0 0x8809 > @@ -38,6 +38,47 @@ > #define PCI_DEVICE_ID_INTEL_GLK_EMMC 0x31cc > #define PCI_DEVICE_ID_INTEL_GLK_SDIO 0x31d0 > > +#define PCI_DEVICE_ID_SYSKONNECT_8000 0x8000 > +#define PCI_DEVICE_ID_VIA_95D0 0x95d0 > +#define PCI_DEVICE_ID_REALTEK_5250 0x5250 > + > +#define PCI_SUBDEVICE_ID_NI_7884 0x7884 > + > +/* > + * PCI device class and mask > + */ > + > +#define SYSTEM_SDHCI (PCI_CLASS_SYSTEM_SDHCI << 8) > +#define PCI_CLASS_MASK 0xFFFF00 > + > +/* > + * Macros for PCI device-description > + */ > + > +#define _PCI_VEND(vend) PCI_VENDOR_ID_##vend > +#define _PCI_DEV(vend, dev) PCI_DEVICE_ID_##vend##_##dev > +#define _PCI_SUBDEV(subvend, subdev) PCI_SUBDEVICE_ID_##subvend##_##subdev > + > +#define SDHCI_PCI_DEVICE(vend, dev, cfg) { \ > + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(vend, dev), \ > + .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \ > + .driver_data = (kernel_ulong_t)&(sdhci_##cfg) \ > +} > + > +#define SDHCI_PCI_SUBDEVICE(vend, dev, subvend, subdev, cfg) { \ > + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(vend, dev), \ > + .subvendor = _PCI_VEND(subvend), \ > + .subdevice = _PCI_SUBDEV(subvend, subdev), \ > + .driver_data = (kernel_ulong_t)&(sdhci_##cfg) \ > +} > + > +#define SDHCI_PCI_DEVICE_CLASS(vend, cl, cl_msk, cfg) { \ > + .vendor = _PCI_VEND(vend), .device = PCI_ANY_ID, \ > + .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \ > + .class = (cl), .class_mask = (cl_msk), \ > + .driver_data = (kernel_ulong_t)&(sdhci_##cfg) \ > +} > + > /* > * PCI registers > */ > -- > 2.7.4 > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html