* [PATCH V6] mmc: sdhci-pci: Use macros in pci_ids definition @ 2017-05-15 21:44 Matthias Kraemer 2017-05-15 21:44 ` [PATCH] " Matthias Kraemer 0 siblings, 1 reply; 15+ messages in thread From: Matthias Kraemer @ 2017-05-15 21:44 UTC (permalink / raw) To: adrian.hunter, ulf.hansson, linux-mmc I am re-sending this with another set of modifications and a cleaned commit message. v2,3: introduce device specific macros to shorten the pci_ids table even further as suggested by Adrian v4: fix compile time issue v5: additional cleanup of macros v6: reorganizing of defines and macros, minor cleanup ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition 2017-05-15 21:44 [PATCH V6] mmc: sdhci-pci: Use macros in pci_ids definition Matthias Kraemer @ 2017-05-15 21:44 ` Matthias Kraemer 2017-05-30 9:09 ` Adrian Hunter 2017-05-30 9:55 ` Ulf Hansson 0 siblings, 2 replies; 15+ messages in thread From: Matthias Kraemer @ 2017-05-15 21:44 UTC (permalink / raw) To: adrian.hunter, ulf.hansson, linux-mmc; +Cc: Matthias Kraemer 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@gmail.com> --- 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 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition 2017-05-15 21:44 ` [PATCH] " Matthias Kraemer @ 2017-05-30 9:09 ` Adrian Hunter 2017-05-30 9:55 ` Ulf Hansson 1 sibling, 0 replies; 15+ messages in thread From: Adrian Hunter @ 2017-05-30 9:09 UTC (permalink / raw) To: Matthias Kraemer, ulf.hansson, linux-mmc On 16/05/17 00:44, Matthias Kraemer wrote: > 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@gmail.com> Acked-by: Adrian Hunter <adrian.hunter@intel.com> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition 2017-05-15 21:44 ` [PATCH] " Matthias Kraemer 2017-05-30 9:09 ` Adrian Hunter @ 2017-05-30 9:55 ` Ulf Hansson 1 sibling, 0 replies; 15+ messages in thread From: Ulf Hansson @ 2017-05-30 9:55 UTC (permalink / raw) To: Matthias Kraemer; +Cc: Adrian Hunter, linux-mmc 2017-05-15 23:44 GMT+02:00 Matthias Kraemer <matthiasmartinsson@gmail.com>: > 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@gmail.com> 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 > ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition @ 2017-05-07 7:15 Matthias Kraemer 2017-05-07 7:15 ` Matthias Kraemer 0 siblings, 1 reply; 15+ messages in thread From: Matthias Kraemer @ 2017-05-07 7:15 UTC (permalink / raw) To: adrian.hunter, ulf.hansson, linux-mmc Hello everybody, I incorporated another round of review comments in this patch. @Adrian Thanks for pointing these out. I appreciate the input. Kind regards Matthias ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition 2017-05-07 7:15 Matthias Kraemer @ 2017-05-07 7:15 ` Matthias Kraemer 2017-05-08 7:23 ` Adrian Hunter 0 siblings, 1 reply; 15+ messages in thread From: Matthias Kraemer @ 2017-05-07 7:15 UTC (permalink / raw) To: adrian.hunter, ulf.hansson, linux-mmc; +Cc: Matthias Kraemer This patch applies the PCI_DEVICE_ macros to specify the pci_ids instead of open-coding them within the sdhci-pci driver. v2,v3: Suggested-by Adrian Hunter <adrian.hunter@intel.com> Instead of using the generic PCI_ marcos, introduce device specific macros to be able to shorten the table entries even further. v4,v5: additional cleanup of macros Signed-off-by: Matthias Kraemer <matthiasmartinsson@gmail.com> --- drivers/mmc/host/sdhci-pci-core.c | 618 +++++--------------------------------- drivers/mmc/host/sdhci-pci.h | 44 ++- 2 files changed, 113 insertions(+), 549 deletions(-) diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index 86560d5..47ba07d 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -992,554 +992,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, RI843, ricoh_mmc), + SDHCI_PCI_DEVICE(RICOH, RIe822, ricoh_mmc), + SDHCI_PCI_DEVICE(RICOH, RIe823, 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, SY8000, syskt), + SDHCI_PCI_DEVICE(VIA, V95d0, via), + SDHCI_PCI_DEVICE(REALTEK, RE5250, 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_DEVICE_SUB(INTEL, BYT_SDIO, NI, SUB7884, 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 36f7434..bd7a9e6 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,48 @@ #define PCI_DEVICE_ID_INTEL_GLK_EMMC 0x31cc #define PCI_DEVICE_ID_INTEL_GLK_SDIO 0x31d0 +#define PCI_DEVICE_ID_RICOH_RI843 0x843 +#define PCI_DEVICE_ID_RICOH_RIe822 0xe822 +#define PCI_DEVICE_ID_RICOH_RIe823 0xe823 +#define PCI_DEVICE_ID_SYSKONNECT_SY8000 0x8000 +#define PCI_DEVICE_ID_VIA_V95d0 0x95d0 +#define PCI_DEVICE_ID_REALTEK_RE5250 0x5250 + +#define PCI_DEVICE_ID_INTEL_SUB7884 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 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_DEVICE_SUB(vend, dev, subvend, subdev, cfg) { \ + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(vend, dev), \ + .subvendor = _PCI_VEND(subvend), .subdevice = _PCI_DEV(vend, 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 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition 2017-05-07 7:15 ` Matthias Kraemer @ 2017-05-08 7:23 ` Adrian Hunter 0 siblings, 0 replies; 15+ messages in thread From: Adrian Hunter @ 2017-05-08 7:23 UTC (permalink / raw) To: Matthias Kraemer, ulf.hansson, linux-mmc On 07/05/17 10:15, Matthias Kraemer wrote: > This patch applies the PCI_DEVICE_ macros to specify the pci_ids instead > of open-coding them within the sdhci-pci driver. Thanks for updating your patch. It is looking good, but I have more comments. Please update the commit message to reflect the current patch. We don't want version information like below in the final commit message. > > v2,v3: > Suggested-by Adrian Hunter <adrian.hunter@intel.com> > Instead of using the generic PCI_ marcos, introduce device specific macros > to be able to shorten the table entries even further. > > v4,v5: > additional cleanup of macros For future reference, the version changes should be below the --- line or in a covering email. Also the subject should have the version after PATCH e.g. [PATCH V5] etc. > > Signed-off-by: Matthias Kraemer <matthiasmartinsson@gmail.com> > --- > drivers/mmc/host/sdhci-pci-core.c | 618 +++++--------------------------------- > drivers/mmc/host/sdhci-pci.h | 44 ++- > 2 files changed, 113 insertions(+), 549 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c > index 86560d5..47ba07d 100644 > --- a/drivers/mmc/host/sdhci-pci-core.c > +++ b/drivers/mmc/host/sdhci-pci-core.c > @@ -992,554 +992,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, RI843, ricoh_mmc), > + SDHCI_PCI_DEVICE(RICOH, RIe822, ricoh_mmc), > + SDHCI_PCI_DEVICE(RICOH, RIe823, 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), Let's line up the cfg when the vendor is the same e.g. SDHCI_PCI_DEVICE(RICOH, R5C822, ricoh), SDHCI_PCI_DEVICE(RICOH, RI843 , ricoh_mmc), SDHCI_PCI_DEVICE(RICOH, RIe822, ricoh_mmc), SDHCI_PCI_DEVICE(RICOH, RIe823, 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, SY8000, syskt), > + SDHCI_PCI_DEVICE(VIA, V95d0, via), > + SDHCI_PCI_DEVICE(REALTEK, RE5250, 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_DEVICE_SUB(INTEL, BYT_SDIO, NI, SUB7884, 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 36f7434..bd7a9e6 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,48 @@ > #define PCI_DEVICE_ID_INTEL_GLK_EMMC 0x31cc > #define PCI_DEVICE_ID_INTEL_GLK_SDIO 0x31d0 > > +#define PCI_DEVICE_ID_RICOH_RI843 0x843 RICOH already has a macro for that: PCI_DEVICE_ID_RICOH_R5C843 > +#define PCI_DEVICE_ID_RICOH_RIe822 0xe822 RICOH already has a macro for that: PCI_DEVICE_ID_RICOH_R5CE822 > +#define PCI_DEVICE_ID_RICOH_RIe823 0xe823 RICOH already has a macro for that: PCI_DEVICE_ID_RICOH_R5CE823 > +#define PCI_DEVICE_ID_SYSKONNECT_SY8000 0x8000 > +#define PCI_DEVICE_ID_VIA_V95d0 0x95d0 > +#define PCI_DEVICE_ID_REALTEK_RE5250 0x5250 In other places I see this kind of number macro, the number is just used at the end, so lets do that here and use upper case e.g. #define PCI_DEVICE_ID_SYSKONNECT_8000 0x8000 #define PCI_DEVICE_ID_VIA_95D0 0x95d0 #define PCI_DEVICE_ID_REALTEK_5250 0x5250 > + > +#define PCI_DEVICE_ID_INTEL_SUB7884 0x7884 I think this should be: #define PCI_SUBDEVICE_ID_NI_7884 0x7884 Because the subsystem device ID really belongs to the subsystem vendor. You will need to adjust the macro accordingly. > + > +/* > + * 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 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_DEVICE_SUB(vend, dev, subvend, subdev, cfg) { \ > + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(vend, dev), \ > + .subvendor = _PCI_VEND(subvend), .subdevice = _PCI_DEV(vend, 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 > */ > ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition @ 2017-05-04 18:55 Matthias Kraemer 2017-05-04 18:55 ` Matthias Kraemer 0 siblings, 1 reply; 15+ messages in thread From: Matthias Kraemer @ 2017-05-04 18:55 UTC (permalink / raw) To: adrian.hunter, ulf.hansson, linux-mmc Hello everybody, I will give it another try. I just found a compile-time issue, introduced during last minute clean-ups. Kind regards Matthias ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition 2017-05-04 18:55 Matthias Kraemer @ 2017-05-04 18:55 ` Matthias Kraemer 2017-05-05 6:09 ` Adrian Hunter 0 siblings, 1 reply; 15+ messages in thread From: Matthias Kraemer @ 2017-05-04 18:55 UTC (permalink / raw) To: adrian.hunter, ulf.hansson, linux-mmc; +Cc: Matthias Kraemer This patch applies the PCI_DEVICE_ macros to specify the pci_ids instead of open-coding them within the sdhci-pci driver. v2,v3: Suggested-by Adrian Hunter <adrian.hunter@intel.com> Instead of using the generic PCI_ marcos, introduce device specific macros to be able to shorten the table entries even further. v4: Fix compile-time issue Signed-off-by: Matthias Kraemer <matthiasmartinsson@gmail.com> --- drivers/mmc/host/sdhci-pci-core.c | 619 +++++--------------------------------- drivers/mmc/host/sdhci-pci.h | 41 ++- 2 files changed, 111 insertions(+), 549 deletions(-) diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index 86560d5..d2b6115 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -992,554 +992,77 @@ 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, RICOH_R5C822, ricoh)}, + {SDHCI_PCI_DEVICE(RICOH, RICOH_0x843, ricoh_mmc)}, + {SDHCI_PCI_DEVICE(RICOH, RICOH_0xe822, ricoh_mmc)}, + {SDHCI_PCI_DEVICE(RICOH, RICOH_0xe823, ricoh_mmc)}, + {SDHCI_PCI_DEVICE(ENE, ENE_CB712_SD, ene_712)}, + {SDHCI_PCI_DEVICE(ENE, ENE_CB712_SD_2, ene_712)}, + {SDHCI_PCI_DEVICE(ENE, ENE_CB714_SD, ene_714)}, + {SDHCI_PCI_DEVICE(ENE, ENE_CB714_SD_2, ene_714)}, + {SDHCI_PCI_DEVICE(MARVELL, MARVELL_88ALP01_SD, cafe)}, + {SDHCI_PCI_DEVICE(JMICRON, JMICRON_JMB38X_SD, jmicron)}, + {SDHCI_PCI_DEVICE(JMICRON, JMICRON_JMB38X_MMC, jmicron)}, + {SDHCI_PCI_DEVICE(JMICRON, JMICRON_JMB388_SD, jmicron)}, + {SDHCI_PCI_DEVICE(JMICRON, JMICRON_JMB388_ESD, jmicron)}, + {SDHCI_PCI_DEVICE(SYSKONNECT, SYSKONNECT_0x8000, syskt)}, + {SDHCI_PCI_DEVICE(VIA, VIA_0x95d0, via)}, + {SDHCI_PCI_DEVICE(REALTEK, REALTEK_0x5250, rtsx)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_QRK_SD, intel_qrk)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MRST_SD0, intel_mrst_hc0)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MRST_SD1, intel_mrst_hc1_hc2)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MRST_SD2, intel_mrst_hc1_hc2)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_SD, intel_mfd_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_SDIO1, intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_SDIO2, intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_EMMC0, intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_EMMC1, intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_PCH_SDIO0, intel_pch_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_PCH_SDIO1, intel_pch_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BYT_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE_SUB(INTEL, INTEL_BYT_SDIO, NI, INTEL_SUB_0x7884, + ni_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BYT_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BYT_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BYT_EMMC2, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BSW_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BSW_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BSW_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_SDIO0, intel_mfd_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_SDIO1, intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_SDIO2, intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_EMMC0, intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_EMMC1, intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MRFLD_MMC, intel_mrfld_mmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_SPT_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_SPT_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_SPT_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_DNV_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXT_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXT_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXT_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXTM_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXTM_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXTM_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_APL_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_APL_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_APL_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_GLK_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_GLK_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_GLK_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(O2, O2_8120, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_8220, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_8221, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_8320, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_8321, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_FUJIN2, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_SDS0, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_SDS1, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_SEABIRD0, o2)}, + {SDHCI_PCI_DEVICE(O2, 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 36f7434..b3485cc 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,45 @@ #define PCI_DEVICE_ID_INTEL_GLK_EMMC 0x31cc #define PCI_DEVICE_ID_INTEL_GLK_SDIO 0x31d0 +#define PCI_DEVICE_ID_RICOH_0x843 0x843 +#define PCI_DEVICE_ID_RICOH_0xe822 0xe822 +#define PCI_DEVICE_ID_RICOH_0xe823 0xe823 +#define PCI_DEVICE_ID_SYSKONNECT_0x8000 0x8000 +#define PCI_DEVICE_ID_VIA_0x95d0 0x95d0 +#define PCI_DEVICE_ID_REALTEK_0x5250 0x5250 + +#define PCI_DEVICE_ID_INTEL_SUB_0x7884 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(dev) PCI_DEVICE_ID_##dev + +#define SDHCI_PCI_DEVICE(vend, dev, cfg) \ + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(dev), \ + .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \ + .driver_data = (kernel_ulong_t)&(sdhci_##cfg) + +#define SDHCI_PCI_DEVICE_SUB(vend, dev, subvend, subdev, cfg) \ + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(dev), \ + .subvendor = _PCI_VEND(subvend), .subdevice = _PCI_DEV(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 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition 2017-05-04 18:55 ` Matthias Kraemer @ 2017-05-05 6:09 ` Adrian Hunter 0 siblings, 0 replies; 15+ messages in thread From: Adrian Hunter @ 2017-05-05 6:09 UTC (permalink / raw) To: Matthias Kraemer, ulf.hansson, linux-mmc On 04/05/17 21:55, Matthias Kraemer wrote: > This patch applies the PCI_DEVICE_ macros to specify the pci_ids instead > of open-coding them within the sdhci-pci driver. > > v2,v3: > Suggested-by Adrian Hunter <adrian.hunter@intel.com> > Instead of using the generic PCI_ marcos, introduce device specific macros > to be able to shorten the table entries even further. > > v4: > Fix compile-time issue Thanks, it looks better, although I still have some concerns - see below. > > Signed-off-by: Matthias Kraemer <matthiasmartinsson@gmail.com> > --- > drivers/mmc/host/sdhci-pci-core.c | 619 +++++--------------------------------- > drivers/mmc/host/sdhci-pci.h | 41 ++- > 2 files changed, 111 insertions(+), 549 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c > index 86560d5..d2b6115 100644 > --- a/drivers/mmc/host/sdhci-pci-core.c > +++ b/drivers/mmc/host/sdhci-pci-core.c > @@ -992,554 +992,77 @@ 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, > - }, > - <SNIP> > - { > - .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, RICOH_R5C822, ricoh)}, > + {SDHCI_PCI_DEVICE(RICOH, RICOH_0x843, ricoh_mmc)}, <SNIP> > + {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 36f7434..b3485cc 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,45 @@ > #define PCI_DEVICE_ID_INTEL_GLK_EMMC 0x31cc > #define PCI_DEVICE_ID_INTEL_GLK_SDIO 0x31d0 > > +#define PCI_DEVICE_ID_RICOH_0x843 0x843 > +#define PCI_DEVICE_ID_RICOH_0xe822 0xe822 > +#define PCI_DEVICE_ID_RICOH_0xe823 0xe823 > +#define PCI_DEVICE_ID_SYSKONNECT_0x8000 0x8000 > +#define PCI_DEVICE_ID_VIA_0x95d0 0x95d0 > +#define PCI_DEVICE_ID_REALTEK_0x5250 0x5250 > + > +#define PCI_DEVICE_ID_INTEL_SUB_0x7884 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(dev) PCI_DEVICE_ID_##dev Without exception, the device is prefixed by the vendor, so this should be: #define _PCI_DEV(vend, dev) PCI_DEVICE_ID_##vend##_##dev > + > +#define SDHCI_PCI_DEVICE(vend, dev, cfg) \ > + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(dev), \ > + .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \ > + .driver_data = (kernel_ulong_t)&(sdhci_##cfg) Still don't understand why you don't put the {} brackets into the macro? > + > +#define SDHCI_PCI_DEVICE_SUB(vend, dev, subvend, subdev, cfg) \ > + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(dev), \ > + .subvendor = _PCI_VEND(subvend), .subdevice = _PCI_DEV(subdev), \ > + .driver_data = (kernel_ulong_t)&(sdhci_##cfg) > + Still don't understand why you don't put the {} brackets into the macro? > +#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) Still don't understand why you don't put the {} brackets into the macro? > + > /* > * PCI registers > */ > ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition @ 2017-05-04 18:43 Matthias Kraemer 2017-05-04 18:43 ` Matthias Kraemer 0 siblings, 1 reply; 15+ messages in thread From: Matthias Kraemer @ 2017-05-04 18:43 UTC (permalink / raw) To: adrian.hunter, ulf.hansson, linux-mmc Hello everybody, I am re-sending this after incorporating Adrian's review comments. Kind Regards Matthias ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition 2017-05-04 18:43 Matthias Kraemer @ 2017-05-04 18:43 ` Matthias Kraemer 0 siblings, 0 replies; 15+ messages in thread From: Matthias Kraemer @ 2017-05-04 18:43 UTC (permalink / raw) To: adrian.hunter, ulf.hansson, linux-mmc; +Cc: Matthias Kraemer This patch applies the PCI_DEVICE_ macros to specify the pci_ids instead of open-coding them within the sdhci-pci driver. v2,v3: Suggested-by Adrian Hunter <adrian.hunter@intel.com> Instead of using the generic PCI_ marcos, introduce device specific macros to be able to shorten the table entries even further. Signed-off-by: Matthias Kraemer <matthiasmartinsson@gmail.com> --- drivers/mmc/host/sdhci-pci-core.c | 619 +++++--------------------------------- drivers/mmc/host/sdhci-pci.h | 41 ++- 2 files changed, 111 insertions(+), 549 deletions(-) diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index 86560d5..d2b6115 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -992,554 +992,77 @@ 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, RICOH_R5C822, ricoh)}, + {SDHCI_PCI_DEVICE(RICOH, RICOH_0x843, ricoh_mmc)}, + {SDHCI_PCI_DEVICE(RICOH, RICOH_0xe822, ricoh_mmc)}, + {SDHCI_PCI_DEVICE(RICOH, RICOH_0xe823, ricoh_mmc)}, + {SDHCI_PCI_DEVICE(ENE, ENE_CB712_SD, ene_712)}, + {SDHCI_PCI_DEVICE(ENE, ENE_CB712_SD_2, ene_712)}, + {SDHCI_PCI_DEVICE(ENE, ENE_CB714_SD, ene_714)}, + {SDHCI_PCI_DEVICE(ENE, ENE_CB714_SD_2, ene_714)}, + {SDHCI_PCI_DEVICE(MARVELL, MARVELL_88ALP01_SD, cafe)}, + {SDHCI_PCI_DEVICE(JMICRON, JMICRON_JMB38X_SD, jmicron)}, + {SDHCI_PCI_DEVICE(JMICRON, JMICRON_JMB38X_MMC, jmicron)}, + {SDHCI_PCI_DEVICE(JMICRON, JMICRON_JMB388_SD, jmicron)}, + {SDHCI_PCI_DEVICE(JMICRON, JMICRON_JMB388_ESD, jmicron)}, + {SDHCI_PCI_DEVICE(SYSKONNECT, SYSKONNECT_0x8000, syskt)}, + {SDHCI_PCI_DEVICE(VIA, VIA_0x95d0, via)}, + {SDHCI_PCI_DEVICE(REALTEK, REALTEK_0x5250, rtsx)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_QRK_SD, intel_qrk)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MRST_SD0, intel_mrst_hc0)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MRST_SD1, intel_mrst_hc1_hc2)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MRST_SD2, intel_mrst_hc1_hc2)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_SD, intel_mfd_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_SDIO1, intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_SDIO2, intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_EMMC0, intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MFD_EMMC1, intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_PCH_SDIO0, intel_pch_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_PCH_SDIO1, intel_pch_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BYT_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE_SUB(INTEL, INTEL_BYT_SDIO, NI, INTEL_SUB_0x7884, + ni_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BYT_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BYT_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BYT_EMMC2, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BSW_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BSW_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BSW_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_SDIO0, intel_mfd_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_SDIO1, intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_SDIO2, intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_EMMC0, intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_CLV_EMMC1, intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_MRFLD_MMC, intel_mrfld_mmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_SPT_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_SPT_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_SPT_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_DNV_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXT_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXT_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXT_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXTM_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXTM_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_BXTM_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_APL_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_APL_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_APL_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_GLK_EMMC, intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_GLK_SDIO, intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(INTEL, INTEL_GLK_SD, intel_byt_sd)}, + {SDHCI_PCI_DEVICE(O2, O2_8120, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_8220, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_8221, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_8320, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_8321, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_FUJIN2, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_SDS0, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_SDS1, o2)}, + {SDHCI_PCI_DEVICE(O2, O2_SEABIRD0, o2)}, + {SDHCI_PCI_DEVICE(O2, 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 36f7434..7f56f81 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,45 @@ #define PCI_DEVICE_ID_INTEL_GLK_EMMC 0x31cc #define PCI_DEVICE_ID_INTEL_GLK_SDIO 0x31d0 +#define PCI_DEVICE_ID_RICOH_0x843 0x843 +#define PCI_DEVICE_ID_RICOH_0xe822 0xe822 +#define PCI_DEVICE_ID_RICOH_0xe823 0xe823 +#define PCI_DEVICE_ID_SYSKONNECT_0x8000 0x8000 +#define PCI_DEVICE_ID_VIA_0x95d0 0x95d0 +#define PCI_DEVICE_ID_REALTEK_0x5250 0x5250 + +#define PCI_DEVICE_ID_INTEL_SUB_0x7884 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(dev) PCI_DEVICE_ID_##dev + +#define SDHCI_PCI_DEVICE(vend, dev, cfg) \ + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(dev), \ + .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \ + .driver_data = (kernel_ulong_t)&(sdhci_##cfg) + +#define SDHCI_PCI_DEVICE_SUB(vend, dev, subvend, subdev, cfg) \ + .vendor = _PCI_VEND(vend), .device = _PCI_DEV(dev), \ + .subvendor = _PCI_VEND(subvend), .subdevice = _PCI_DEV(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 ^ permalink raw reply related [flat|nested] 15+ messages in thread
[parent not found: <1491417893-16095-1-git-send-email-matthiasmartinsson@gmail.com>]
[parent not found: <1491417893-16095-2-git-send-email-matthiasmartinsson@gmail.com>]
* Re: [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition [not found] ` <1491417893-16095-2-git-send-email-matthiasmartinsson@gmail.com> @ 2017-04-13 8:52 ` Adrian Hunter 0 siblings, 0 replies; 15+ messages in thread From: Adrian Hunter @ 2017-04-13 8:52 UTC (permalink / raw) To: Matthias Kraemer, ulf.hansson; +Cc: linux-mmc On 05/04/17 21:44, Matthias Kraemer wrote: > This patch applies the PCI_DEVICE_ macros to specify the pci_ids instead > of open-coding them within the sdhci-pci driver. > > v2: > Suggested-by Adrian Hunter <adrian.hunter@intel.com> > Instead of using the generic PCI_ marcos, introduce device specific macros > to be able to shorten the table entries even further. > > Signed-off-by: Matthias Kraemer <matthiasmartinsson@gmail.com> > --- > drivers/mmc/host/sdhci-pci-core.c | 673 +++++++------------------------------- > drivers/mmc/host/sdhci-pci.h | 14 + > 2 files changed, 139 insertions(+), 548 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c > index 86560d5..b5292b0 100644 > --- a/drivers/mmc/host/sdhci-pci-core.c > +++ b/drivers/mmc/host/sdhci-pci-core.c > @@ -992,554 +992,131 @@ 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, > - }, > - <SNIP> > + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C822, > + sdhci_ricoh)}, > + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_RICOH, 0x843, sdhci_ricoh_mmc)}, There are still duplicate PCI_VENDOR_ID_... and PCI_DEVICE_ID_... and sdhci_... and {}. I would just expect to see: SDHCI_PCI_DEV(RICOH, RICOH_R5C822, ricoh), SDHCI_PCI_DEV(RICOH, 0x843, ricoh_mmc), Where there are numbers with no define, just define them: #define PCI_DEVICE_ID_0x843 0x843 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition @ 2017-04-12 20:37 Matthias Kraemer 2017-04-12 20:37 ` Matthias Kraemer 0 siblings, 1 reply; 15+ messages in thread From: Matthias Kraemer @ 2017-04-12 20:37 UTC (permalink / raw) To: linux-mmc This patch device specific macros to define the pci_ids table within the sdhci driver instead of just open-code them. ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH] mmc: sdhci-pci: Use macros in pci_ids definition 2017-04-12 20:37 Matthias Kraemer @ 2017-04-12 20:37 ` Matthias Kraemer 0 siblings, 0 replies; 15+ messages in thread From: Matthias Kraemer @ 2017-04-12 20:37 UTC (permalink / raw) To: linux-mmc; +Cc: Matthias Kraemer This patch applies the PCI_DEVICE_ macros to specify the pci_ids instead of open-coding them within the sdhci-pci driver. v2: Suggested-by Adrian Hunter <adrian.hunter@intel.com> Instead of using the generic PCI_ marcos, introduce device specific macros to be able to shorten the table entries even further. Signed-off-by: Matthias Kraemer <matthiasmartinsson@gmail.com> --- drivers/mmc/host/sdhci-pci-core.c | 673 +++++++------------------------------- drivers/mmc/host/sdhci-pci.h | 14 + 2 files changed, 139 insertions(+), 548 deletions(-) diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index 86560d5..b5292b0 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -992,554 +992,131 @@ 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(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C822, + sdhci_ricoh)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_RICOH, 0x843, sdhci_ricoh_mmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_RICOH, 0xe822, sdhci_ricoh_mmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_RICOH, 0xe823, sdhci_ricoh_mmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_CB712_SD, + sdhci_ene_712)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_CB712_SD_2, + sdhci_ene_712)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_CB714_SD, + sdhci_ene_714)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_CB714_SD_2, + sdhci_ene_714)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_MARVELL, + PCI_DEVICE_ID_MARVELL_88ALP01_SD, sdhci_cafe)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_JMICRON, + PCI_DEVICE_ID_JMICRON_JMB38X_SD, sdhci_jmicron)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_JMICRON, + PCI_DEVICE_ID_JMICRON_JMB38X_MMC, sdhci_jmicron)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_JMICRON, + PCI_DEVICE_ID_JMICRON_JMB388_SD, sdhci_jmicron)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_JMICRON, + PCI_DEVICE_ID_JMICRON_JMB388_ESD, sdhci_jmicron)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x8000, sdhci_syskt)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_VIA, 0x95d0, sdhci_via)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x5250, sdhci_rtsx)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_QRK_SD, + sdhci_intel_qrk)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MRST_SD0, + sdhci_intel_mrst_hc0)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MRST_SD1, + sdhci_intel_mrst_hc1_hc2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MRST_SD2, + sdhci_intel_mrst_hc1_hc2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MFD_SD, + sdhci_intel_mfd_sd)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MFD_SDIO1, + sdhci_intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MFD_SDIO2, + sdhci_intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MFD_EMMC0, + sdhci_intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MFD_EMMC1, + sdhci_intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PCH_SDIO0, + sdhci_intel_pch_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PCH_SDIO1, + sdhci_intel_pch_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT_EMMC, + sdhci_intel_byt_emmc)}, + {SDHCI_PCI_DEVICE_SUB(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT_SDIO, + PCI_VENDOR_ID_NI, 0x7884, sdhci_ni_byt_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT_SDIO, + sdhci_intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT_SD, + sdhci_intel_byt_sd)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT_EMMC2, + sdhci_intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BSW_EMMC, + sdhci_intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BSW_SDIO, + sdhci_intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BSW_SD, + sdhci_intel_byt_sd)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CLV_SDIO0, + sdhci_intel_mfd_sd)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CLV_SDIO1, + sdhci_intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CLV_SDIO2, + sdhci_intel_mfd_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CLV_EMMC0, + sdhci_intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CLV_EMMC1, + sdhci_intel_mfd_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MRFLD_MMC, + sdhci_intel_mrfld_mmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SPT_EMMC, + sdhci_intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SPT_SDIO, + sdhci_intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SPT_SD, + sdhci_intel_byt_sd)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DNV_EMMC, + sdhci_intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BXT_EMMC, + sdhci_intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BXT_SDIO, + sdhci_intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BXT_SD, + sdhci_intel_byt_sd)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BXTM_EMMC, + sdhci_intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BXTM_SDIO, + sdhci_intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BXTM_SD, + sdhci_intel_byt_sd)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_APL_EMMC, + sdhci_intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_APL_SDIO, + sdhci_intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_APL_SD, + sdhci_intel_byt_sd)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_GLK_EMMC, + sdhci_intel_byt_emmc)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_GLK_SDIO, + sdhci_intel_byt_sdio)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_GLK_SD, + sdhci_intel_byt_sd)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_8120, sdhci_o2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_8220, sdhci_o2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_8221, sdhci_o2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_8320, sdhci_o2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_8321, sdhci_o2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_FUJIN2, sdhci_o2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_SDS0, sdhci_o2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_SDS1, sdhci_o2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_SEABIRD0, + sdhci_o2)}, + {SDHCI_PCI_DEVICE(PCI_VENDOR_ID_O2, PCI_DEVICE_ID_O2_SEABIRD1, + sdhci_o2)}, + {SDHCI_PCI_DEVICE_CLASS(PCI_VENDOR_ID_AMD, PCI_ANY_ID, + PCI_CLASS_SYSTEM_SDHCI << 8, 0xFFFF00, + sdhci_amd)}, + /* Generic SD host controller */ + {PCI_DEVICE_CLASS((PCI_CLASS_SYSTEM_SDHCI << 8), 0xFFFF00)}, { /* end: all zeroes */ }, }; diff --git a/drivers/mmc/host/sdhci-pci.h b/drivers/mmc/host/sdhci-pci.h index 36f7434..57a62b5 100644 --- a/drivers/mmc/host/sdhci-pci.h +++ b/drivers/mmc/host/sdhci-pci.h @@ -52,6 +52,20 @@ #define MAX_SLOTS 8 +#define SDHCI_PCI_DEVICE(vend, dev, cfg) \ + .vendor = (vend), .device = (dev), \ + .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \ + .driver_data = (kernel_ulong_t)&(cfg) + +#define SDHCI_PCI_DEVICE_SUB(vend, dev, subvend, subdev, cfg) \ + .vendor = (vend), .device = (dev), \ + .subvendor = (subvend), .subdevice = (subdev), \ + .driver_data = (kernel_ulong_t)&(cfg) + +#define SDHCI_PCI_DEVICE_CLASS(vend, dev, cl, cl_msk, cfg) \ + SDHCI_PCI_DEVICE(vend, dev, cfg), \ + .class = (cl), .class_mask = (cl_msk) + struct sdhci_pci_chip; struct sdhci_pci_slot; -- 2.7.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
end of thread, other threads:[~2017-05-30 9:55 UTC | newest] Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-05-15 21:44 [PATCH V6] mmc: sdhci-pci: Use macros in pci_ids definition Matthias Kraemer 2017-05-15 21:44 ` [PATCH] " Matthias Kraemer 2017-05-30 9:09 ` Adrian Hunter 2017-05-30 9:55 ` Ulf Hansson -- strict thread matches above, loose matches on Subject: below -- 2017-05-07 7:15 Matthias Kraemer 2017-05-07 7:15 ` Matthias Kraemer 2017-05-08 7:23 ` Adrian Hunter 2017-05-04 18:55 Matthias Kraemer 2017-05-04 18:55 ` Matthias Kraemer 2017-05-05 6:09 ` Adrian Hunter 2017-05-04 18:43 Matthias Kraemer 2017-05-04 18:43 ` Matthias Kraemer [not found] <1491417893-16095-1-git-send-email-matthiasmartinsson@gmail.com> [not found] ` <1491417893-16095-2-git-send-email-matthiasmartinsson@gmail.com> 2017-04-13 8:52 ` Adrian Hunter 2017-04-12 20:37 Matthias Kraemer 2017-04-12 20:37 ` Matthias Kraemer
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.