Error initializing wifi module with SDIO and voltage translation
Hello all,
I'm getting following error on our custom board while initializing sdmmc3 as wifi module with SDIO:
~# dmesg | grep -i sdio -B 1
[ 3.410271] mmci-pl18x 48004000.sdmmc: no support for card's volts
[ 3.415001] mmc0: error -22 whilst initialising SDIO card
--
[ 5.298030] mmci-pl18x 48004000.sdmmc: no support for card's volts
[ 5.302938] mmc0: error -22 whilst initialising SDIO card
--
[ 7.140215] mmci-pl18x 48004000.sdmmc: no support for card's volts
[ 7.144982] mmc0: error -22 whilst initialising SDIO card
--
[ 8.930932] mmci-pl18x 48004000.sdmmc: no support for card's volts
[ 8.935676] mmc0: error -22 whilst initialising SDIO cardWifi module is a ST60-2230C (https://www.lairdconnect.com/documentation/datasheet-st60-2230c) with I/O signalling voltage 1V8.
Between STM32MP and ST60 module there are three voltage translators which translate 3V3 (STM32MP) to 1V8 (ST-60). See attached schematics snippet.
This is device tree configuration:
&sdmmc3{
arm,primecell-periphid = <0x10153180>;
pinctrl-names = "default", "opendrain", "sleep";
pinctrl-0 = <&sdmmc3_pins_mx>;
pinctrl-1 = <&sdmmc3_opendrain_pins_mx>;
pinctrl-2 = <&sdmmc3_sleep_pins_mx>;
non-removable;
st,neg-edge;
st,use-ckin;
bus-width = <4>;
vmmc-supply = <&v3v3>;
mmc-pwrseq = <&wifi_pwrseq>;
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
brcmf: bcrmf@1 {
reg = <1>;
compatible = "brcm,bcm4329-fmac";
};
};
wifi_pwrseq: wifi-pwrseq {
compatible = "mmc-pwrseq-simple";
/* reset-gpios = <&gpioe 2 GPIO_ACTIVE_LOW>; */
post-power-on-delay-ms = <100>;
power-off-delay-us = <200000>;
};and pin definition:
sdmmc3_pins_mx: sdmmc3_mx-0 {
pins1 {
pinmux = <STM32_PINMUX('D', 0, AF10)>; /* SDMMC3_CMD */
bias-pull-down;
drive-push-pull;
slew-rate = <1>;
};
pins2 {
pinmux = <STM32_PINMUX('D', 1, AF10)>, /* SDMMC3_D0 */
<STM32_PINMUX('D', 4, AF10)>, /* SDMMC3_D1 */
<STM32_PINMUX('D', 7, AF10)>, /* SDMMC3_D3 */
<STM32_PINMUX('F', 1, AF10)>, /* SDMMC3_CDIR */
<STM32_PINMUX('F', 2, AF10)>, /* SDMMC3_D0DIR */
<STM32_PINMUX('F', 4, AF10)>, /* SDMMC3_D123DIR */
<STM32_PINMUX('F', 5, AF9)>; /* SDMMC3_D2 */
bias-disable;
drive-push-pull;
slew-rate = <1>;
};
pins3 {
pinmux = <STM32_PINMUX('F', 0, AF10)>; /* SDMMC3_CKIN */
bias-disable;
};
pins4 {
pinmux = <STM32_PINMUX('G', 15, AF10)>; /* SDMMC3_CK */
bias-disable;
drive-push-pull;
slew-rate = <3>;
};
};Can I configure STM32MP to use 1V8 I/O signalling? Or any other solutions?
Thanks for help!
Kind regards
Dmn
