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.

[参考译文] WL1831MOD:针对无响应 WiLink 模块寻求器件树建议

Guru**** 2395645 points
Other Parts Discussed in Thread: WL1831MOD, WL1831

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/576741/wl1831mod-device-tree-advice-sought-for-unresponsive-wilink-module

器件型号:WL1831MOD
Thread 中讨论的其他器件: WL1831WL1835

你(们)好

我正在从事一个项目、其中电路板紧密地基于 BeagleBone Black。

该板上有一个 Wl1831MOD、我正在尝试按照中的说明进行操作
processors.wiki.ti.com/.../WL18xx_Platform_Integration_Guide
processors.wiki.ti.com/.../WiLink8_Linux_Getting_Started_Guide
尝试运行它。

我已将此处提供的补丁作为模板、用于修改器件树以适应我们的布局(基本上是插入必要的引脚参考)、我希望开始调试这些补丁并确认一切正常。

不可原谅的是、在启动时似乎找不到模块;在我开始使用示波器探测电路板之前、我认为最好查看我的器件树是否有意义(因为我对语法不熟悉)

我已对照数据表和 TRM 中的表格检查了使用中的引脚、并使用 PinMUX 工具。 连接的 THS 信号为:

WL1831MOD 连接到 AM3352ZCZ

名称焊盘模式
BT_ENT17模式7
WiFi_INTRU13模式7
WiFi_ENU17模式7

MMC1_CMDV9模式2
MMC1_CLKU9模式2
MMC1_DAT0U7模式1
MMC1_DAT1V7模式1
MMC1_DAT2R8模式1
MMC1_DAT3TART8

1 UART0模式1 UART18模式1 UART0模式1 RTS1 UART0模式1 UART0模式1 UART0模式1 RTS1 UART0模式1 UART0模式1 UART0模式1

0
UART1_RXDD16模式0 

发送到 WL1831的信号通过一对 TXB0108DQS 从3V3电平转换到1v8
所有电源轨都是永久性的。

在此过程中、我在 DTSI 文件中创建了以下内容。

如果有人能指出这方面的任何明显错误,我将不胜感激

&am33xx_pinmux{
wi_MMC_PINS_DEFAULT:wi_MMC_PINS_DEFAULT{
pinctrl-single、PIN=<
0x80 (PIN_INPULLUP | MUX_MODE2)//(U9) GPMC_csn1.mmc1_clk *
0x84 (PIN_INPULLUM_PULLUP | M0*
)/GPMC_MO1*
(0x7_MOD1*)/0xMC_MOD1*(0xMC_MOD1_1*)/GPMC_MOD1*(0xMC_MOD1_1_MODON1)/GPMC_1*(0xMC_MODON1
(PIN_INPUT_PULLUP | MUX_MODE1)/*(R8) GPMC_ad2.mmc1_DAT2 */
0xc (PIN_INPUT_PULLUP | MUX_MODE1)/*(T8) GPMC_AD3.mmc1_DAT3 *
;
};WiFi_MMC_PINS_PUT_MUX



(0x80_MMC_PULESD*)/RM_PULP (0x80_M1_MCLUS_M1*
(0xMC_INCK_PUT_INPUT_M1*)/0xMC_MCLUS_PUT_PUT_M1*(0xMC_INCK_PUT_M0_PUT_MCC_M0_PUT_PUT)*(0xMC_M0_M0_M0_M0_PUT_PUT_M
(PIN_INPUT 下拉| MUX_MODE7)/*(U7) GPMC_ad0.mmc1_DAT0 */
0x4 (PIN_INPUT 下拉| MUX_MODE7)/*(V7) GPMC_ad1.mmc1_DAT1 *
/ 0x8 (PIN_INPUT _ PULLUX | MUX_8




)*(GPMC_AD3_MODE8)*(默认值*)/MMCC_ADDR_8)*(GPMC_MODE2)/MM_ADDRUX_1*(0xMC_MODE8)*(0xMC_2)/MMUCC_MODE8)/MMUCC_MODE2) uart1_PINS_DEFAULT{
pinctrl-single、PINS =<
0x180 (PIN_INPUT_PULLUP | MUX_MODE0)/*(D16
) uart1_RXD */ 0x184 (PIN_OUTPUT_PLUP | MUX_MODE0)/*(D15) uart1_RXD


(*) UARTARTART18_OUT18_PUT_DART1*)*(0x17_MODARTART18_PUT0_UART18_PUT_UART1*)*(UART18_UART18_PUT_UART18_PUT_UART1*)*(UART18_PUT_UART18_PUT_UART1*)*(UART18_PUT_UART18_D20


uart1_PINS_SLEEP{
pinctrl-single、PINS =<
0x180 (PIN_INPUT_PULLUP | MUX_MODE0)/*(D16
) uart1_RXD */ 0x184 (PIN_OUTPUT_PLUP | MUX_MODE0)/*(D15) uart1_RXD


(*)/UARTART18_OUTART18_PUT0*)*(0x17_MODART18_UART18_Pn_UART1*)*(UART18_MOD20_UTEN)*(UART18_UART18_D20_MOD20_OUTON_MODE0)


/* wl12xx/wl18xx 卡使能/IRQ GPIO。 */
wlan_pins_default: WLAN_PINS_DEFAULT{
pinctrl-single、PINS =<
0x70 (PIN_OUTPUT_PULLUP | MUX_MODE7)/*(T17) GPMC_wait0.GPIO0[30]*// BT 启用活动高
电平0x3c (PIN_INPUT | MUX_MODE7)/*(U13) GPMC_ADTRU15
)/[WLAN_OUTPUT_1.74](0x3*/UW_UWRT_UWRT_OUTPUT_U17)/[UWRT_OUTPUT_U_UW7)/[UWRT_OUTPUT_1.74](0x3[UWRT_IN_IN_UWRT_U


WLAN_PINS_SLEEP:WLAN_PINS_SLEEP{
pinctrl-single、PINS =<
0x70 (PIN_OUTPUT_PULLUD | MUX_MODE7)/*(T17) GPMC_WAIT0.GPIO0[30]*
0x3c (PIN_INPUT | MUX_MODE7)/*(UARTMC_ADTRL

)/[15_PIN_INTRENTRL = 0x74_PUT)/UART18_PIN_PUT




(默认值)/UART18_INTRN = 0x74_PUT1*)/*** (UART1*)/PUT = 0x7_INTRLESD1*
(0x31)/PUT)/PUT = UART18_INTR_INTR_INTRN)/PUT = 0x3[INTRENTRLESH (0x70)/

状态="确定";
};


&mmc2{
status ="确定";
总线宽度=<4>;
pinctrl-names ="默认值"、"睡眠";
pinctrl-0 =<&WIFI_MMC_PINS_DEFAULT &WLAN_PINS_DEFAULT>;
pinctr-1 =<&WIFI_MMC_PINS_SLEEP &WLAN_PINS_SLEEP;
ti、非可拆卸

电源、
特殊电源处理;ti

#address-cells =<1>;
#size-cells =<0>;
wlcore:wlcore@0{
compatible ="ti、wl1835";
reg =<2>;
interrupt-parent =<&GPIO1>;
interrupts =<15 IRQ_type_EDGE_RISING >;
};
};

我删除了对"固定稳压器"的引用、其中包含的示例是因为该板使用恒定电源轨。

不过、我也尝试过定义的稳压器、行为没有差别。 (我还尝试了引脚多路复用器定义中反相的 WL1831使能)

将 MMC 引脚的 CLK 和 CMD 定义为输入是否正确?
我是否已正确获取 wlcore 中断的索引(我打算将其设置为 GPIO1_15)


当倾倒 DTB 的最终部分时、我看到:


MMC@481d8000{
兼容="ti、omAP4-hsmmc";
ti、hwmds ="mmc2";
TI,需要特殊重置;
DMA =<0x0000002d 0x00000003 0x000003b0 0x00000004 0x00000004 0x00000008>;
dma-names ="TX"、"Rx";
中断= 0x0000001c>;
interrupt-parent = 0x00000001>;
reg =<0x481d8000 0x000003a4>;
状态="正常";
VMMC-SUPPLY = 0x00000037>;
pinctrl-names ="default"、"sleep";
总线宽度=<0x00000004>;
pinctrl-0 =<0x0000003b 0x000003ba>;
pinctrl-1 = 0x0000003d 0x000004c6>;
TI、不可拆卸;
TI、需要特殊处理;
电容断电卡;
暂停时保持供电;
#address-cells = 0x00000001>;
大小单元格=<0x00000000>;
wlcore@0{
兼容="ti、wl1835";
reg =<0x00000002>;
interrupt-parent = 0x0000003f>;
中断=<0x0000000f 0x00000001>;
};
};


我已将[以 pr_info ("rm-%s -%d %.20s\n"、__function__、__line__、pdev->name);]的样式插入到 OMAP-hsmmc 中,我可以看到它在查找模块时一直通过 OMAP-hsmmc_probe 运行;它确实找到了连接到 mmcouth 的插卡引脚0。

[1.190624] RM-OMAP-Hsmmc_probe start (2750) 48060000.MMC
[1.195645] RM-OMAP-Hsmmc_probe - 2771 48060000.MMC
[1.200508] OMAP_hsmmc 48060000.MMC:获得了 CD GPIO
[1.204897] RM-OMAP-Hsmmc_probe - 2807 48060000.MMC
[1.209420] RM-OMAP-Hsmmc_probe - 2811 48060000.MMC
[1.214058] RM-OMAP-Hsmmc_probe - 2841 48060000.MMC
[1.218738] RM-OMAP-Hsmmc_probe - 2871 48060000.MMC
[1.259867] mmc0:MMC_rescan_try_freq:尝试以400000Hz 的频率初始化卡
[1.266046] RM-OMAP-Hsmmc_probe - 2940 48060000.MMC
[1.270679] RM-OMAP-Hsmmc_probe - 2946 48060000.MMC
[1.275202] RM-OMAP-Hsmmc_probe - 2953 48060000.MMC
[1.279804] RM-OMAP-Hsmmc_probe - 2957 48060000.MMC
[1.287852] RM-OMAP-Hsmmc_probe start (2750) 481d8000.MMC
[1.292973] RM-OMAP-Hsmmc_probe - 2771 481d8000.MMC
[1.297827] RM-OMAP-Hsmmc_probe - 2807 481d8000.MMC
[1.302453] RM-OMAP-Hsmmc_probe - 2811 481d8000mmc
[1.307108] RM-OMAP-Hsmmc_probe - 2841 481d8000.MMC
[1.311898] RM-OMAP-Hsmmc_probe - 2871 481d8000.MMC
[1.347273] mmc0:主机不支持读取只读开关、假设已启用写入
[1.356858] mmc0:地址59b4处的新高速 SDHC 卡
[1.362835] mmcblk0:mmc0:59b4 1.84GiB
[1.368540] mmcblk0:P1
[1.439589] RM-OMAP-Hsmmc_probe - 2940 481d8000.MMC
[1.444117] RM-OMAP-Hsmmc_probe - 2946 481d8000.mmc
[1.448639] RM-OMAP-Hsmmc_probe - 2953 481d8000.MMC
[1.453200] mmc1:MMC_rescan_try_freq:尝试以400000Hz 的频率初始化卡
[1.469659] RM-OMAP-Hsmmc_probe - 2957 481d8000.MMC
[1.476330] ledtrig-CPU:已注册以指示 CPU 上的活动
[1.501988] NET:注册协议系列10.
[1.507706] SIT:IPv6 over IPv4隧道驱动程序
[1.520594] NET:注册协议系列17.

如果能就如何从这里着手提出任何建议,我将不胜感激。
此致、
Richard

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

    您的查询已分配给相关专家。 我们很快会回来。

    此致、

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

    注意事项。
    由于违反了启动/关断序列、因此不能使 wlan_enable allways 处于活动状态:

    请查看以下第2节:
    www.ti.com/.../swra448a.pdf

    此外、wlan_enable 必须在驱动程序掉电/上电时通过驱动程序进行控制、它用于在加载/重新加载固件之前重置芯片。

    此外、在您的日志中、我还会看到以下内容:

    [1.453200] mmc1:MMC_rescan_try_freq:尝试以400000Hz 的频率初始化卡

    mmc1、在此日志中、MMC 是否用于 wl18xx、对吧?
    是否还有其他与之相关的消息?

    我建议您在引导期间探测 SDIO 总线、并确保 WLAN_ENABLE 出现、然后在 SDIO 总线 cmd/clk 线路上看到活动。

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

    您好、Eyal

    我的意图是 WLAN 使能线路被"WLAN 引脚默认值"设置为高电平、而被"WLAN 引脚休眠"设置为低电平。

    上述状态的条目为:

    0x74 ( PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* (U17) gpmc_wpn.gpio0[31] */ // WLAN Enable Active Hi
    0x74 ( PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (U17) gpmc_wpn.gpio0[31] */
    还有其他方法我应该解决这个问题吗?
    该行是我在启动时看到的唯一 mmc1参考:我自己进行的调试除外、它用于确认通过 OMAP-hsmmc_probe 的代码流。
    我注意到的一点是、芯片文档似乎在0开始对 MMC 模块进行索引、器件树定义(和示例)从1开始
     例如、我在 mmc0总线上工作的卡在设备树中定义为位于 mmc1
     -这对“hwmods”定义有何作用? 这些是否应参考芯片定义?
    感谢你的帮助。
    祝你一切顺利、
    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Richard、

    WLAN_PINS_dafault 和 WLAN_PINS_SLEEP 仅与暂停/恢复状态相关。 不适用于正常运行。

    wlan_enable 引脚必须与 omap_hmc power_on/power_off 函数绑定、执行此操作的标准过程是使用固定电压稳压器来控制 wlan_enable 引脚、并使用用于 wl18xx 的相关 MMC 接口对其进行注册。

    请检查以下链接:

    此致、

    Eyal

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

    谢谢

    鉴于此电路板中的电源是永久供电的、这是否意味着我们实际上使用"虚拟"稳压器来控制 WLAN 引脚的时序?

    此致、

    Richard

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

    该电路板/WiLink 确实会从 VBAT 等设备永久供电
    WLAN_ENABLE 用于复位芯片并用作使能/禁用。

    固定电压稳压器是一款 Linux 内核驱动程序、可将 GPIO 实用作为电源、并允许其用作受控使能引脚。 因此、是的、它类似于虚拟稳压器。

    此致、
    Eyal