Other Parts Discussed in Thread: WL1831MOD,
I have a custom board that has an AM3352 and WL1831MOD on it, wired up exactly like the EVK and MOD8 board. It does seem to be mostly working but the data wlan interface seems very unstable and eventually throws a long list of exceptions and keeps looping until the the interface is brought down.
I'm using TI's current AM335x SDK 09.01.00.001, which is kernel 6.1.46. I'm using a minimal distribution of Debian 12.1, I copied the /lib/firmware/ti-connectivity folder from the TI SDK but get the same results with either that or what's in the standard Debian distro.
My devicetree is set up exactly the same as the EVM with one exception, if I use the DMA crossbar lines the system does not see the module. If I take them out, it seems to boot up fine.
EVM:
&mmc3 { /* these are on the crossbar and are outlined in the xbar-event-map element */ dmas = <&edma_xbar 12 0 1 &edma_xbar 13 0 2>; dma-names = "tx", "rx"; status = "okay"; vmmc-supply = <&wlan_en_reg>; bus-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&mmc3_pins &wlan_pins>; non-removable; cap-power-off-card; keep-power-in-suspend; #address-cells = <1>; #size-cells = <0>; wlcore: wlcore@0 { compatible = "ti,wl1835"; reg = <2>; interrupt-parent = <&gpio3>; interrupts = <17 IRQ_TYPE_EDGE_RISING>; }; };
Mine:
&mmc1 { /*dmas = <&edma_xbar 12 0 1 &edma_xbar 13 0 2>; dma-names = "tx", "rx";*/ //max-frequency = <1000000>; vmmc-supply = <&wlan_en_reg>; bus-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins &wlan_pins>; ti,non-removable; ti,needs-special-hs-handling; cap-power-off-card; keep-power-in-suspend; status = "okay"; #address-cells = <1>; #size-cells = <0>; wlcore: wlcore@0 { compatible = "ti,wl1831"; reg = <2>; interrupt-parent = <&gpio2>; interrupts = <4 IRQ_TYPE_EDGE_RISING>; }; };
Here's what I get for dmesg | grep wlcore:
debian@arm:~$ dmesg | grep wlcore [ 26.217508] wlcore: ERROR could not get configuration binary ti-connectivity/wl18xx-conf.bin: -2 [ 26.226384] wlcore: WARNING falling back to default config [ 26.940803] wlcore: wl18xx HW: 183x or 180x, PG 2.2 (ROM 0x11) [ 26.977795] wlcore: WARNING Detected unconfigured mac address in nvs, derive from fuse instead. [ 26.986576] wlcore: WARNING This default nvs file can be removed from the file system [ 27.050396] wlcore: loaded [ 30.475886] wlcore: PHY firmware version: Rev 8.2.0.0.243 [ 30.652772] wlcore: firmware booted (Rev 8.9.0.0.83) [ 32.337543] wlcore: WARNING ELP wakeup timeout! [ 32.342200] wlcore: down [ 33.287261] wlcore: PHY firmware version: Rev 8.2.0.0.243 [ 33.411581] wlcore: firmware booted (Rev 8.9.0.0.83) [ 45.682344] wlcore: Association completed. [ 81.687679] wlcore: ERROR Tx stuck (in FW) for 5000 ms. Starting recovery [ 81.699228] WARNING: CPU: 0 PID: 66 at drivers/net/wireless/ti/wlcore/main.c:795 wl12xx_queue_reco very_work.part.0+0x5c/0x60 [wlcore] [ 81.711552] Modules linked in: cbc aes_arm_bs crypto_simd cryptd btusb btrtl btintel btbcm bluetoo th ecdh_generic ecc wl18xx wlcore omap_aes_driver omap_sham omap_crypto crypto_engine pm33xx ti_emif_ sram wlcore_sdio musb_dsps musb_hdrc udc_core phy_am335x usbcore phy_generic wkup_m3_ipc rtc_omap usb _common wkup_m3_rproc phy_am335x_control omap_wdt efi_pstore ip_tables x_tables [ 81.758419] Workqueue: phy0 wl12xx_tx_watchdog_work [wlcore] [ 81.784397] warn_slowpath_fmt from wl12xx_queue_recovery_work.part.0+0x5c/0x60 [wlcore] [ 81.792639] wl12xx_queue_recovery_work.part.0 [wlcore] from wl12xx_tx_watchdog_work+0x128/0x140 [ wlcore] [ 81.802446] wl12xx_tx_watchdog_work [wlcore] from process_one_work+0x1c0/0x3f8 last function: wl12xx_tx_watchdog_work [wlcore] [ 81.885792] Workqueue: phy0 wl12xx_tx_watchdog_work [wlcore] [ 81.951043] wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.83 [ 81.989441] Modules linked in: cbc aes_arm_bs crypto_simd cryptd btusb btrtl btintel btbcm bluetoo th ecdh_generic ecc wl18xx wlcore omap_aes_driver omap_sham omap_crypto crypto_engine pm33xx ti_emif_ sram wlcore_sdio musb_dsps musb_hdrc udc_core phy_am335x usbcore phy_generic wkup_m3_ipc rtc_omap usb _common wkup_m3_rproc phy_am335x_control omap_wdt efi_pstore ip_tables x_tables [ 82.037762] Workqueue: phy0 wl1271_recovery_work [wlcore] [ 82.133644] sdio_memcpy_toio from wl12xx_sdio_raw_write+0x8c/0x170 [wlcore_sdio] [ 82.141189] wl12xx_sdio_raw_write [wlcore_sdio] from wlcore_set_partition+0xe4/0x548 [wlcore] [ 82.149959] wlcore_set_partition [wlcore] from wl1271_recovery_work+0x26c/0x34c [wlcore] [ 82.158370] wl1271_recovery_work [wlcore] from process_one_work+0x1c0/0x3f8 [ 82.230677] wlcore: pc: 0x0, hint_sts: 0x00000040 count: 1 [ 82.238242] wlcore: down [ 82.240827] wlcore: down [ 82.795943] wlcore: PHY firmware version: Rev 8.2.0.0.243 [ 82.939357] wlcore: firmware booted (Rev 8.9.0.0.83) [ 83.013695] wlcore: Association completed. [ 88.087542] wlcore: ERROR Tx stuck (in FW) for 5000 ms. Starting recovery [ 88.099094] WARNING: CPU: 0 PID: 66 at drivers/net/wireless/ti/wlcore/main.c:795 wl12xx_queue_reco very_work.part.0+0x5c/0x60 [wlcore] [ 88.111426] Modules linked in: cbc aes_arm_bs crypto_simd cryptd btusb btrtl btintel btbcm bluetoo th ecdh_generic ecc wl18xx wlcore omap_aes_driver omap_sham omap_crypto crypto_engine pm33xx ti_emif_ sram wlcore_sdio musb_dsps musb_hdrc udc_core phy_am335x usbcore phy_generic wkup_m3_ipc rtc_omap usb _common wkup_m3_rproc phy_am335x_control omap_wdt efi_pstore ip_tables x_tables [ 88.159790] Workqueue: phy0 wl12xx_tx_watchdog_work [wlcore] [ 88.185763] warn_slowpath_fmt from wl12xx_queue_recovery_work.part.0+0x5c/0x60 [wlcore] [ 88.193993] wl12xx_queue_recovery_work.part.0 [wlcore] from wl12xx_tx_watchdog_work+0x128/0x140 [ wlcore] [ 88.203797] wl12xx_tx_watchdog_work [wlcore] from process_one_work+0x1c0/0x3f8 last function: wl12xx_tx_watchdog_work [wlcore] [ 88.287163] Workqueue: phy0 wl12xx_tx_watchdog_work [wlcore] [ 88.352407] wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.83 [ 88.390602] Modules linked in: cbc aes_arm_bs crypto_simd cryptd btusb btrtl btintel btbcm bluetoo th ecdh_generic ecc wl18xx wlcore omap_aes_driver omap_sham omap_crypto crypto_engine pm33xx ti_emif_ sram wlcore_sdio musb_dsps musb_hdrc udc_core phy_am335x usbcore phy_generic wkup_m3_ipc rtc_omap usb _common wkup_m3_rproc phy_am335x_control omap_wdt efi_pstore ip_tables x_tables [ 88.438921] Workqueue: phy0 wl1271_recovery_work [wlcore] [ 88.534792] sdio_memcpy_toio from wl12xx_sdio_raw_write+0x8c/0x170 [wlcore_sdio] [ 88.542334] wl12xx_sdio_raw_write [wlcore_sdio] from wlcore_set_partition+0xe4/0x548 [wlcore] [ 88.551104] wlcore_set_partition [wlcore] from wl1271_recovery_work+0x26c/0x34c [wlcore] [ 88.559515] wl1271_recovery_work [wlcore] from process_one_work+0x1c0/0x3f8 [ 88.631891] wlcore: pc: 0x0, hint_sts: 0x00000044 count: 2 [ 88.638881] wlcore: down [ 88.641454] wlcore: down [ 89.196653] wlcore: PHY firmware version: Rev 8.2.0.0.243 [ 89.319815] wlcore: firmware booted (Rev 8.9.0.0.83) [ 89.389948] wlcore: Association completed. [ 94.887774] wlcore: ERROR Tx stuck (in FW) for 5000 ms. Starting recovery [ 94.899355] WARNING: CPU: 0 PID: 66 at drivers/net/wireless/ti/wlcore/main.c:795 wl12xx_queue_reco very_work.part.0+0x5c/0x60 [wlcore] [ 94.911684] Modules linked in: cbc aes_arm_bs crypto_simd cryptd btusb btrtl btintel btbcm bluetoo th ecdh_generic ecc wl18xx wlcore omap_aes_driver omap_sham omap_crypto crypto_engine pm33xx ti_emif_ sram wlcore_sdio musb_dsps musb_hdrc udc_core phy_am335x usbcore phy_generic wkup_m3_ipc rtc_omap usb _common wkup_m3_rproc phy_am335x_control omap_wdt efi_pstore ip_tables x_tables [ 94.960049] Workqueue: phy0 wl12xx_tx_watchdog_work [wlcore] [ 94.986027] warn_slowpath_fmt from wl12xx_queue_recovery_work.part.0+0x5c/0x60 [wlcore] [ 94.994260] wl12xx_queue_recovery_work.part.0 [wlcore] from wl12xx_tx_watchdog_work+0x128/0x140 [ wlcore] [ 95.004065] wl12xx_tx_watchdog_work [wlcore] from process_one_work+0x1c0/0x3f8 last function: wl12xx_tx_watchdog_work [wlcore] [ 95.087475] Workqueue: phy0 wl12xx_tx_watchdog_work [wlcore] last function: wl1271_tx_work [wlcore] [ 95.270547] Workqueue: phy0 wl1271_tx_work [wlcore] [ 95.335000] wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.83 [ 95.373191] Modules linked in: cbc aes_arm_bs crypto_simd cryptd btusb btrtl btintel btbcm bluetoo th ecdh_generic ecc wl18xx wlcore omap_aes_driver omap_sham omap_crypto crypto_engine pm33xx ti_emif_ sram wlcore_sdio musb_dsps musb_hdrc udc_core phy_am335x usbcore phy_generic wkup_m3_ipc rtc_omap usb _common wkup_m3_rproc phy_am335x_control omap_wdt efi_pstore ip_tables x_tables [ 95.421516] Workqueue: phy0 wl1271_recovery_work [wlcore] [ 95.517409] sdio_memcpy_toio from wl12xx_sdio_raw_write+0x8c/0x170 [wlcore_sdio] [ 95.524952] wl12xx_sdio_raw_write [wlcore_sdio] from wlcore_set_partition+0xe4/0x548 [wlcore] [ 95.533727] wlcore_set_partition [wlcore] from wl1271_recovery_work+0x26c/0x34c [wlcore] [ 95.542136] wl1271_recovery_work [wlcore] from process_one_work+0x1c0/0x3f8 [ 95.619883] wlcore: pc: 0x0, hint_sts: 0x00000044 count: 3 [ 95.626603] wlcore: down [ 95.631578] wlcore: down [ 96.256491] wlcore: PHY firmware version: Rev 8.2.0.0.243 [ 96.380412] wlcore: firmware booted (Rev 8.9.0.0.83) [ 96.450394] wlcore: Association completed. [ 98.217777] wlcore: down [ 98.337912] wlcore: down
Here is the repeating exception messages that keep coming up:
[ 94.894681] ------------[ cut here ]------------ [ 94.899355] WARNING: CPU: 0 PID: 66 at drivers/net/wireless/ti/wlcore/main.c:795 wl12xx_queue_reco very_work.part.0+0x5c/0x60 [wlcore] [ 94.911684] Modules linked in: cbc aes_arm_bs crypto_simd cryptd btusb btrtl btintel btbcm bluetoo th ecdh_generic ecc wl18xx wlcore omap_aes_driver omap_sham omap_crypto crypto_engine pm33xx ti_emif_ sram wlcore_sdio musb_dsps musb_hdrc udc_core phy_am335x usbcore phy_generic wkup_m3_ipc rtc_omap usb _common wkup_m3_rproc phy_am335x_control omap_wdt efi_pstore ip_tables x_tables [ 94.945360] CPU: 0 PID: 66 Comm: kworker/u2:3 Tainted: G W 6.1.46-fc-fpcr+ #2 [ 94.953928] Hardware name: Generic AM33XX (Flattened Device Tree) [ 94.960049] Workqueue: phy0 wl12xx_tx_watchdog_work [wlcore] [ 94.965851] unwind_backtrace from show_stack+0x10/0x28 [ 94.971121] show_stack from dump_stack_lvl+0x24/0x40 [ 94.976208] dump_stack_lvl from __warn+0x98/0xc4 [ 94.980945] __warn from warn_slowpath_fmt+0xac/0x19c [ 94.986027] warn_slowpath_fmt from wl12xx_queue_recovery_work.part.0+0x5c/0x60 [wlcore] [ 94.994260] wl12xx_queue_recovery_work.part.0 [wlcore] from wl12xx_tx_watchdog_work+0x128/0x140 [ wlcore] [ 95.004065] wl12xx_tx_watchdog_work [wlcore] from process_one_work+0x1c0/0x3f8 [ 95.011524] process_one_work from worker_thread+0x78/0x5e8 [ 95.017136] worker_thread from kthread+0xe0/0x110 [ 95.021965] kthread from ret_from_fork+0x14/0x2c [ 95.026699] Exception stack(0xf0399fb0 to 0xf0399ff8) [ 95.031775] 9fa0: 00000000 00000000 00000000 00000000 [ 95.039988] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 95.048201] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 95.054911] ---[ end trace 0000000000000000 ]--- [ 95.059565] BUG: workqueue leaked lock or atomic: kworker/u2:3/0x00000001/66 [ 95.059565] last function: wl12xx_tx_watchdog_work [wlcore] [ 95.072792] CPU: 0 PID: 66 Comm: kworker/u2:3 Tainted: G W 6.1.46-fc-fpcr+ #2 [ 95.081358] Hardware name: Generic AM33XX (Flattened Device Tree) [ 95.087475] Workqueue: phy0 wl12xx_tx_watchdog_work [wlcore] [ 95.093264] unwind_backtrace from show_stack+0x10/0x28 [ 95.098522] show_stack from dump_stack_lvl+0x24/0x40 [ 95.103600] dump_stack_lvl from process_one_work+0x3f4/0x3f8 [ 95.109383] process_one_work from worker_thread+0x78/0x5e8 [ 95.114993] worker_thread from kthread+0xe0/0x110 [ 95.119816] kthread from ret_from_fork+0x14/0x2c [ 95.124547] Exception stack(0xf0399fb0 to 0xf0399ff8) [ 95.129621] 9fa0: 00000000 00000000 00000000 00000000 [ 95.137836] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 95.146049] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 95.152740] BUG: workqueue leaked lock or atomic: kworker/u2:3/0x00000001/66 [ 95.152740] last function: flush_to_ldisc [ 95.164302] CPU: 0 PID: 66 Comm: kworker/u2:3 Tainted: G W 6.1.46-fc-fpcr+ #2 [ 95.172867] Hardware name: Generic AM33XX (Flattened Device Tree) [ 95.178984] Workqueue: events_unbound flush_to_ldisc [ 95.183979] unwind_backtrace from show_stack+0x10/0x28 [ 95.189235] show_stack from dump_stack_lvl+0x24/0x40 [ 95.194314] dump_stack_lvl from process_one_work+0x3f4/0x3f8 [ 95.200097] process_one_work from worker_thread+0x78/0x5e8 [ 95.205707] worker_thread from kthread+0xe0/0x110 [ 95.210529] kthread from ret_from_fork+0x14/0x2c [ 95.215260] Exception stack(0xf0399fb0 to 0xf0399ff8) [ 95.220333] 9fa0: 00000000 00000000 00000000 00000000 [ 95.228547] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 95.236761] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 95.243425] BUG: workqueue leaked lock or atomic: kworker/u2:3/0x00000001/66 [ 95.243425] last function: wl1271_tx_work [wlcore] [ 95.255864] CPU: 0 PID: 66 Comm: kworker/u2:3 Tainted: G W 6.1.46-fc-fpcr+ #2 [ 95.264430] Hardware name: Generic AM33XX (Flattened Device Tree) [ 95.270547] Workqueue: phy0 wl1271_tx_work [wlcore] [ 95.275549] unwind_backtrace from show_stack+0x10/0x28 [ 95.280805] show_stack from dump_stack_lvl+0x24/0x40 [ 95.285885] dump_stack_lvl from process_one_work+0x3f4/0x3f8 [ 95.291668] process_one_work from worker_thread+0x78/0x5e8 [ 95.297278] worker_thread from kthread+0xe0/0x110 [ 95.302102] kthread from ret_from_fork+0x14/0x2c [ 95.306833] Exception stack(0xf0399fb0 to 0xf0399ff8) [ 95.311906] 9fa0: 00000000 00000000 00000000 00000000 [ 95.320120] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 95.328333] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 95.335000] wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.83 [ 95.366786] BUG: scheduling while atomic: kworker/u2:3/66/0x00000002 [ 95.373191] Modules linked in: cbc aes_arm_bs crypto_simd cryptd btusb btrtl btintel btbcm bluetoo th ecdh_generic ecc wl18xx wlcore omap_aes_driver omap_sham omap_crypto crypto_engine pm33xx ti_emif_ sram wlcore_sdio musb_dsps musb_hdrc udc_core phy_am335x usbcore phy_generic wkup_m3_ipc rtc_omap usb _common wkup_m3_rproc phy_am335x_control omap_wdt efi_pstore ip_tables x_tables [ 95.406834] CPU: 0 PID: 66 Comm: kworker/u2:3 Tainted: G W 6.1.46-fc-fpcr+ #2 [ 95.415399] Hardware name: Generic AM33XX (Flattened Device Tree) [ 95.421516] Workqueue: phy0 wl1271_recovery_work [wlcore] [ 95.427069] unwind_backtrace from show_stack+0x10/0x28 [ 95.432327] show_stack from dump_stack_lvl+0x24/0x40 [ 95.437408] dump_stack_lvl from __schedule_bug+0x60/0x74 [ 95.442847] __schedule_bug from __schedule+0x6d8/0x8a4 [ 95.448105] __schedule from schedule+0x58/0x10c [ 95.452750] schedule from schedule_hrtimeout_range_clock+0x12c/0x184 [ 95.459235] schedule_hrtimeout_range_clock from schedule_hrtimeout_range+0x1c/0x38 [ 95.466939] schedule_hrtimeout_range from usleep_range_state+0x5c/0xa0 [ 95.473596] usleep_range_state from sdhci_omap_card_busy+0xc8/0x1f4 [ 95.479993] sdhci_omap_card_busy from __mmc_start_request+0xbc/0x10c [ 95.486480] __mmc_start_request from mmc_start_request+0x84/0xc0 [ 95.492611] mmc_start_request from mmc_wait_for_req+0x64/0xe8 [ 95.498480] mmc_wait_for_req from mmc_io_rw_extended+0x22c/0x34c [ 95.504617] mmc_io_rw_extended from sdio_io_rw_ext_helper+0x180/0x21c [ 95.511188] sdio_io_rw_ext_helper from sdio_memcpy_toio+0x24/0x3c [ 95.517409] sdio_memcpy_toio from wl12xx_sdio_raw_write+0x8c/0x170 [wlcore_sdio] [ 95.524952] wl12xx_sdio_raw_write [wlcore_sdio] from wlcore_set_partition+0xe4/0x548 [wlcore] [ 95.533727] wlcore_set_partition [wlcore] from wl1271_recovery_work+0x26c/0x34c [wlcore] [ 95.542136] wl1271_recovery_work [wlcore] from process_one_work+0x1c0/0x3f8 [ 95.549325] process_one_work from worker_thread+0x78/0x5e8 [ 95.554936] worker_thread from kthread+0xe0/0x110 [ 95.559762] kthread from ret_from_fork+0x14/0x2c [ 95.564495] Exception stack(0xf0399fb0 to 0xf0399ff8) [ 95.569570] 9fa0: 00000000 00000000 00000000 00000000 [ 95.577785] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 95.585998] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 95.619883] wlcore: pc: 0x0, hint_sts: 0x00000044 count: 3 [ 95.626603] wlcore: down [ 95.631578] wlcore: down [ 95.638447] ieee80211 phy0: Hardware restart was requested [ 96.256491] wlcore: PHY firmware version: Rev 8.2.0.0.243 [ 96.380412] wlcore: firmware booted (Rev 8.9.0.0.83) [ 96.450394] wlcore: Association completed. Killed old client process
I'll keep digging and post anything else I come up with but if anyone has any ideas I'm all ears.