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.

Linux/WL1835MOD: No response on SDIO

Part Number: WL1835MOD

Tool/software: Linux

Hi All,

I use WL1835Mod for WIFI function on linux 3.10, currently the sdio_reset returns -110 when the sdio is initializing. I captured the waveform on the sdio bus into the module as below, it seems the command sent from host is correct while the module doesn't give any response. on the hardware, the power is matched with the datasheet , 32KHz clock is running,  boot setting is set for operation mode, and I also triggered a high-low-high sequence on WL_EN before the host initialize the SDIO.  so what else that I missed? any tips would be appreciated.

B.R.

Nus

  • Hi,

    This query has been assigned to a relevant expert. We will get back to you soon.

    Best regards,
    Vihang
  • Hi,

    error -110 is normally related to sdio signal integrity issues. Have you tried limiting the sdio clock to a low frequency (start with 1Mhz and see if it makes a change?

    In addition, did you follow the guide lines with regards to level shifting the sdio bus:

    I suggest you alos probe the lines using an oscilloscope and see if the signals are clean.

    BR,

    Eyal

  • Hi Eyal,

    Thanks for you reply, yes, I followed the level shift guide and use the same shift ic.

    from the waveform I attached in the question, the frequency is less than 1MHz, and the measure points are between WL1835mod and level shifter.

    (sorry I forgot to mark the lines: they are cmd, clk, d0, d1, d2, d3 respectively from up to down. )

    B.R.

    Nus

  • Hi,

    A couple of additional questions:

    1. Are you using the built in drivers in the 3.10 kernel or are you building our official release (R8.7_SP1) with this kernel?
    2. Can you provide full kernel boot log that shows the sdio errors? Want to see at what point it fails.
    3. Did you verify that device tree settings are correct and all sdio pins/wlan_enable pins are muxed out correcly?

    BR,
    Eyal
  • Hi,

    I use the driver in 3.10 kernel mainline instead of TI's official release, my processor is i.MX25. however, I don't think this issue is relevant with driver or dts as I have measured the correct SDIO command on the module input pins, the issue is that the module didn't give response to correct SDIO command (if I'm not wrong on the analysis on the waveform), but not the host can't send correct command.

    B.R.

    Nus

  • I am not really sure about the state of the drivers inside the 3.10 kernel, so moving forward I don't suggest this path, but this is for later...
    Can you provide full kernel boot log that shows the sdio errors? Want to see at what point it fails.

    BR,
    Eyal
  • Hi,

    We didn't pull any other signals except the SDIO bus + WL_IRQ to host, so as I said above, the issue is irrelevant with the driver because the correct SDIO command has been watched on the module input but no response from the module. I'm wondering now is that the module can be reset by triggering a high->low->high sequence on WL_EN? the power on sequence in our system might be different with the datasheet, so I wish a following reset can let the module works properly.

    ps: the log is attached but lacks of information.

    B.R.

    Nus

    5658.log.txt
    insmod sdhci-esdhc-imx.ko
    [   29.873308] mmc0: no vqmmc regulator found
    [   29.877458] mmc0: no vmmc regulator found
    [   29.948447] mmc0: SDHCI controller on sdhci-esdhc-imx25.0 [sdhci-esdhc-imx25.0] using DMA
    [   29.957007] mmc1: no vqmmc regulator found
    [   29.959464] ### sdio reset -110
    [   29.962774] ### mmc_go_idle 0
    [   29.963227] ### mmc_send_if_cond 0
    [   29.963237] ### enter mmc_attach_sdio
    [   29.964971] ### mmc_send_io_op_cond -110 0 100
    [   29.981484] mmc1: no vmmc regulator found
    [   30.048904] mmc1: SDHCI controller on sdhci-esdhc-imx25.1 [sdhci-esdhc-imx25.1] using DMA
    [   30.098766] mmc0: host does not support reading read-only switch. assuming write-enable.
    [   30.111676] mmc0: new high speed SDHC card at address aaaa
    [   30.119491] blk_limits_max_hw_sectors: set to minimum 8
    [   30.128605] mmcblk0: mmc0:aaaa SL16G 14.8 GiB 
    [   30.156562]  mmcblk0: p1
    [   30.170914] ### sdio reset -110
    [   30.180604] ### mmc_go_idle 0
    [   30.196421] ### mmc_send_if_cond -110
    [   30.200453] ### enter mmc_attach_sdio
    [   30.206009] ### mmc_send_io_op_cond -110 0 100
    [   30.249604] ### sdio reset -110
    [   30.256127] ### mmc_go_idle 0
    [   30.259729] ### mmc_send_if_cond -110
    [   30.263426] ### enter mmc_attach_sdio
    [   30.269547] ### mmc_send_io_op_cond -110 0 100
    [   30.309996] ### sdio reset -110
    [   30.316650] ### mmc_go_idle 0
    [   30.320498] ### mmc_send_if_cond -110
    [   30.324193] ### enter mmc_attach_sdio
    [   30.331113] ### mmc_send_io_op_cond -110 0 100
    [   30.381311] ### sdio reset -110
    [   30.388409] ### mmc_go_idle 0
    [   30.392922] ### mmc_send_if_cond -110
    [   30.396620] ### enter mmc_attach_sdio
    [   30.406179] ### mmc_send_io_op_cond -110 0 100

  • wlan_enable is probably low when the host probes the sdio bus hence it will not respond as it is shut down.

    Please follow the power up sequence carefully the way it is described in:

    Pay attention to figure 1 for proper sequence, otherwise it will not work.

    BR,

    Eyal

  • Hi,
    No, WL_EN is high when probing, first, I will set it to low and measure it on the module input, then set it to high and measure it again, at last probe the SDIO by "insmod sdhc...ko"

    B.R.
    Nus
  • Hi,

    The module should be probed automatically by the linux standard sdio driver on kernel boot. I suggest just built the sdhc...ko module into the kernel as well.
    If wlan_enable is not turning on on boot and it is not being probed it would work by manually using insmod.
    Also, pay attention to the startup sequence. You may phisically damage the module if power on/off sequence is not as described in the document above.

    BR,
    Eyal
  • Hi,
    Built in kernel is the first step I tried, however, in that stage I can't control wlan_enable, so I built it as module...
    I think I might need to use a new board to test again, hope it will be OK.

    Thanks a lot
    B.R.
    Nus