This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x not working with WiFi module on MMC3.

I'm trying to interface Murata WiFi / BT module LBEE5ZSTNC-523, with a customized and connected in MMC3 board.
But this not working. I followed all the tutorial:
a)processors.wiki.ti.com/.../WL18xx_Platform_Integration_Guide
b) processors.wiki.ti.com/.../SD_Driver's_Guide

My settings are:

For Device Tree:

48 wlan_en_reg: fixedregulator@2 {
49 compatible = "regulator-fixed";
50 regulator-name = "wlan-en-regulator";
51 regulator-min-microvolt = <1800000>;
52 regulator-max-microvolt = <1800000>;
53
54 /* WLAN_EN GPIO for this board - Bank1, pin29 */
55 gpio = <&gpio1 29 0>;
56
57 /* WLAN card specific delay */
58 startup-delay-us = <70000>;
59 enable-active-high;
60 vin-supply = <&vbat>;
61 };

171 wlcore_sdio {
172 compatible = "wlcore";
173 gpio = <&gpio0>; /* Bank0, pin31 */
174 irq = <31>;
175
176 /*
177 * TODO: use edge irqs for suspend/resume.
178 * in newer kerenls, we seem to miss interrupts when
179 * working with edge irqs, so revert back to level irqs.
180 /
181 /* platform-quirks = <1>; /
182
183 /* if a 12xx card is there, configure the clock to
184 WL12XX_REFCLOCK_38_XTAL /
185 /*board-ref-clock = <4>;*/
186 board-tcxo-clock = <5>;
187 };

171 wlcore_sdio {
172 compatible = "wlcore";
173 gpio = <&gpio0>; /* Bank0, pin31 */
174 irq = <31>;
175
176 /*
177 * TODO: use edge irqs for suspend/resume.
178 * in newer kerenls, we seem to miss interrupts when
179 * working with edge irqs, so revert back to level irqs.
180 /
181 /* platform-quirks = <1>; /
182
183 /* if a 12xx card is there, configure the clock to
184 WL12XX_REFCLOCK_38_XTAL /
185 /*board-ref-clock = <4>;*/
186 board-tcxo-clock = <5>;
187 };

442 /* wl12xx/wl18xx card enable/irq GPIOs. */
443 wlan_pins_default: pinmux_wlan_pins_default {
444 pinctrl-single,pins = <
445 0x7C 0x07 /*(PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_csn0.gpio1_29 */
446 0x74 0x27 /* (PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_wpn.gpio0_31 */
447 0x1AC 0x17 /* mcasp0_ahclkx.gpio3_21, OUTPUT_PULLUP | MODE7 */
448 >;
449 };

706 &mmc3 {
707 /* these are on the crossbar and are outlined in the
708 xbar-event-map element */
709 dmas = <&edma 12
710 &edma 13>;
711 dma-names = "tx", "rx";
712 status = "okay";
713 vmmc-supply = <&wlan_en_reg>;
714 bus-width = <4>;
715 pinctrl-names = "default";
716 pinctrl-0 = <&mmc3_pins_default &wlan_pins_default>;
717 ti,non-removable;
718 ti,needs-special-hs-handling;
719 cap-power-off-card;
720 keep-power-in-suspend;
721
722 #address-cells = <1>;
723 #size-cells = <0>;
724 };
725
726 &edma {
727 ti,edma-xbar-event-map = /bits/ 16 <1 12
728 2 13>;
729 };

When I check the mmc status with dmesg I get this:

# dmesg | grep mmc
[ 1.518765] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@47810000[0]'
[ 1.518788] of_get_named_gpiod_flags: can't parse gpios property of node '/ocp/mmc@47810000[0]'
[ 1.519026] omap_hsmmc 47810000.mmc: context is restored: restore count 1
[ 1.519043] omap_hsmmc 47810000.mmc: enabled
[ 1.520086] mmc0: clock 0Hz busmode 2 powermode 1 cs 0 Vdd 7 width 0 timing 0
[ 1.612189] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
[ 1.632535] mmc0: mmc_rescan_try_freq: trying to init card at 400000 Hz
[ 1.639507] mmc0: starting CMD52 arg 00000c00 flags 00000195
[ 1.639905] mmc0: req done (CMD52): -110: 00000000 00000000 00000000 00000000
[ 1.640011] mmc0: clock 0Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
[ 1.640026] mmc0: gated MCI clock
[ 1.640842] mmc0: starting CMD52 arg 80000c08 flags 00000195
[ 1.640866] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
[ 1.640889] mmc0: ungated MCI clock
[ 1.641267] mmc0: req done (CMD52): -110: 00000000 00000000 00000000 00000000
[ 1.641438] mmc0: clock 0Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
[ 1.641452] mmc0: gated MCI clock
[ 1.641544] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
[ 1.641563] mmc0: ungated MCI clock
[ 1.641576] mmc0: clock 400000Hz busmode 2 powermode 2 cs 1 Vdd 7 width 0 timing 0
[ 1.641629] mmc0: clock 0Hz busmode 2 powermode 2 cs 1 Vdd 7 width 0 timing 0
[ 1.641640] mmc0: gated MCI clock
[ 1.642736] mmc0: starting CMD0 arg 00000000 flags 000000c0
[ 1.642752] mmc0: clock 400000Hz busmode 2 powermode 2 cs 1 Vdd 7 width 0 timing 0
[ 1.642768] mmc0: ungated MCI clock
[ 1.642939] mmc0: req done (CMD0): 0: 00000000 00000000 00000000 00000000
[ 1.643220] mmc0: clock 0Hz busmode 2 powermode 2 cs 1 Vdd 7 width 0 timing 0
[ 1.643234] mmc0: gated MCI clock
[ 1.644319] mmc0: clock 400000Hz busmode 2 powermode 2 cs 1 Vdd 7 width 0 timing 0
[ 1.644338] mmc0: ungated MCI clock
[ 1.644351] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
[ 1.644405] mmc0: clock 0Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
[ 1.644416] mmc0: gated MCI clock
[ 1.645433] mmc0: starting CMD8 arg 000000aa flags 000002f5
[ 1.645448] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 7 width 0 timing 0
[ 1.645462] mmc0: ungated MCI clock
[ 1.645840] mmc0: req done (CMD8): -110: 00000000 00000000 00000000 00000000
[ 1.646074] mmc0: starting CMD5 arg 00000000 flags 000002e1
[ 1.646505] mmc0: req failed (CMD5): -110, retrying...
[ 1.646904] mmc0: req failed (CMD5): -110, retrying...
[ 1.653398] mmc0: req failed (CMD5): -110, retrying...
[ 1.653777] mmc0: req done (CMD5): -110: 00000000 00000000 00000000 00000000
[ 1.653839] mmc0: starting CMD55 arg 00000000 flags 000000f5
[ 1.660135] mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
[ 1.660223] mmc0: starting CMD55 arg 00000000 flags 000000f5
[ 1.660610] mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
[ 1.660678] mmc0: starting CMD55 arg 00000000 flags 000000f5
[ 1.661060] mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
[ 1.661134] mmc0: starting CMD55 arg 00000000 flags 000000f5
[ 1.661520] mmc0: req done (CMD55): -110: 00000000 00000000 00000000 00000000
[ 1.661741] mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 7 width 0 timing 0
[ 1.661774] mmc0: starting CMD1 arg 00000000 flags 000000e1
[ 1.662156] mmc0: req done (CMD1): -110: 00000000 00000000 00000000 00000000
[ 1.668835] mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
[ 1.669904] mmc0: frequency set to 0 in disable function, this means the clock is already disabled.
[ 1.765004] omap_hsmmc 47810000.mmc: disabled
[ 1.906936] vmmc: 1800 <--> 3300 mV at 3300 mV
[ 1.911804] vmmc: supplied by vbat
#

When inserting the modules:

# modprobe wlcore_sdio
# modprobe wl12xx
[ 904.237000] cfg80211: Calling CRDA to update world regulatory domain
#
#
# lsmod
Module Size Used by Not tainted
wl12xx 48468 0
wlcore 148365 1 wl12xx
mac80211 242111 2 wl12xx,wlcore
cfg80211 155930 2 wlcore,mac80211
wlcore_sdio 3404 0
musb_dsps 6460 0
musb_hdrc 50243 1 musb_dsps
snd_soc_evm 5066 0
snd_soc_davinci_mcasp 11865 0
snd_soc_omap 2040 1 snd_soc_davinci_mcasp
snd_pcm_dmaengine 2718 1 snd_soc_omap
musb_am335x 988 0 [permanent]
snd_soc_tlv320aic3x 30759 0
snd_soc_core 101438 4 snd_soc_evm,snd_soc_davinci_mcasp,snd_soc_omap,snd_soc_tlv320aic3x
snd_compress 6764 1 snd_soc_core
regmap_spi 1329 1 snd_soc_core
snd_pcm 66770 5 snd_soc_evm,snd_soc_davinci_mcasp,snd_soc_omap,snd_pcm_dmaengine,snd_soc_core
snd_timer 15794 1 snd_pcm
snd 42728 4 snd_soc_core,snd_compress,snd_pcm,snd_timer
soundcore 4225 1 snd
tilcdc 23963 0
drm_kms_helper 27968 2 tilcdc
drm 190204 3 tilcdc,drm_kms_helper

But nothing interface wlan0:

# ifup wlan0 up
ip: SIOCGIFFLAGS: No such device

Could someone give me a hint? The problem in this MMC3 or some other configuration?

Thanks
Fabio MN

  • Hi Fabio,

    There is no MMC3 in the AM335X processor. MMC0, MMC1 and MMC2 are available.

  • Hello Biser,

    You're right, as I saw in the file am33xx.dtsi mmc3, I put as it was.

    321 mmc3: mmc@47810000 {
    322 compatible = "ti,omap4-hsmmc";
    323 ti,hwmods = "mmc3";
    324 ti,needs-special-reset;
    325 interrupts = <29>;
    326 interrupt-parent = <&intc>;
    327 reg = <0x47810000 0x1000>;
    328 status = "disabled";
    329 };

    Is my configuration is wrong? or is this probema hardware ....

    Thank U
    Fabio

  • Hi Fabio,

    From what you are wrote I understand that you are using sdk7.
    I didn't see definition of mmc3_pins_default. The correct one will be mmc2_pins_default. You have to pin mux there depend your schematics. For example see from <>/linux-3.12.10-ti2013.12.01/arch/arm/boot/dts/am335x-evm.dts. It also depends on the: processors.wiki.ti.com/.../WL18xx_Platform_Integration_Guide. Your link is without device tree.

    BR
    Ivan
  • Hello Iva,

    Very obrigrado for your reply.
    Esquici to put the definition of mmc3_pins_default:

    419 / * wl12xx / wl18xx card on mmc3 * /
    420 mmc3_pins_default: {pinmux_mmc3_pins_default
    421 pinctrl-single, pins = <
    422 0x44 0x33 / * (PIN_INPUT_PULLUP | MUX_MODE3) / * * gpmc_a1.mmc2_dat0 /
    423 0x48 0x33 / * (PIN_INPUT_PULLUP | MUX_MODE3) / * gpmc_a2.mmc2_dat1 * /
    424 0x4c 0x33 / * (PIN_INPUT_PULLUP | MUX_MODE3) / * gpmc_a3.mmc2_dat2 * /
    425 0x78 0x33 / * (PIN_INPUT_PULLUP | MUX_MODE3) / * gpmc_ben1.mmc2_dat3 * /
    426 0x88 0x33 / * (PIN_INPUT_PULLUP | MUX_MODE3) / * gpmc_csn3.mmc2_cmd * /
    427 0x8C 0x33 / * PIN_INPUT_PULLUP | MUX_MODE3) / * * gpmc_clk.mmc2_clk /
    428 ';
    429};

    I ended up calling mmc3 but in the schematics using MMC2 with the following pins:

    GPMC_CLK -> MMC2_WLAN_CLK
    GPMC_CSn3 -> MMC2_WLAN_CMD
    GPMC_BEn1 -> MMC2_WLAN_DAT3
    GPMC_A3 -> MMC2_WLAN_DAT2
    GPMC_A2 -> MMC2_WLAN_DAT1
    GPMC_A1 -> MMC2_WLAN_DAT0


    Thank U.
    Fabio
  • Hi Fabio,

    The line:
    420 mmc3_pins_default: {pinmux_mmc3_pins_default
    421 pinctrl-single, pins = <
    has to be:
    mmc3_pins_default: pinmux_mmc3_pins_default {
    pinctrl-single,pins = <

    BR
    Ivan
  • Hello Iva,

    Many apologies I forgot to remove the part of the pins in the translator that I used to post this message, and it changed that part. But still thank you.

    Fabio