Ошибка Linux SDIO MMC при остановке и перезапуске устройства WLAN

У нас есть специальная платформа на базе iMX53, работающая под управлением Android Gingerbread, ядро ​​Linux 2.6.35 с устройством TiWi-BLE Wlan/Bluetooth, использующим интерфейс SDIO для WLAN. Мы используем Freescale BSP. TiWi-BLE - это перепакованное устройство TI wl1271. Я скачал драйвер wl1271 с сайта TI в соответствии с рекомендациями TI.

Я получаю ошибки SDIO, когда устройство WLAN остановлено и перезапущено. Устройство имеет сигнал WL_EN, который сбрасывается драйвером, когда устройство останавливается, и устанавливается при запуске. Переключение этого сигнала сбрасывает устройство.

Я исследовал эту проблему и увидел то, что было похоже на ту же проблему на форумах TI http://e2e.ti.com/support/wireless_connectivity/f/307/t/181835.aspx?pi310978=2

Похоже, что устройство может не включаться при наличии трафика SDIO, и я предложил предлагаемое исправление для решения этой проблемы, но проблема не исчезла. Получается ошибка тайм-аута SDIO MMC. Вот что я получаю на консоли, когда устройство перезагружается после остановки.

------------[ cut here ]------------
WARNING: at /home/wlan/compat-wireless/drivers/net/wireless/wl12xx/sdio.c:126 wl12xx_sdio_raw_write+0xac/0xe8 [wl12xx_sdio]()
Modules linked in: wl12xx_sdio wl12xx mac80211 cfg80211 compat
[<8003e578>] (unwind_backtrace+0x0/0xf0) from [<80068e6c>] (warn_slowpath_common+0x4c/0x64)
[<80068e6c>] (warn_slowpath_common+0x4c/0x64) from [<80068e9c>] (warn_slowpath_null+0x18/0x1c)
[<80068e9c>] (warn_slowpath_null+0x18/0x1c) from [<7f0e0264>] (wl12xx_sdio_raw_write+0xac/0xe8 [wl12xx_sdio])
[<7f0e0264>] (wl12xx_sdio_raw_write+0xac/0xe8 [wl12xx_sdio]) from [<7f0aecac>] (wl1271_set_partition+0xe0/0x3d0 [wl12xx])
[<7f0aecac>] (wl1271_set_partition+0xe0/0x3d0 [wl12xx]) from [<7f0a678c>] (wl12xx_set_power_on+0x70/0x138 [wl12xx])
[<7f0a678c>] (wl12xx_set_power_on+0x70/0x138 [wl12xx]) from [<7f0a999c>] (wl12xx_chip_wakeup+0x10/0x2b8 [wl12xx])
[<7f0a999c>] (wl12xx_chip_wakeup+0x10/0x2b8 [wl12xx]) from [<7f0a9f5c>] (wl1271_op_add_interface+0x318/0x574 [wl12xx])
[<7f0a9f5c>] (wl1271_op_add_interface+0x318/0x574 [wl12xx]) from [<7f0581c8>] (ieee80211_do_open+0x2e0/0x6c0 [mac80211])
[<7f0581c8>] (ieee80211_do_open+0x2e0/0x6c0 [mac80211]) from [<80371bb8>] (__dev_open+0xa0/0xf0)
[<80371bb8>] (__dev_open+0xa0/0xf0) from [<8036f4f8>] (__dev_change_flags+0x8c/0x110)
[<8036f4f8>] (__dev_change_flags+0x8c/0x110) from [<80371ae4>] (dev_change_flags+0x10/0x44)
[<80371ae4>] (dev_change_flags+0x10/0x44) from [<803c793c>] (devinet_ioctl+0x3ac/0x77c)
[<803c793c>] (devinet_ioctl+0x3ac/0x77c) from [<80361058>] (sock_ioctl+0x1f4/0x244)
[<80361058>] (sock_ioctl+0x1f4/0x244) from [<800da3e4>] (vfs_ioctl+0x2c/0xac)
[<800da3e4>] (vfs_ioctl+0x2c/0xac) from [<800daa98>] (do_vfs_ioctl+0x540/0x5a0)
[<800daa98>] (do_vfs_ioctl+0x540/0x5a0) from [<800dab44>] (sys_ioctl+0x4c/0x6c)
[<800dab44>] (sys_ioctl+0x4c/0x6c) from [<80039f80>] (ret_fast_syscall+0x0/0x30)
---[ end trace 28f46a0aaed28e6a ]---
wl1271_sdio mmc1:0001:2: sdio write failed (-110)

Мы считаем, что мы придерживаемся требований к устройству WL_EN для увеличения / уменьшения, как указано в техническом описании.

Кажется, это какая-то проблема SDIO/MMC, когда интерфейс не работает должным образом во второй раз, возможно, из-за некоторой проблемы с повторной инициализацией.

Может кто-нибудь предложить, что может происходить или возможные способы отладки этого более подробно.

Спасибо бруно

0 ответов

Другие вопросы по тегам