Message ID | 20200727133837.19086-1-pali@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | mmc: sdio: Export CISTPL_VERS_1 attributes to userspace | expand |
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 >
On Sat, 22 Aug 2020 at 11:41, Pali Rohár <pali@kernel.org> wrote: > > Hello Ulf! I would like to remind you this SDIO patch series. Could you > please look and review it? Yes, thanks for pinging, I will have a look. Kind regards Uffe > > 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 > >
On Mon, 27 Jul 2020 at 15:38, Pali Rohár <pali@kernel.org> 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 > Applied for next, thanks! Kind regards Uffe