2021-08-02 08:09 AM
Hello,
I am having difficulties with the MMC bus and the external SDIO wifi module. We are using the wifi module jody-w263 from U-blox with the OSD32MP1, and the communication with the module works, but it is quite slow. The wifi module is capable of SDR 104 and DDR50 communication speeds, but I add the support to the DTS, the communication is broken and the device returns the -110 while initializing.
How can I add support for higher speeds?
I attach the working dts, dmesg, ios and caps, and relevant schematic.
Any suggestion will be appreciated.
Best regards,
Tomáš.
Solved! Go to Solution.
2021-09-23 12:51 AM
Hello,
thank you for your work on this issue, I was only checking its current state.
Best regards,
Tomáš.
2021-09-23 06:50 AM
We saw 2 issues in the DT:
EMMC:
vmmc-supply = <&v3v3>;
vqmmc-supply = <&vdd>;
mmc-ddr-3_3v;
vdd being at 1,8v, it is not consistant with the others property (at 3,3v).
We don't have the emmc schematics but if the emmc is at 3,3v, the IOs have to be also at 3,3v.
WLAN:
vmmc-supply = <&v3v3>;
vqmmc-supply = <&v1v8_ldo1>;
mmc-pwrseq = <&wifi_pwrseq>;
Current declaration will force the driver to switch between 3,3v and 1,8v. But the IOs are statically supplied at 1,8v. So the driver has nothing to do. the "vqmmc-supply" property shall be removed from the DT.
2021-09-23 06:58 AM
if EMMC IOs are at 1,8v, you will need to replace "mmc-ddr-3_3v" with "mmc-ddr-1_8v"
And
if the EMMC IOS are at 3,3v, you will need to replace "&vdd" with "&v3v3"
2021-09-29 01:34 AM
Hello Bernard,
we have tried to set the regulators and eMMC driver properties correctly (mmc-ddr-1_8v and vqmmc-supply = <&vdd>), but the device did not boot. Because we thought that the vqmmc-supply is important, we ended with the weird configuration, as you correctly pointed out. When I remove the vqmmc-supply, the device boots, and in the /sys/kernel/debug/mmc1/ios is expected output:
root@device:~# cat /sys/kernel/debug/mmc1/ios
clock: 52000000 Hz
actual clock: 49500000 Hz
vdd: 21 (3.3 ~ 3.4 V)
bus mode: 2 (push-pull)
chip select: 0 (don't care)
power mode: 2 (on)
bus width: 3 (8 bits)
timing spec: 8 (mmc DDR52)
signal voltage: 1 (1.80 V)
driver type: 0 (driver type B)
Thanks for this.
Best regards,
Tomáš
2021-09-29 04:59 AM
I see vdd is 3,3v in your trace. Shouldn't it be 1,8v instead ?
2021-09-29 05:00 AM
By the way, do you need further assistance or not ?
2021-09-29 05:23 AM
Yes, with your suggested change we were able only to fix the incorrect signal voltage to eMMC memory. The original issue with WiFi is still present and we are unable to switch to the DDR_50 mode. The current DT configuration looks like this:
&sdmmc3{
pinctrl-names = "default", "opendrain", "sleep";
pinctrl-0 = <&sdmmc3_pins_mx>;
pinctrl-1 = <&sdmmc3_opendrain_pins_mx>;
pinctrl-2 = <&sdmmc3_sleep_pins_mx>;
status = "okay";
/* USER CODE BEGIN sdmmc3 */
arm,primecell-periphid = <0x10153180>;
non-removable;
no-sd;
no-mmc;
st,neg-edge;
bus-width = <4>;
vmmc-supply = <&v3v3>;
vqmmc-supply = <&v1v8_ldo1>;
mmc-pwrseq = <&wifi_pwrseq>;
/* USER CODE END sdmmc3 */
};
If I remove the vqmmc-supply, and add sd-uhs-ddr50, the SDIO device is not initialized with this message: mmc0: error -110 whilst initialising SDIO card.
This message is shown also for cap-sd-highspeed, sd-uhs-sdr50, and sd-uhs-sdr25.
2021-09-29 05:23 AM
No, the main supply is 3v3 but the communication logic (signal voltage) uses the 1v8. I attach the schematic of the eMMC.
2021-09-29 06:33 AM
For wlan:
you have to remove vqmmc-supply and that's all. You don't have to add any sdcard property.
you should have only this:
vmmc-supply = <&v3v3>;
mmc-pwrseq = <&wifi_pwrseq>;
For Emmc:
With this configuration only (you said it fails), could we get the full log ?
vmmc-supply = <&v3v3>;
mmc-ddr-1_8v;
2021-09-29 06:51 AM
Sorry again I did not read rightly. On EMMC all is ok.
Please try WLAN sdmmc3 like described above.