Re: [PATCH 0/4] mmc: sdio: Export CISTPL_VERS_1 attributes to userspace

From: Pali Rohár
Date: Sat Aug 22 2020 - 05:41:42 EST


Hello Ulf! I would like to remind you this SDIO patch series. Could you
please look and review it?

On Monday 27 July 2020 15:38:33 Pali Rohár wrote:
> 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
>