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.

WL1837MODCOM8I linux error

Guru 10570 points
Other Parts Discussed in Thread: WL1837MODCOM8I, WL18XXCOM82SDMMC


Hi, I am using WL1837MODCOM8I with Atmel SAMA5D35-EK board.
Atmel is operating on Linux.

Right now we are trying to bring-up the standard WL1837MODCOM8I with the WL18xxCOM82SDMMC on the Atmel SAMA5D35EK board with the Linux 4.1.13 kernel.
I've managed to load the wilink driver (latest from TI git repository) with latest firmware and it even is able to scan networks, connect to access point and ping google.com.
The problem is that once there is a pause after loading firmware into the module, driver first prints:
-----------------------------
wlcore: ERROR SW watchdog interrupt received! starting recovery.
-----------------------------
then several:
-----------------------------
ERROR sdio read failed (-110)
-----------------------------
and after that module does not respond until powered off an on again.

I suspect that there is some SDIO-related problem in Atmels' driver for MMC, namely reaction on SDIO IRQ -- TI's MMC drivers seems to do much more with it. Could you please suggest there to look first?

Best regards, RY

  • Hi,

    Yes, I think you are right. The starting point would be to check the MMC driver.
    -110 indicates "Connection timed out" - no response from the module.

    Btw, can you paste the full logs?

    Regards,
    Gigi Joseph.
  • Hi, Gigi.

    Thanks for your reply!

    Sure, the message log is attached.
    I've put some debug printing into MMC suspend/resume and MMC power on/off events of atmel mmc driver.
    Also, the fixed-regulator for wl_en pin is made vocal... I had to rewire wl_en on the module to get access to pin 6 of U10.

    Please let me know, if you need any other info.

    Best regards, RY

    SAMA5D35EK_log.txt

  • Hello.

    I've put debug printk into wlcore_irq, It gives additional info on wlcore behavior:

    ------------------------------------------
    # [  131.780000] wlcore_irq
    [  131.780000] wlcore_irq
    [  131.890000] wlcore_irq
    [  131.890000] wlcore_irq
    [  132.080000] wlcore_irq
    [  132.080000] wlcore: ERROR SW watchdog interrupt received! starting recovery.
    [  132.090000] ------------[ cut here ]------------
    [  132.100000] WARNING: CPU: 0 PID: 690 at drivers/net/wireless/ti/wlcore/main.c:802 wl12xx_queue_recovery_work.part.10+0x64/0x68()
    [  132.110000] Modules linked in:
    [  132.110000] CPU: 0 PID: 690 Comm: irq/47-wl18xx Not tainted 4.1.13-rt15+ #48
    [  132.120000] Hardware name: Atmel SAMA5
    [  132.120000] [<c00156f0>] (unwind_backtrace) from [<c0012f5c>] (show_stack+0x10/0x14)
    [  132.130000] [<c0012f5c>] (show_stack) from [<c001e090>] (warn_slowpath_common+0x80/0xac)
    [  132.140000] [<c001e090>] (warn_slowpath_common) from [<c001e158>] (warn_slowpath_null+0x1c/0x24)
    [  132.150000] [<c001e158>] (warn_slowpath_null) from [<c02af804>] (wl12xx_queue_recovery_work.part.10+0x64/0x68)
    [  132.160000] [<c02af804>] (wl12xx_queue_recovery_work.part.10) from [<c02afb28>] (wlcore_irq+0x1a8/0x1b0)
    [  132.170000] [<c02afb28>] (wlcore_irq) from [<c004f438>] (irq_thread_fn+0x1c/0x54)
    [  132.170000] [<c004f438>] (irq_thread_fn) from [<c004f66c>] (irq_thread+0xf0/0x1d4)
    [  132.180000] [<c004f66c>] (irq_thread) from [<c00359c4>] (kthread+0xc4/0xdc)
    [  132.190000] [<c00359c4>] (kthread) from [<c0010208>] (ret_from_fork+0x14/0x2c)
    [  132.190000] ---[ end trace 0000000000000002 ]---
    [  132.200000] wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.48
    [  132.210000] wlcore: pc: 0x148e, hint_sts: 0x00000000 count: 1
    [  132.220000] wlcore: down
    [  132.220000] MMC_POWER_OFF
    [  132.220000] gpiod_set_value(wlan-en-regulator) = 0
    [  132.230000] ieee80211 phy0: Hardware restart was requested
    [  132.270000] MMC_POWER_ON
    [  132.270000] gpiod_set_value(wlan-en-regulator) = 1
    [  132.400000] mmc_sdio_get_max_clock was 50000000
    [  132.410000] limit max_dtr to 4MHz
    [  132.960000] wlcore: PHY firmware version: Rev 8.2.0.0.232
    [  132.970000] wlcore_irq
    [  133.180000] wlcore: firmware booted (Rev 8.9.0.0.48)
    [  133.220000] wlcore_irq
    --------------------------------------------------
    

    Best regards, RY

  • Hi,
    Thanks for your strong support.
    Please let me know, If you need more information.

    It's really appreciate you update current status.
    Best regards, RY