CISTPL_VERS_1 structure contains useful information for identification of SDIO cards. It contains revision number according to which standard is SDIO card compliant. And also it contain human readable info strings which should contain manufacturer name or product information, like for old PCMCIA cards. SDIO simplified specification 3.00 just contain reference to PCMCIA metaformat specification for definition of that CISTPL_VERS_1 structure itself. Human readable SDIO card strings can be useful for userspace to do card identification. Until now kernel exported to userspace only vendor and device numbers but these numbers do not help to identify new or unknown cards. I have tested these patches with Marwell 88W8997 SDIO card (WiFi+Bluetooth) and here is content of attributes available in userspace: $ grep . /sys/class/mmc_host/mmc0/mmc0:0001/* /sys/class/mmc_host/mmc0/mmc0:0001/*/* /sys/class/mmc_host/mmc0/mmc0:0001/device:0x9140 /sys/class/mmc_host/mmc0/mmc0:0001/info1:Marvell /sys/class/mmc_host/mmc0/mmc0:0001/info2:Wireless Device ID: 50 /sys/class/mmc_host/mmc0/mmc0:0001/ocr:0x00200000 /sys/class/mmc_host/mmc0/mmc0:0001/rca:0x0001 /sys/class/mmc_host/mmc0/mmc0:0001/revision:1.0 /sys/class/mmc_host/mmc0/mmc0:0001/type:SDIO /sys/class/mmc_host/mmc0/mmc0:0001/uevent:MMC_TYPE=SDIO /sys/class/mmc_host/mmc0/mmc0:0001/uevent:SDIO_ID=02DF:9140 /sys/class/mmc_host/mmc0/mmc0:0001/uevent:SDIO_REVISION=1.0 /sys/class/mmc_host/mmc0/mmc0:0001/uevent:SDIO_INFO1=Marvell /sys/class/mmc_host/mmc0/mmc0:0001/uevent:SDIO_INFO2=Wireless Device ID: 50 /sys/class/mmc_host/mmc0/mmc0:0001/uevent:SDIO_INFO3= /sys/class/mmc_host/mmc0/mmc0:0001/vendor:0x02df /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/class:0x00 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/device:0x9141 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/info1:Marvell WiFi Device /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/modalias:sdio:c00v02DFd9141 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/revision:1.0 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/uevent:DRIVER=mwifiex_sdio /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/uevent:SDIO_CLASS=00 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/uevent:SDIO_ID=02DF:9141 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/uevent:SDIO_REVISION=1.0 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/uevent:SDIO_INFO1=Marvell WiFi Device /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/uevent:SDIO_INFO2= /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/uevent:MODALIAS=sdio:c00v02DFd9141 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:1/vendor:0x02df /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/class:0x00 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/device:0x9142 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/info1:Marvell Bluetooth Device /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/modalias:sdio:c00v02DFd9142 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/revision:1.0 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/uevent:DRIVER=btmrvl_sdio /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/uevent:SDIO_CLASS=00 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/uevent:SDIO_ID=02DF:9142 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/uevent:SDIO_REVISION=1.0 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/uevent:SDIO_INFO1=Marvell Bluetooth Device /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/uevent:SDIO_INFO2= /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/uevent:MODALIAS=sdio:c00v02DFd9142 /sys/class/mmc_host/mmc0/mmc0:0001/mmc0:0001:2/vendor:0x02df /sys/class/mmc_host/mmc0/mmc0:0001/power/control:auto /sys/class/mmc_host/mmc0/mmc0:0001/power/runtime_active_time:0 /sys/class/mmc_host/mmc0/mmc0:0001/power/runtime_status:unsupported /sys/class/mmc_host/mmc0/mmc0:0001/power/runtime_suspended_time:0 /sys/class/mmc_host/mmc0/mmc0:0001/subsystem/drivers_autoprobe:1 As can be seen SDIO card does not provide all 4 info strings as required by SDIO/PCMCIA specificaion and the third and the second strings are empty. Pali Rohár (4): mmc: sdio: Check for CISTPL_VERS_1 buffer size mmc: sdio: Parse CISTPL_VERS_1 major and minor revision numbers mmc: sdio: Extend sdio_config_attr macro and use it also for modalias mmc: sdio: Export SDIO revision and info strings to userspace drivers/mmc/core/bus.c | 12 ++++++++ drivers/mmc/core/sd.c | 36 +++++++++++++++++++++-- drivers/mmc/core/sdio.c | 24 ++++++++++++++++ drivers/mmc/core/sdio_bus.c | 54 ++++++++++++++++++++++++++--------- drivers/mmc/core/sdio_cis.c | 11 +++++++ include/linux/mmc/card.h | 2 ++ include/linux/mmc/sdio_func.h | 2 ++ 7 files changed, 124 insertions(+), 17 deletions(-) -- 2.20.1