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: wlcore: ERROR firmware boot failed despite 3 retries

Part Number: WL1837MOD
Other Parts Discussed in Thread: WL1271

The issue seems to be due to the ELP mode. The wakeup function(wl1271_ps_elp_wakeup) is causing SDIO write failure which in turn causes the crash.

How to fix this issue? 

Note: The firmware version is 8.9.0.0.79. Driver R8.7-SP3

[92344.921966] WARNING: at /home/wadev/vsdbuild/vsd/tmp/work/esom-poky-linux-gnueabi/ti-wireless-driver-1.0-r0/ti-wireless-driver/drivers/net/wireless/ti/wlcore/sdio.c:146 wl12xx_sdio_raw_write+0xa4/0x128 [wlcore_sdio]()

[92344.942352] Modules linked in: mtdoops(O) xt_limit xt_tcpudp xt_conntrack iptable_filter ip_tables x_tables bq27x00_battery(O) sitronix_i2c_touch wl18xx(O) wlcore(O) mac80211(O) cfg80211(O) wlcore_sdio(O) compat(O) g_mass_storage libcomposite cryptodev(O) gpio_event_drv(O) accelDriver(O)

[92344.969482] [<c00196fc>] (unwind_backtrace+0x0/0xf0) from [<c003aab8>] (warn_slowpath_common+0x4c/0x64)

[92344.979431] [<c003aab8>] (warn_slowpath_common+0x4c/0x64) from [<c003aaec>] (warn_slowpath_null+0x1c/0x24)

[92344.989624] [<c003aaec>] (warn_slowpath_null+0x1c/0x24) from [<bf03f1e8>] (wl12xx_sdio_raw_write+0xa4/0x128 [wlcore_sdio])

[92345.001556] [<bf03f1e8>] (wl12xx_sdio_raw_write+0xa4/0x128 [wlcore_sdio]) from [<bf1eaf40>] (wl1271_ps_elp_wakeup+0x154/0x234 [wlcore])

[92345.014526] [<bf1eaf40>] (wl1271_ps_elp_wakeup+0x154/0x234 [wlcore]) from [<bf1df590>] (wlcore_irq_locked+0x40/0x6fc [wlcore])

[92345.026702] [<bf1df590>] (wlcore_irq_locked+0x40/0x6fc [wlcore]) from [<bf1e1004>] (wlcore_irq+0xf0/0x194 [wlcore])

[92345.037780] [<bf1e1004>] (wlcore_irq+0xf0/0x194 [wlcore]) from [<c008d788>] (irq_thread+0xcc/0x120)

[92345.047363] [<c008d788>] (irq_thread+0xcc/0x120) from [<c005afb0>] (kthread+0xa4/0xb0)

[92345.055755] [<c005afb0>] (kthread+0xa4/0xb0) from [<c0013390>] (ret_from_fork+0x14/0x24)

[92345.064300] ---[ end trace d6242a71d22c87d2 ]---

[92345.069183] wl1271_sdio mmc0:0001:2: sdio write failed (-110)

[92345.075256] ------------[ cut here ]------------

[92345.080200] WARNING: at /home/wadev/vsdbuild/vsd/tmp/work/esom-poky-linux-gnueabi/ti-wireless-driver-1.0-r0/ti-wireless-driver/drivers/net/wireless/ti/wlcore/main.c:807 wl12xx_queue_recovery_work+0x6c/0x78 [wlcore]()

[92345.100433] Modules linked in: mtdoops(O) xt_limit xt_tcpudp xt_conntrack iptable_filter ip_tables x_tables bq27x00_battery(O) sitronix_i2c_touch wl18xx(O) wlcore(O) mac80211(O) cfg80211(O) wlcore_sdio(O) compat(O) g_mass_storage libcomposite cryptodev(O) gpio_event_drv(O) accelDriver(O)

[92345.127593] [<c00196fc>] (unwind_backtrace+0x0/0xf0) from [<c003aab8>] (warn_slowpath_common+0x4c/0x64)

[92345.137512] [<c003aab8>] (warn_slowpath_common+0x4c/0x64) from [<c003aaec>] (warn_slowpath_null+0x1c/0x24)

[92345.147766] [<c003aaec>] (warn_slowpath_null+0x1c/0x24) from [<bf1e0f08>] (wl12xx_queue_recovery_work+0x6c/0x78 [wlcore])

[92345.159454] [<bf1e0f08>] (wl12xx_queue_recovery_work+0x6c/0x78 [wlcore]) from [<bf1eaf00>] (wl1271_ps_elp_wakeup+0x114/0x234 [wlcore])

[92345.172302] [<bf1eaf00>] (wl1271_ps_elp_wakeup+0x114/0x234 [wlcore]) from [<bf1df590>] (wlcore_irq_locked+0x40/0x6fc [wlcore])

[92345.184417] [<bf1df590>] (wlcore_irq_locked+0x40/0x6fc [wlcore]) from [<bf1e1004>] (wlcore_irq+0xf0/0x194 [wlcore])

[92345.195495] [<bf1e1004>] (wlcore_irq+0xf0/0x194 [wlcore]) from [<c008d788>] (irq_thread+0xcc/0x120)

[92345.205078] [<c008d788>] (irq_thread+0xcc/0x120) from [<c005afb0>] (kthread+0xa4/0xb0)

[92345.213470] [<c005afb0>] (kthread+0xa4/0xb0) from [<c0013390>] (ret_from_fork+0x14/0x24)

[92345.222015] ---[ end trace d6242a71d22c87d3 ]---

[92345.486633] wlcore: ERROR firmware boot failed despite 3 retries

  • Hi
    - does wireless wlan0 ever come up ok or do you see this error everytime wlan0 interface is brought up ?
    - can you try reducing SDIO clock in dts file to 5 MHz and re-test. ?

    Saurabh
  • Hi,
    We are using a very old kernel (3.8) and the ref clock values list is given below
    /* Reference clock values */
    enum {
    WL12XX_REFCLOCK_19 = 0, /* 19.2 MHz */
    WL12XX_REFCLOCK_26 = 1, /* 26 MHz */
    WL12XX_REFCLOCK_38 = 2, /* 38.4 MHz */
    WL12XX_REFCLOCK_52 = 3, /* 52 MHz */
    WL12XX_REFCLOCK_38_XTAL = 4, /* 38.4 MHz, XTAL */
    WL12XX_REFCLOCK_26_XTAL = 5, /* 26 MHz, XTAL */
    };

    What value should I pass for 5MHz
  • Hi
    You are referring to Wiink clock . You need to change SDIO clock and re-test. Please check with your kernel team how to change SDIO clock on your kernel .

    Saurabh