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.

WL1837MOD: Unable to probe wlcore/wl18xx driver : mmc0 - Timeout waiting for hardware cmd interrupt

Part Number: WL1837MOD
Other Parts Discussed in Thread: WL18XXCOM82SDMMC, WL1837

Hello,

I'm using a zynq ultrascale+ on xilinx board with Linux-xlnx 4.19.

I've configured my device tree as in this link from ti

Following is my device tree source:

/{
	wlan_en_reg: fixed-regulator-mmc {
        compatible = "regulator-fixed";

        regulator-name = "wlan-en-regulator";
        regulator-min-microvolt = <3300000>;
        regulator-max-microvolt = <3300000>;

        gpio = <&gpio4 0x0 0x0 0x0>;

        startup-delay-us = <700000>;
        enable-active-high;
    };
};

&pinctrl0 {
    sd1_pins_default: pinmux_sd1_pins_default {
        mux {
            groups = "sdio1_0_grp";
            function = "sdio1";
        };

        conf {
            groups = "sdio1_0_grp";
            slew-rate = <0>;
            io-standard = <1>;
            bias-pull-up;
        };
    };

    sd1_pins_sleep: pinmux_sd1_pins_sleep {
        mux {
            groups = "sdio1_0_grp";
            function = "sdio1";
        };

        conf {
            groups = "sdio1_0_grp";
            slew-rate = <0>;
            io-standard = <1>;
            bias-disable;
        };
    };
};

&sdhci1 {
	max-frequency = <50000000>;
    bus-width = <4>;
    status = "okay";

    ti,non-removable;
    ti,needs-special-hs-handling;
    cap-power-off-card;
    keep-power-in-suspend;
vmmc-supply = <&wlan_en_reg>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&sd1_pins_default>; pinctrl-1 = <&sd1_pins_sleep>; #address-cells = <1>; #size-cells = <0>; wlcore@0 { compatible = "ti,wl1837"; reg = <2>; interrupt-parent = <&gpio>; interrupts = <0x7d 0x0>; }; };

When I run linux startup, I can see that WL_EN is driven high but no driver is loaded. Even when I run :

$> modprobe wl18xx && modprobe wlcore && modprobe wlcore_sdio

I can see that drivers are inserted but nothing happended. 

$> lsmod
Module                  Size  Used by
wlcore_sdio            16384  0
wl18xx                126976  0
wlcore                245760  1 wl18xx
uio_pdrv_genirq        16384  

Kernel keep displaying this message :

[  797.210594] mmc0: Timeout waiting for hardware cmd interrupt.
[  797.216255] mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
[  797.222679] mmc0: sdhci: Sys addr:  0x00000000 | Version:  0x00001002
[  797.229102] mmc0: sdhci: Blk size:  0x00000000 | Blk cnt:  0x00000000
[  797.235526] mmc0: sdhci: Argument:  0x00000000 | Trn mode: 0x00000000
[  797.241949] mmc0: sdhci: Present:   0x01ff0001 | Host ctl: 0x00000001
[  797.248373] mmc0: sdhci: Power:     0x00000000 | Blk gap:  0x00000080
[  797.254797] mmc0: sdhci: Wake-up:   0x00000000 | Clock:    0x00004e47
[  797.261221] mmc0: sdhci: Timeout:   0x00000000 | Int stat: 0x00000000
[  797.267645] mmc0: sdhci: Int enab:  0x00ff0003 | Sig enab: 0x00ff0003
[  797.274068] mmc0: sdhci: AC12 err:  0x00000000 | Slot int: 0x00000000
[  797.280493] mmc0: sdhci: Caps:      0x35ecc881 | Caps_1:   0x00002007
[  797.286916] mmc0: sdhci: Cmd:       0x0000371a | Max curr: 0x00000000
[  797.293340] mmc0: sdhci: Resp[0]:   0x00000000 | Resp[1]:  0x00000000
[  797.299764] mmc0: sdhci: Resp[2]:   0x00000000 | Resp[3]:  0x00000000
[  797.306187] mmc0: sdhci: Host ctl2: 0x00000000
[  797.310615] mmc0: sdhci: ADMA Err:  0x00000000 | ADMA Ptr: 0x0000000000000000
[  797.317732] mmc0: sdhci: ============================================

Can you help me debugging that please ?

Thanks

  • I wonder, if you have any SDIO/MMC bus integrity issues. 

    Do, you see a message like below in the boot console logs? If not, probing is failing..

    new high speed SDIO card at address 0001

    Also, try with reducing the SDIO/MMC bus max-frequency to 1MHz and see if it helps..

    Thanks

  • I cannot see any trace related to "new high speed SDIO card at address 0001" in Linux Log.

    But the LED on my WL18xxCOM82SDMMC is activated after linux startup. I think it not at the correct time to be able to probe the sdhci driver as device enabled.

    By the way, I'm using yocto to build my Linux and meta-ti tag ti2018.02-rc4 for WL1837 related recipes.

    I will try to reduce the max-frequency to 1MHz and see.

    Thanks

  • Hi!

    Try to use a power-seq node with fixed-regulator.

    Paweł

  • Hi,

    I've added 

    / {
    
       sdio_pwrseq: sdio-pwrseq {
    	compatible = "mmc-pwrseq-emmc";
    	reset-gpios = <&axi_gpio_4 0x0 0x0 0x0>;
    	post-power-on-delay-ms = <10>;
        };	
    };
    
    &sdhci1 {
        mmc-pwrseq = <&sdio_pwrseq>;
    };

    But nothing has changed. My device is not getting probed successfully.

    Could you help me on what I have to set on the field gpio on this AXI GPIo that ocntain 3 cells.

    ---

    Thanks