This adds support for SD combo cards to MMC/SD driver stack. SD combo consists of SD memory and SDIO parts in one package. Since the parts have a separate SD command sets, after initialization, they can be treated as independent cards on one bus. Changes are divided into two patches. First is just moving initialization code around so that SD memory part init can be called from SDIO init. Second patch is a proper change enabling SD memory along SDIO. I tried to move as much no-op changes to the first patch so that it's easier to follow the required changes to initialization flow for SDIO cards. This is based on Simplified SDIO spec v.2.00. The init sequence is slightly modified to follow current SD memory init implementation. Command sequences, assuming SD memory and SDIO indeed ignore unknown commands, are the same as before for both parts. Changes from v1: - more no-op changes moved to first patch - eliminated internal abuse of EOPNOTSUPP - fixed a bug in resume path (not tested) - eliminated unnecessary CID memcpy in SD combo init Best Regards, Michał Mirosław Michał Mirosław (2): mmc: split mmc_sd_init_card() mmc: implement SD-combo (IO+mem) support drivers/mmc/core/bus.c | 9 ++ drivers/mmc/core/core.c | 12 ++- drivers/mmc/core/sd.c | 249 +++++++++++++++++++++++++++------------------- drivers/mmc/core/sd.h | 17 +++ drivers/mmc/core/sdio.c | 174 +++++++++++++++++++++++++------- include/linux/mmc/card.h | 1 + 6 files changed, 320 insertions(+), 142 deletions(-) create mode 100644 drivers/mmc/core/sd.h