On Wednesday 14 October 2020 14:43:34 CEST Pali Rohár wrote: > On Wednesday 14 October 2020 13:52:15 Jérôme Pouiller wrote: > > On Tuesday 13 October 2020 22:11:56 CEST Pali Rohár wrote: > > > On Monday 12 October 2020 12:46:32 Jerome Pouiller wrote: > > > > +#define SDIO_VENDOR_ID_SILABS 0x0000 > > > > +#define SDIO_DEVICE_ID_SILABS_WF200 0x1000 > > > > +static const struct sdio_device_id wfx_sdio_ids[] = { > > > > + { SDIO_DEVICE(SDIO_VENDOR_ID_SILABS, SDIO_DEVICE_ID_SILABS_WF200) }, > > > > > > Please move ids into common include file include/linux/mmc/sdio_ids.h > > > where are all SDIO ids. Now all drivers have ids defined in that file. > > > > > > > + // FIXME: ignore VID/PID and only rely on device tree > > > > + // { SDIO_DEVICE(SDIO_ANY_ID, SDIO_ANY_ID) }, > > > > > > What is the reason for ignoring vendor and device ids? > > > > The device has a particularity, its VID/PID is 0000:1000 (as you can see > > above). This value is weird. The risk of collision with another device is > > high. > > Those ids looks strange. You are from Silabs, can you check internally > in Silabs if ids are really correct? And which sdio vendor id you in > Silabs got assigned for your products? I confirm these ids are the ones burned in the WF200. We have to deal with that :( . > I know that sdio devices with multiple functions may have different sdio > vendor/device id particular function and in common CIS (function 0). > > Could not be a problem that on one place is vendor/device id correct and > on other place is that strange value? > > I have sent following patch (now part of upstream kernel) which exports > these ids to userspace: > https://lore.kernel.org/linux-mmc/20200527110858.17504-2-pali@xxxxxxxxxx/T/#u > > Also for debugging ids and information about sdio cards, I sent another > patch which export additional data: > https://lore.kernel.org/linux-mmc/20200727133837.19086-1-pali@xxxxxxxxxx/T/#u > > Could you try them and look at /sys/class/mmc_host/ attribute outputs? Here is: # cd /sys/class/mmc_host/ && grep -r . mmc1/ mmc1/power/runtime_suspended_time:0 grep: mmc1/power/autosuspend_delay_ms: Input/output error mmc1/power/runtime_active_time:0 mmc1/power/control:auto mmc1/power/runtime_status:unsupported mmc1/mmc1:0001/vendor:0x0000 mmc1/mmc1:0001/rca:0x0001 mmc1/mmc1:0001/device:0x1000 mmc1/mmc1:0001/mmc1:0001:1/vendor:0x0000 mmc1/mmc1:0001/mmc1:0001:1/device:0x1000 grep: mmc1/mmc1:0001/mmc1:0001:1/info4: No data available mmc1/mmc1:0001/mmc1:0001:1/power/runtime_suspended_time:0 grep: mmc1/mmc1:0001/mmc1:0001:1/power/autosuspend_delay_ms: Input/output error mmc1/mmc1:0001/mmc1:0001:1/power/runtime_active_time:0 mmc1/mmc1:0001/mmc1:0001:1/power/control:auto mmc1/mmc1:0001/mmc1:0001:1/power/runtime_status:unsupported mmc1/mmc1:0001/mmc1:0001:1/class:0x00 grep: mmc1/mmc1:0001/mmc1:0001:1/info2: No data available mmc1/mmc1:0001/mmc1:0001:1/modalias:sdio:c00v0000d1000 mmc1/mmc1:0001/mmc1:0001:1/revision:0.0 mmc1/mmc1:0001/mmc1:0001:1/uevent:OF_NAME=mmc mmc1/mmc1:0001/mmc1:0001:1/uevent:OF_FULLNAME=/soc/sdhci@7e300000/mmc@1 mmc1/mmc1:0001/mmc1:0001:1/uevent:OF_COMPATIBLE_0=silabs,wfx-sdio mmc1/mmc1:0001/mmc1:0001:1/uevent:OF_COMPATIBLE_N=1 mmc1/mmc1:0001/mmc1:0001:1/uevent:SDIO_CLASS=00 mmc1/mmc1:0001/mmc1:0001:1/uevent:SDIO_ID=0000:1000 mmc1/mmc1:0001/mmc1:0001:1/uevent:SDIO_REVISION=0.0 mmc1/mmc1:0001/mmc1:0001:1/uevent:MODALIAS=sdio:c00v0000d1000 grep: mmc1/mmc1:0001/mmc1:0001:1/info3: No data available grep: mmc1/mmc1:0001/mmc1:0001:1/info1: No data available mmc1/mmc1:0001/ocr:0x00200000 grep: mmc1/mmc1:0001/info4: No data available mmc1/mmc1:0001/power/runtime_suspended_time:0 grep: mmc1/mmc1:0001/power/autosuspend_delay_ms: Input/output error mmc1/mmc1:0001/power/runtime_active_time:0 mmc1/mmc1:0001/power/control:auto mmc1/mmc1:0001/power/runtime_status:unsupported grep: mmc1/mmc1:0001/info2: No data available mmc1/mmc1:0001/type:SDIO mmc1/mmc1:0001/revision:0.0 mmc1/mmc1:0001/uevent:MMC_TYPE=SDIO mmc1/mmc1:0001/uevent:SDIO_ID=0000:1000 mmc1/mmc1:0001/uevent:SDIO_REVISION=0.0 grep: mmc1/mmc1:0001/info3: No data available grep: mmc1/mmc1:0001/info1: No data available -- Jérôme Pouiller