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.

wlcore: ERROR ELP wakeup timeout! with WL18xx

Other Parts Discussed in Thread: WL1835, WL1271

Hai all,

I am using WL1835 Module, and integrating with TI-AM335x customized board.

I Compiled the driver with Linux 3.12.30.

When i load the drivers and make interface up once in my board. the firmware is loading.

I am getting Wlan0 interface also, but unable to communicate with Wlan0.

I downloaded firmware from https://github.com/TI-OpenLink/firmwares/tree/master/ti-connectivity .

if i am doing "ifconfig wlan0 down" or "iw wlan0 scan", I am getting the error wlcore: ERROR ELP wakeup timeout! 

Here is the output log 

*****************************************************************************

root@am335x-evm:~# modprobe wlcore
[ 20.899821] cfg80211: Calling CRDA to update world regulatory domain

root@am335x-evm:~# modprobe wlcore_sdio

root@am335x-evm:~# modprobe wl18xx

root@am335x-evm:~#

[ 30.130664] wlcore: wl18xx HW: 183x or 180x, PG 2.2 (ROM 0x11)
[ 30.170199] wlcore: loaded
[ 30.173206] wlcore: driver version: v3.12.30-phy3-1-g8ab5ace-dirty
[ 30.179954] wlcore: compilation time: Wed Aug 5 17:38:10 2015

root@am335x-evm:~# ifconfig wlan0 up
[ 36.672224] wlcore: PHY firmware version: Rev 8.2.0.0.195
[ 36.783978] wlcore: firmware booted (Rev 8.8.0.0.13)
[ 36.804434] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready


root@am335x-evm:~# cat /proc/interrupts | grep wl
175: 0 GPIO 31 wl18xx

root@am335x-evm:~# ifconfig wlan0 down
[ 62.379413] wlcore: ERROR ELP wakeup timeout!
[ 62.384100] ------------[ cut here ]------------
[ 62.389190] WARNING: CPU: 0 PID: 6 at drivers/net/wireless/ti/wlcore/main.c:802 wl12xx_queue_recovery_work+0x68/0x74 [wlcore]()
[ 62.401489] Modules linked in: wl18xx wlcore_sdio wlcore mac80211 cfg80211 ipv6
[ 62.409439] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 3.12.30-00001-g8ab5ace-dirty #5
[ 62.418209] Workqueue: phy0 ieee80211_reconfig_filter [mac80211]
[ 62.424663] Backtrace:
[ 62.427322] [<c00184f8>] (dump_backtrace+0x0/0x10c) from [<c0018694>] (show_stack+0x18/0x1c)
[ 62.436335] r6:bf0e996c r5:00000009 r4:00000000 r3:00000000
[ 62.442476] [<c001867c>] (show_stack+0x0/0x1c) from [<c05fafb4>] (dump_stack+0x80/0x9c)
[ 62.451062] [<c05faf34>] (dump_stack+0x0/0x9c) from [<c004af34>] (warn_slowpath_common+0x70/0x94)
[ 62.460531] r4:00000000 r3:00000000
[ 62.464392] [<c004aec4>] (warn_slowpath_common+0x0/0x94) from [<c004af7c>] (warn_slowpath_null+0x24/0x2c)
[ 62.474597] r8:cdee0d00 r7:ffffa233 r6:c08720c0 r5:cdee0d30 r4:cdee0ce0
[ 62.481931] [<c004af58>] (warn_slowpath_null+0x0/0x2c) from [<bf0e996c>] (wl12xx_queue_recovery_work+0x68/0x74 [wlcore])
[ 62.493699] [<bf0e9904>] (wl12xx_queue_recovery_work+0x0/0x74 [wlcore]) from [<bf0f4380>] (wl1271_ps_elp_wakeup+0x1e0/0x204 [wlcore])
[ 62.506490] r4:cdee0ce0 r3:00000000
[ 62.510517] [<bf0f41a0>] (wl1271_ps_elp_wakeup+0x0/0x204 [wlcore]) from [<bf0e55b0>] (wl1271_op_configure_filter+0x58/0x12c [wlcore])
[ 62.523439] [<bf0e5558>] (wl1271_op_configure_filter+0x0/0x12c [wlcore]) from [<bf092230>] (ieee80211_configure_filter+0x154/0x1b4 [mac80211])
[ 62.537192] [<bf0920dc>] (ieee80211_configure_filter+0x0/0x1b4 [mac80211]) from [<bf0922a4>] (ieee80211_reconfig_filter+0x14/0x18 [mac80211])
[ 62.550720] r8:00000000 r7:cd87e400 r6:cd81f000 r5:cdee045c r4:cd8719c0
[ 62.558014] [<bf092290>] (ieee80211_reconfig_filter+0x0/0x18 [mac80211]) from [<c0060be8>] (process_one_work+0x11c/0x37c)
[ 62.569729] [<c0060acc>] (process_one_work+0x0/0x37c) from [<c0060fc0>] (worker_thread+0x13c/0x3c0)
[ 62.579554] [<c0060e84>] (worker_thread+0x0/0x3c0) from [<c006775c>] (kthread+0xac/0xb8)
[ 62.588196] [<c00676b0>] (kthread+0x0/0xb8) from [<c0014958>] (ret_from_fork+0x14/0x3c)
[ 62.596757] r7:00000000 r6:00000000 r5:c00676b0 r4:cd881d20
[ 62.602877] ---[ end trace 77d2d02c3584e32f ]---
[ 62.609032] wlcore: down
[ 62.612119] wlcore: Hardware recovery in progress. FW ver: Rev 8.8.0.0.13
[ 62.619463] ------------[ cut here ]------------
[ 62.624518] WARNING: CPU: 0 PID: 12 at drivers/net/wireless/ti/wlcore/io.h:65 wlcore_set_partition+0xa0/0x444 [wlcore]()
[ 62.636126] Modules linked in: wl18xx wlcore_sdio wlcore mac80211 cfg80211 ipv6
[ 62.644070] CPU: 0 PID: 12 Comm: kworker/u2:1 Tainted: G W 3.12.30-00001-g8ab5ace-dirty #5
[ 62.653900] Workqueue: phy0 wl1271_recovery_work [wlcore]
[ 62.659706] Backtrace:
[ 62.662360] [<c00184f8>] (dump_backtrace+0x0/0x10c) from [<c0018694>] (show_stack+0x18/0x1c)
[ 62.671381] r6:bf0f03d4 r5:00000009 r4:00000000 r3:00000000
[ 62.677479] [<c001867c>] (show_stack+0x0/0x1c) from [<c05fafb4>] (dump_stack+0x80/0x9c)
[ 62.686071] [<c05faf34>] (dump_stack+0x0/0x9c) from [<c004af34>] (warn_slowpath_common+0x70/0x94)
[ 62.695549] r4:00000000 r3:00000000
[ 62.699459] [<c004aec4>] (warn_slowpath_common+0x0/0x94) from [<c004af7c>] (warn_slowpath_null+0x24/0x2c)
[ 62.709701] r8:00000000 r7:00000000 r6:bf106664 r5:bf128aa0 r4:cdee0ce0
[ 62.716993] [<c004af58>] (warn_slowpath_null+0x0/0x2c) from [<bf0f03d4>] (wlcore_set_partition+0xa0/0x444 [wlcore])
[ 62.728275] [<bf0f0334>] (wlcore_set_partition+0x0/0x444 [wlcore]) from [<bf0e9dfc>] (wl1271_recovery_work+0x70/0x51c [wlcore])
[ 62.740525] r7:cd87e400 r6:cdee0d18 r5:cdee0ce0 r4:cdee0f90
[ 62.746689] [<bf0e9d8c>] (wl1271_recovery_work+0x0/0x51c [wlcore]) from [<c0060be8>] (process_one_work+0x11c/0x37c)
[ 62.757859] [<c0060acc>] (process_one_work+0x0/0x37c) from [<c0060fc0>] (worker_thread+0x13c/0x3c0)
[ 62.767555] [<c0060e84>] (worker_thread+0x0/0x3c0) from [<c006775c>] (kthread+0xac/0xb8)
[ 62.776237] [<c00676b0>] (kthread+0x0/0xb8) from [<c0014958>] (ret_from_fork+0x14/0x3c)
[ 62.784792] r7:00000000 r6:00000000 r5:c00676b0 r4:cd893e60
[ 62.790917] ---[ end trace 77d2d02c3584e330 ]---
[ 62.798120] ieee80211 phy0: Hardware restart was requested
root@am335x-evm:~#

******************************************************************************************

My WLAN_EN pin toggling while doing "ifconfig wlan0 up" and "ifconfig wlan0 down",

and I tested the WLAN_IRQ pin also working with sysfs entries, It is also toggling if i am giving 0 and 1 values. 

I have changed the WL1271_WAKEUP_TIMEOUT value to 2500, Same issue, 

Please any one tell me, What could be the issue ?

Regards,

~ Bhaskar

  • Hi Bhaskar,

    This could be because of wrong WLAN_IRQ mapping. Can you check this in your board/dts file?

    Regards,
    Gigi Joseph.
  • Hello Gigi Joseph,

    I have checked the GPIO0_31 with Sysfs entries before configuring WLAN_IRQ. It is working good.

    My configuration for WLAN_IRQ in my DTS file is :

    *****************************************************************************

           wlan_pins: pinmux_wlan_pins {

                   pinctrl-single,pins = <

                           0x74 (PIN_INPUT  | MUX_MODE7)   /* gpmc_wpn.gpio0_31  WLAN_IRQ */

                           0x88 (PIN_OUTPUT | MUX_MODE7)   /* gpmc_csn3.gpio2_0  WLAN_EN  */

                   >;

           };

    *************************

           wlcore {

                   compatible = "wlcore";

                   gpio = <31>; /* Bank0, pin31 */

                   /*

                    * TODO: use edge irqs for suspend/resume.

                    * in newer kerenls, we seem to miss interrupts when

                    * working with edge irqs, so revert back to level irqs.

                    */

                    /* platform-quirks = <1>; */

                   /* if a 12xx card is there, configure the clock to

                      WL12XX_REFCLOCK_38_XTAL */

                   board-ref-clock = <4>;

           };

    *************************

    	#address-cells = <1>;
    	#size-cells = <0>;
    	wlcore: wlcore@0 {
    	compatible = "ti,wlcore";
    	reg = <2>;
    	interrupt-parent = <&gpio0>;
    	interrupts = <31 IRQ_TYPE_NONE>;

    **********************************************************************

    could you please tell me where i am doing wrong with IRQ pin mapping ?

    Regards,

    Bhaskar 

  • Hi Bhaskar,

    Is the GPIO0_31 mapping to WLAN_IRQ in your board?
    Can you share the output of "cat /proc/interrupts" after a turn on?

    Regards,
    Gigi Joseph.
  • Dear Gigi Joseph,

    Here is the output log :

    root@am335x-evm:~# cat /proc/interrupts | grep wl
    175: 0 GPIO 31 wl18xx

    Regards,
    Bhasakar
  • Hi Bhaskar,

    I don't see any interrupt being triggered. I would expect to see something like the below:

    //Before wlan turn on
    root@am335x-evm:~# cat /proc/interrupts | grep wl18xx
    257: 0 481ae000.gpio 17 wl18xx

    //Turn on wlan
    root@am335x-evm:~# ifconfig wlan0 up
    [ 68.666229] wlcore: PHY firmware version: Rev 8.2.0.0.232
    [ 68.775170] wlcore: firmware booted (Rev 8.9.0.0.48)

    //After wlan turn on
    root@am335x-evm:~# cat /proc/interrupts | grep wl18xx
    257: 1 481ae000.gpio 17 wl18xx


    Regards,
    Gigi Joseph.
  • hello Gigi Joseph,

    I agree with you, the IRQ should increase while doing operation on wlan0.
    But it is not increasing.

    What could be the reason ? and where i am doing wrong ?

    Regards,
    Bhaskar
  • Hi Bhaskar,

    Can you verify using a scope that the WLAN_IRQ is not toggling?

    Regards,
    Gigi Joseph.
  • Dear Gigi Joseph,

    We found that, some hardware issue is with my module. Thank you for the support.

    And can you provide the " Register level reference document for WL18xx ".

    Regards,
    Bhaskar
  • Hi Bhaskar,

    The register information for wl18xx can be found in the Linux Open source driver. Please see: "drivers\net\wireless\ti\wl18xx\reg.h"

    Regards,
    Gigi Joseph.
  • Hi joseph ,

    we are also facing same issue,but we are using latest sdk-3.xx and kernel 4.4.12 .ti module jorjin wg7833 module. may i know what is the hardware issue?