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.

[参考译文] Linux/WL18XXCOM82SDMMC:为内核4.9构建驱动程序

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/651953/linux-wl18xxcom82sdmmc-build-the-driver-for-kernel-4-9

器件型号:WL18XXCOM82SDMMC
Thread 中讨论的其他器件: WL1835WL1271

工具/软件:Linux

大家好、

我正在使用 WL18XXCOM82SDMMC、我的 Linux 内核版本为4.9。

build_wl18xx.sh 在内核4.9中无法正常工作、我发现它支持的内核数高达内核4.4。 https://e2e.ti.com/support/wireless_connectivity/wilink_wifi_bluetooth/f/307/t/622688

是否已更新 TI 或任何针对4.9内核构建驱动程序的过程?如果未更新、请提供一些建议、并且需要注意在4.9中构建驱动程序。

平台:

Android 7.1.2

内核:4.9.17

谢谢

Sangly。

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

    由于圣诞节、您的问题可能会延迟回答。 感谢您的耐心等待。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sangly、

    您将需要使用树内 WiLink8设备驱动程序。 编译脚本不支持内核4.9的反向端口。  

    Saurabh

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


    您好!

    感谢您的回复。

    我在内核中启用了以下配置、

    CONFIG_CFG80211=m
    CONFIG_CFG80211_DEFAULT_PS=y
    CONFIG_CFG80211_DebugFS=y
    CONFIG_mac80211=m
    CONFIG_mac80211_DebugFS=y
    CONFIG_mac80211_message_tracing=y
    CONFIG_NL80211_TESTMODE = y
    CONFIG_WLAN=y
    CONFIG_WL_TI=y
    CONFIG_WL12XX=m
    CONFIG_WL18XX=m
    CONFIG_WLCORE = m
    CONFIG_WLCORE_SDIO=m

    CONFIG_BT_WiLink=y
    CONFIG_BT_HCEUART_LL=y    

    CONFIG_of=y
    CONFIG_PROC_DEVICETREE=y

    CONFIG_crypto_CCM=y
    CONFIG_Crypto GCM=y
    CONFIG_crypto_SEQIV=y    

    CONFIG_TI_ST=y
    CONFIG_ST_HCI=y

    在相应的目录中创建驱动程序后、

    mac80211-ko
    cfg80211.ko
    wlcore.ko
    wl12xx.ko
    wl18xx.ko
    wlcore_sdio.ko

    我正在从 Android init.tc 加载驱动程序、

       # wi-fi
       mkdir /data/misc/wifi/sockets 0770 wifi
       mkdir /data/misc/dhcp 0770 DHCP
       insmod /system/lib/modules/cfg80211.ko
       insmod /system/lib/modules/mac80211.ko
       insmod /system/lib/modules/wlcore.ko
       insmod /system/lib/modules/wl12xx.ko
       insmod /system/lib/modules/wl18xx.ko board_type=HDK
       insmod /system/lib/modules/wlcore_sdio.ko

    我将使用 NXP IMX 板和设备树配置来配置 WLAN、如下所示、


    DTS:
          wlan_en_reg:fixedregator@2{
                  兼容="稳压器固定";
                  reguler-name ="wlan-en-regulator ";
                  稳压器最小微伏=<1800000>;
                  稳压器最大值微伏=<1800000>;
                  /*此板的 WLAN_EN GPIO -组6、pin12 */
                  GPIO =<&GPIO6 12 0>;

                   /* WLAN 卡特定延迟*/
                  启动延迟-us =<70000>;
                  使能端高电平有效;
           };

    {/usdhc2}(&U)
           pinctrl-names ="默认值"、"state_100MHz"、"state_200MHz";
           pinctrl-0 =<&pinctrl_usdhc2>;
           pinctrl-1 =<&pinctrl_usdhc2_100MHz>;
           pinctrl-2 =<&pinctrl_usdhc2_200MHz>;

           使能 SDIO 唤醒;
           暂停时保持供电;
           不可拆卸;
           CD-POST;
           Pm-忽略-通知;
           WiFi 主机;
           VMMC-supply =<&wlan_en_reg>;
           电容断电卡;
           总线宽度=<4>;
           状态="正常";

           #address-cells =<1>;
           #size-cells =<0>;
           wlcore:wlcore@0{
                   兼容="ti、wl1835";
                   reg =<2>;
                   interrupt-parent =<&GPIO6>;
                   中断=<22 IRQ_TYPE_EDGE_RISING >;
                   平台查询=<1>;
           };
    };

    pinctrl_usdhc2:usdhc2grp{
                           FSL、引脚=<
                                   MX7D_PAD_SD2_CMD__SD2_CMD              0x59
                                   MX7D_PAD_SD2_CLK__SD2_CLK              0x19
                                   MX7D_PAD_SD2_DATA0__SD2_DATA0          0x59
                                   MX7D_PAD_SD2_Data1__SD2_Data1          0x59
                                   MX7D_PAD_SD2_DATA2__SD2_DATA2          0x59
                                   MX7D_PAD_SD2_DATA3__SD2_DATA3          0x59
                                   MX7D_PAD_SAI1_RX_DATA_GPIO6_IO12      0x19   /* WL_EN *
                   /*             MX7D_PAD_SAI1_TX_BCLK__GPIO6_IO13      0x59*/
                                   MX7D_PAD_SAI2_TX_DATA_GPIO6_IO22      0x19   /* WL_IRQ *

                           >;
    };

    WLAN 评估模块为 WG7833BEC8A、我使用导线和导线将此模块与电路板连接、长度约为30cm。

    当我引导器件并查看引导日志时、我无法看到任何与 wlcore 驱动程序相关的日志。

    我在所有驱动程序中的所有 init 和 probe 函数中添加了日志(__func_)。 下次启动时,我只从 wlcore/SDIO.c 获得了“wl1271_init()”日志,而没有从任何驱动程序获得其他日志。


    wl1271_init()之后,任何函数都没有日志,我怀疑 SDIO_probe 没有发生,或者没有检测到芯片,但没有有关这些错误的日志。

    我可以在/sys/class/regulator/regulator.8中看到"WLAN-en-regulator "、状态为"enabled"。

    我可以看到 WL_EN 的 GPIO 为

    gpiochip5:GPIO 160-191、父级:platform/30250000.gpio、30250000.gpio:
     GPIO-172 (                   |WLAN-en-regulator  )输出高电位    


    ifconfig -a 中没有 wlan0条目

    我还需要检查哪些其他要点、或者我是否错过了任何内容?

    请帮您启动 WLAN。

    30cm 导线可以连接 SDIO 信号吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我已从设备树中删除选项"cd-post;"、然后驱动程序开始加载模块和探测器。

    但是、现在我有以下问题、
    mmc1:地址0001处的新高速 SDIO 卡
    logd.daemon:重新定义
    type=1400审核(11.760:4):AVC:拒绝{创建} pid=235 comm="CRDA" scontext=u:r:ueventd:s0 tcontext=u:r:ueventd:s0 tclass=netlink_general_socket pro允许=0
    sabersd_7d:/#
    wl1271_init()
    wl1271_probe ()
    SDIO_wlsd:func->class=0
    SDIO_Vendor:0x0097
    SDIO_DEVICE:0x4076
    功能编号:0x0001
    wl1271_probe ()
    SDIO_wlsd:func->class=0
    SDIO_Vendor:0x0097
    SDIO_DEVICE:0x4076
    功能号:0x0002
    wlcore_probe_of ()
    wl18xx_probe ()
    wlcore_probe ()
    wl18xx_driver wl18xx.0.auto: ti-connectivity/wl18xx-conf.bin 的直接固件加载失败、错误-2
    wl18xx_driver wl18xx.0.auto:返回到用户帮助程序
    mmc1:MMC_POWER_RESTORE_HOST:上电
    ------ [在此处剪切]-----
    警告:CPU:1 PID:1个在 drivers/net/wireless/ti/wlcore/SDIO.c:107 wl12xx_SDIO_RAW_READ+0xd0/0x158 [wlcore_SDIO]
    链接的模块:wlcore_SDIO (+) wl18xx wl12xx wlcore mac80211 cfg80211
    CPU:1 PID:1 COMM: INIT 未被污染4.9.17-gcb41b0b-mis脏#19
    硬件名称:Freescale i.MX7 Dual (设备树)
    [ ](展开回扫)从[ ](show_stack+0x10/0x14)
    [ ](show_stack)从[ ](dump_stack+0x80/0x94)
    [ ](dump_stack)从[ ](_warn+0xec/0x104)
    [ ](__warn)从[ ](warn_slESpath_null+0x20/0x28)
    [ ](warn_slowpath_null)、来自[ ](wl12xx_SDIO_RAW_READ+0xd0/0x158 [wlcore_SDIO])
    [ ](wl12xx_SDIO_RAW_READ [wlcore_SDIO])从[ ](wlcore_NVS_CB+0x278/0xae4 [wlcore])
    [ ](wlcore_NVS_CB [wlcore])、来自[ ](wlcore_prob+b8/0xf8 [wlcore])
    [ ](wlcore_probe [wlcore])、来自[ ](wl18xx_probe +0x5c/0x90 [wl18xx])
    [ ](wl18xx_probe [wl18xx])、来自[ ](platform_drv_probe +0x4c/b0)
    [ ](platform_drv_probe)、来自[ ](DRIVER_PROBLE_DEVICE_0x234/0x2e0)
    [ ](driver_probe_device)从[ ](bus_for_each _drv+0x74/b8)
    [ ](bus_for_each _drv)从[ ](_DEVICE_ATT+0xd0/0x134)
    [ ](_device_attach)从[ ](BUS_PROBLE_DEVICE_0x84/0x8c)
    [ ](bus_probe_device)、来自[ ](DEVICE_ADDE+0x400/0x58c)
    [ ](device_add)从[ ](platform_device_add+0xFC/0x224)
    [ ](platform_device_add)从[ ](wl1271_probe + 0x2ac/0x31c [wlcore_SDIO])
    [ ](wl1271_probe [wlcore_SDIO])、来自[ ](SDIO_BUS_PROBE +0x100/0x118)
    [ ](SDIO_BUST_PROBE)、来自[ ](DRIVER_PROBLE_DEVICE_0x234/0x2e0)
    [ ](driver_probe_device)从[ ](_DRIVER_ATT+0xac/b0)
    [ ](__driver_attach)从[ ](BUS_TO_EASE_DEV_0x7c/0xc0)
    [ ](bus_for_each_dev)、来自[ ](BUS_ADD_DRIVER+0x1a4/0x21c)
    [ ](BUS_ADD_DRIVER)从[ ](DRIVER_REGISTER+0x8c/0x110)
    [ ](driver_register)、从[ ](do_one _initcall+0x50/0x194)
    --[结束线迹0f826d5e1d60daaf ]--
    wl1271_SDIO mmc1:0001:2:SDIO 读取失败(-84)
    wlcore:错误无法获取硬件信息
    mmc1:MMC_POWER_SAVE_HOST:关闭电源
    IMX-SIi902x Sound-HDMI:ASOC:CPU DAI 308c0000.SAI 未注册

    根据我跟踪的查询记录。
    我得到了"mmc1:地址0001处的新高速 SDIO 卡"日志、并从"wl1271_probe ()"打印了以下行
    SDIO_wlsd:func->class=0
    SDIO_Vendor:0x0097
    SDIO_DEVICE:0x4076
    功能编号:0x0001
    这意味着 Wilink8可以从主机进行通信并读取 PID 和 VID?

    2、wl12xx_SDIO_RAW_READ 不是通过 SDIO 总线发生的、所以我尝试将 SDIO 时钟减慢到10MHz、但没有帮助、我还需要在主机端执行其他操作。
    # cat /sys/kernel/debug/mmc1/ios
    时钟:10000000 Hz
    实际时钟:9818181 Hz
    VDD:7 (1.65 - 1.95V)
    总线模式:2 (推挽)
    芯片选择:0 (无关)
    功率模式:2 (开启)
    总线宽度:2 (4位)
    时序规格:2 (SD 高速)
    信号电压:0 (3.30V)
    驱动程序类型:0 (驱动程序类型 B)

    请告诉我如何在软件和硬件中调试此读取错误吗?

    注意:我可以使用示波器查看 SDIO_CLK 和 SDIO_CMD 引脚中的信号。

    谢谢
    Sangly
x 出现错误。请重试或与管理员联系。