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.

[参考译文] WL1801MOD:Android 9:无法在 iMX6DL 定制板上加载 WIFI 驱动程序。

Guru**** 657500 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1210140/wl1801mod-android-9-can-not-load-wifi-driver-on-imx6dl-custom-board

器件型号:WL1801MOD

您好!

我们有一个 iMX6DL 定制电路板、它可以在带 wl18xx 模块的 Android 6 (内核4.1.15)上正常运行。 现在我们正在使用 Android 6中几乎相同的 DTS 处理 Android 9 (内核4.14.98)。 但树中的 wl18xx 驱动器似乎卡在探测函数处、 wl12xx_set_power_on 返回-110。 在 SDIO 消息中、我们发现 CMD5返回-110。 现在还没有创建 wlan0接口。

请您知道在内核重新启用稳压器时为什么 CMD5失败了吗?

此致、
泰式河

以下是 dmesg 的摘录内容(GPIO175是我们电路板上的 WLAN_EN):

[ 4.678374] WLAN-en-compiler:_regulator_do_enable
[ 4.681997] gpiod_set_value_cansleep GPIO175 gpif_out_init_high 1值1.
[ 4.687599] WLAN-en-regulator:regulator_ENA_GPIO_Ctrl GPIO175 enable_count 1
[ 4.778015] wlan-en-compiler:_regulator_do_enable ret 0
[ 4.848469] mmc3:REQ DONE (CMD52):-110:00000000 00000000 00000000 00000000
[ 4.870857] mmc3:REQ DONE (CMD52):-110:00000000 00000000 00000000 00000000
[ 4.892624] mmc3:REQ DONE (CMD0):0:00000000 00000000 00000000 00000000
[ 4.912611] mmc3:REQ DONE (CMD8):-110:00000000 00000000 00000000 00000000
[ 5.061613] mmc3:REQ DONE (CM5):0:a0ffffc0 00000000 00000000 00000000
[ 5.505563] mmc3:REQ DONE (CM5):0:a0ffffc0 00000000 00000000 00000000
[ 5.817346] mmc3:REQ DONE (CMD3):0:00010000 00000000 00000000 00000000
[ 5.827852] mmc3:REQ 完成(CMD7):0:00001ec7 00000000 00000000 00000000
[ 5.838164] mmc3:REQ 完成(CMD52):0:00001043 00000000 00000000 00000000


[ 8.118437] mmc3:REQ DONE (CMD52):0:00001002 00000000 00000000 00000000
[ 8.911596] gpiod_set_value_cansleep GPIO175 GPIOF_OUT_INIT_HIGH 1值0
[ 8.917209] wlan-en-compiler:regulator_ENA_GPIO_Ctrl GPIO175 enable_count 0
[ 9.181568] WLAN-en-compiler:regulator_late_cleanation disabling
[ 15.264037] wlan-en-regulator:_regulator_do_enable
[ 15.269190] gpiod_set_value_cansleep GPIO175 GPIOF_OUT_INIT_HIGH 1值
[ 15.276183] WLAN-en-regulator:regulator_ENA_GPIO_Ctrl GPIO175 enable_count 1.
[ 15.376232] WLAN-en-regulator:_regulator_DO_enable ret 0
[ 15.448073] mmc3:启动 CMD52 arg 00000c00标志00000195
[ 26.088013] mmc3:等待硬件 cmd 中断时超时。
[ 26.178687] mmc3:REQ DONE (CMD52):-110:00000000 00000000 00000000 00000000
[ 36.418573] mmc3:REQ DONE (CMD52):-110:00000000 00000000 00000000 00000000
[ 36.443418] mmc3:REQ 完成(CMD0):0:00000000 00000000 00000000 00000000
[ 46.658369] mmc3:REQ DONE (CMD8):-110:00000000 00000000 00000000 00000000
[ 88.258503] mmc3:REQ DONE (CM5):-110:00000000 00000000 00000000 00000000

# cat /sys/kernel/debug/gpio

gpiochip5:GPIO 160-191、父级:platform/20b0000.gpio、20b0000.gpio:
 GPIO-175 (                    |wlan-en-regulator) out hi.

dmesg 文件
DTS 文件

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们无法对 Android 端口做出太多评论。 检查以确认在探测 SoC 且发送 CMD5时 WLAN_EN 是否保持有效。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!


    感谢您的回答。

    否、 当探测 SoC 且发送 CMD5时、WLAN_EN 不会生效。 我的同事说、WLAN_EN 在重新启动大约5s 后无效。

    我认为问题是在我版本的 Linux 内核中  4.14.98.

    我了解到、当 wl18xx 驱动程序执行函数 wl12xx_SDIO_SET_POWER 时、 WLAN-en 稳压器驱动程序将执行函数 gpiod_set_value_cansleep 以激活/停用 GPIO175 (WLAN_EN)。 我在 发送 CMD5之前在 dmesg 中看到过这些消息、并显示错误-110。

    但我不明白为什么即使 执行函数 gpiod_set_value_cansleep 也会使 WLAN_EN 保持无效。

    为了进行调试、我 在 DTS 中添加了稳压器始终开启和保持供电状态暂停、以使 WLAN_EN 始终有效。 但结果相同:WLAN_EN 在重启5秒后无效、 wl12xx_SDIO_SET_POWER 和 CMD5失败。 函数 gpiod_set_value_cansleep 在这种情况下似乎无效。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    WiLink8驱动程序不会直接控制 WLAN_EN IO。 它通过电压稳压器框架由内核 MMC/SDIO 驱动程序进行控制。 您可能需要研究内核 MMC/SDIO 驱动程序或 DTS 配置  

    DTS 文件供参考: https://git.ti.com/cgit/wilink8-wlan/build-utilites/tree/patches/kernel_patches/beaglebone-wilink8-capes/Enable-TI-WiFi-Bluetooth-am335x-boneblack-WL1837.patch?h=r8.8

    供参考的 NVS 文件补丁: https://patchwork.kernel.org/project/linux-wireless/patch/8665E2433BC68541A24DFFCA87B70F5B3642BE11@DFRE01.ent.ti.com/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 SN。

    对、问题来自 MMC/SDIO 驱动程序、 MMC_SDIO_POWER_RESTORE 失败。 我 可以在 NXP 论坛上找到解决方案。 同时、如果您有任何建议、请告诉我。

    此致、