主题中讨论的其他器件: DRA752、 PCA9555、 TMP112、 TLV320AIC3106、 BeagleBoard-X15、 PMP
工具/软件:Linux
尊敬的 TI 团队:
我们是否可以使用“MMC1”连接到 SDIO WiFi (如 WL18xx)?
如果是、 将 MMC1与 SDIO WiFi 配合使用是否存在任何限制?
来自 Will Hsu
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
尊敬的 TI 团队:
我们是否可以使用“MMC1”连接到 SDIO WiFi (如 WL18xx)?
如果是、 将 MMC1与 SDIO WiFi 配合使用是否存在任何限制?
来自 Will Hsu
你好、Biser
我们的 WiFi 模块使用 SDIO3.0标准、并连接到 MMC1。
但是,在系统启动期间,将打印以下信息:
mmc0:初始化 SDIO 卡时出错-16
以下是 MMC1的器件树配置:
mmc1{(&M)
状态="正常";
VMMC-supply =<&ldo1_reg>;
总线宽度=<4>;
pinctrl-names ="default";
暂停时保持供电;
TI、不可拆卸;
/delete-property/ti、双电压;
pinctrl-names ="默认值"、"hs"、"sdr12"、"sdr25"、"sdr50";
/delete-property/sds-uhs-sdr104;
/delete-property/sds-uhs-sdr50;
/delete-property/sds-uhs-ddr50;
/delete-property/sds-uhs-sdr25;
/delete-property/sds-uhs-sdr12;
};
请帮您检查哪里出错了吗? 谢谢!
您好!
尝试通过 在 DT 节点"最大频率"中添加属性来降低 MMC 频率尝试降低前1MHz。 一旦它正确初始化、尝试增加频率、直到 SDIO 无法初始化。 例如、DT 节点应如下所示:
mmc1{(&M)
状态="正常";
VMMC-supply =<&ldo1_reg>;
总线宽度=<4>;
pinctrl-names ="default";
暂停时保持供电;
TI、不可拆卸;
/delete-property/ti、双电压;
pinctrl-names ="默认值"、"hs"、"sdr12"、"sdr25"、"sdr50";
Max-frequency =<1000000>;
/delete-property/sds-uhs-sdr104;
/delete-property/sds-uhs-sdr50;
/delete-property/sds-uhs-ddr50;
/delete-property/sds-uhs-sdr25;
/delete-property/sds-uhs-sdr12;
};
谢谢、
Prabhakar LAD
Prabhakar:
现在、我们将 Wifi 模块连接到 MMC4 、将打印以下信息:
mmc2:初始化 SDIO 卡时出错-110
以下是 MMC4的器件树配置:
MMC4{
状态="正常";
VMMC-SUPPLY =<&VDD_3V3>;
总线宽度=<4>;
pinctrl-names ="default";
电容断电卡;
暂停时保持供电;
TI、不可拆卸;
pinctrl-names ="默认值"、"hs"、"sdr12"、"sdr25";
pinctrl-0 =<&MMC4_PINS_DEFAULT>;
pinctrl-1 =<&M MMC4_PINS_h>;
pinctrl-2 =<&MMC4_PINS_SDDR12>;
pinctrl-3 =<&MMC4_PINS_SDr25>;
#address-cells =<1>;
#size-cells =<0>;
};
请帮您检查哪里出错了吗? 谢谢!
Prabhakar:
我尝试按如下方式配置 mmc1:
&dra7_PMX_CORE{
mmc1_PINS_DEFAULT:mmc1_PINS_DEFAULT{
pinctrl-single、pins =<
0x36c (PIN_INPUT | MUX_MODE14)/* mmc1sdcd.gpio219 *
0x354 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_clk.clk *
0x358 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_cmd.cmd */
0x35c (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_data0.data0 */
0x360 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_dat1.data1 */
0x364 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_data2.dat2 *
0x368 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_dat3.dat3 *
>;
};
mmc1_PINs_hs:pinmux_mmc1_hs_pins{
pinctrl-single、pins =<
0x354 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_clk.clk *
0x358 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_cmd.cmd */
0x35c (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_data0.data0 */
0x360 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_dat1.data1 */
0x364 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_data2.dat2 *
0x368 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_dat3.dat3 *
>;
};
mmc1_PINs_sdr12:pinmux_mmc1_sdr12_pins{
pinctrl-single、pins =<
0x354 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_clk.clk *
0x358 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_cmd.cmd */
0x35c (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_data0.data0 */
0x360 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_dat1.data1 */
0x364 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_data2.dat2 *
0x368 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_dat3.dat3 *
>;
};
mmc1_PINs_sdr25:pinmux_mmc1_sdr25_pins{
pinctrl-single、pins =<
0x354 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_clk.clk *
0x358 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_cmd.cmd */
0x35c (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_data0.data0 */
0x360 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_dat1.data1 */
0x364 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_data2.dat2 *
0x368 (PIN_INPUT_PULLUP | MUX_MODE0)/* mmc1_dat3.dat3 *
>;
};
mmc1_PINs_sdr50:pinmux_mmc1_sdr50_pins{
pinctrl-single、pins =<
0x354 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE0)/* mmc1_clk.clk *
0x358 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE0)/* mmc1_cmd.cmd *
0x35c (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE0)/* mmc1_dat0.dat0 *
0x360 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE0)/* mmc1_DAT1.DAT1 *
0x364 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE0)/* mmc1_data2.dat2 *
0x368 (PIN_INPUT_PULLUP | MANUAL_MODE | MUX_MODE0)/* mmc1_dat3.dat3 *
>;
};
}
dra7_iodelay_core{
mmc1_iodelay_manual1_conf:mmc1_iodelay_manual1_conf{
pinctrl-single、pins =<
0x618 (A_DELAY (621)| G_DELAY (14))/* CFG_MMC1_CLK_IN *
0x620 (A_DELAY (1342)| G_DELAY (288))/* CFG_MMC1_CLK_OUT *
0x624 (A_DELAY (0)| G_DELAY (0))/* CFG_MMC1_CMD_IN *
0x628 (A_DELAY (708)| G_DELAY (0))/* CFG_MMC1_CMD_OEN *
0x62c (A_DELAY (564)| G_DELAY (0))/* CFG_MMC1_CMD_OUT *
0x630 (A_DELAY (0)| G_DELAY (0))/* CFG_MMC1_DAT0_IN *
0x634 (A_DELAY (911)| G_DELAY (0))/* CFG_MMC1_DAT0_oen *
0x638 (A_DELAY (0)| G_DELAY (0))/* CFG_MMC1_DAT0_OUT *
0x63c (A_DELAY (0)| G_DELAY (0))/* CFG_MMC1_DAT1_IN *
0x640 (A_DELAY (899)| G_DELAY (0))/* CFG_MMC1_DAT1_oen *
0x644 (A_DELAY (210)| G_DELAY (0))/* CFG_MMC1_DAT1_OUT *
0x648 (A_DELAY (0)| G_DELAY (0))/* CFG_MMC1_DAT2_IN *
0x64c (A_DELAY (942)| G_DELAY (0))/* CFG_MMC1_DAT2_OEN *
0x650 (A_DELAY (0)| G_DELAY (147))/* CFG_MMC1_DAT2_OUT *
0x654 (A_DELAY (0)| G_DELAY (0))/* CFG_MMC1_DAT3_IN *
0x658 (A_DELAY (1080)| G_DELAY (0))/* CFG_MMC1_DAT3_oen *
0x65c (A_DELAY (486)| G_DELAY (0))/* CFG_MMC1_DAT3_OUT *
>;
};
}
mmc1{(&M)
状态="正常";
VMMC-supply =<&ldo1_reg>;
总线宽度=<4>;
pinctrl-names ="default";
暂停时保持供电;
TI、不可拆卸;
/delete-property/ti、双电压;
电容断电卡;
最大频率=<3000000>;
pinctrl-names ="默认值"、"hs"、"sdr12"、"sdr25"、"sdr50";
pinctrl-0 =<&mmc1_PINS_DEFAULT &mmc1_iodelay_manual1_conf>;
pinctrl-1 =<&mmc1_PINs_hs &mmc1_iodelay_manual1_conf>;
pinctrl-2 =<&mmc1_PINs_sdr12 &mmc1_iodelay_manual1_conf>;
pinctrl-3 =<&mmc1_PINs_sdr25 &mmc1_iodelay_manual1_conf>;
pinctrl-4 =<&mmc1_PINs_sdr50 &mmc1_iodelay_manual1_conf>;
/delete-property/sds-uhs-sdr104;
/delete-property/sds-uhs-sdr50;
/delete-property/sds-uhs-ddr50;
/delete-property/sds-uhs-sdr25;
/delete-property/sds-uhs-sdr12;
};
但我们的 Wifi 模块仍然无法正常工作。
请帮您检查哪里出错了吗? 谢谢!
Prabhakar:
MMC_IO_DELAY 寄存器值:
0x4844A618 0x00000025
0x4844A620 0x00000064
0x4844A624 0x00000000
0x4844A628 0x00000028
0x4844A62C 0x00000023
0x4844A630 0x00000000
0x4844A634 0x00000040
0x4844A638 0x00000000
0x4844A63C 0x00000000
0x4844A640 0x00000040
0x4844A644 0x00000006
0x4844A648 0x00000000
0x4844A64C 0x00000041
0x4844A650 0x00000002
0x4844A654 0x00000000
0x4844A658 0x00000045
0x4844A65C 0x00000021
Prabhakar:
1、我在 u-boot 中尝试在 mux_data.h 中设置、但结果相同。
2、我在 AM57xx SitaraIO 配置要求(第2页)中看到了以下说明:
1简介
确保在时序要求和开关特性表中发布 IO 时序值
在器件的整个生命周期内、AM57xx 软件必须实施
正确的焊盘配置要求。 不遵守这些要求可能不会产生影响
观察到的。 但是、从长远来看、不遵守此程序可能会导致系统出现故障
问题。
因此 、我认为即使未配置 IO 延迟、该功能也应该正常、但 长期使用会有问题。
Prabhakar:
连接到 MMC4时、硬件更改过大、 因此我们要连接到 mmc3。
但是,加载驱动程序时出现以下错误:
最大频率> 3000000:
[58.433785] WLAN 不是赢家(0x2)。 跳过 FW 下载
[73.476454]无法轮询固件状态:firmwarestat=0x2
[73.481963] FW 无法及时激活!
[73.487369] WLAN:下载 FW 失败、nowwait:0
[73.492607] SDIO Func0 (0x0-0x9):43 03 02 03 00 02 03 00
[73.499972] SDIO 功能1 (0x4-0xb):00 00 00 00 00 00 00 00
[73.505783] SDIO 功能1:(0x4c) 00 (0x50) 0d (0x54) 01 (0x55) 00 (0x58) 10 (0x
[73.517510] SDIO Func1 (0xc0-0xca):02 00 00 00 00 00 00 00 00 00 00 20
[73.624411] SDIO Func1 (0xc0-0xca):02 00 00 00 00 00 00 00 00 00 00 20
[73.631000]固件初始化失败
[73.634645] waal_add_card 失败
[73.638085] WLAN_SDIO:mmc2:0001:1的探测失败、错误-1
[73.645278] WLAN:已成功加载驱动程序
最大频率<= 3000000:
[70.475416] WLAN FW 已运行! 跳过 FW 下载
[70.482417] WLAN FW 处于活动状态
[70.496792] cmd53读取错误=-84
[70.500176] MOAL_READ_DATA_SYNC:读取寄存器失败
[70.546784] cmd53读取错误=-84
[70.550169] MOAL_READ_DATA_SYNC:读取寄存器失败
[ 90.556073]超时命令 ID (14755523990.433077)= 0xa9、操作= 0x0
[90.562122] A9 00 08 00 01 00 00 00 00 00 00 00 00 00 00 00 00
[90.567931] BSS 类型= 0 BSS 角色= 0
您对调试有什么建议吗? (MMC4未在 器件树中配置最大频率、并且工作正常)
Prabhakar:
由于 MMC4的工作正常、我们认为 WiFi 模块和驱动程序都没有问题。
我们的 wifi 模块是 AW-CB178NF。
dmesg 信息 在附件中可见
可以给我一些建议吗?
您好、Steve
我没有看到此消息。
请查看下面的日志。
e2e.ti.com/.../2243880
您是否在 MMC1上测试 WiFi?
来自 Will Hsu
您可以将 mmc1用于 SDIO。 我在 mmc1上有 Qualcomm / Atheros SDIO WLAN 卡。 为了使其正常工作、我必须恢复此补丁 https://fr.osdn.net/projects/android-x86/scm/git/kernel/commits/5d3f6ef04d65dda92a3573841a7215fb05c347de 并将最大频率更改为64MHz。 我们仍在研究它在 192MHz 下不工作的原因。
您使用的是哪个 WLAN? 处理器 SR2.0 (您可以在0x4AE0C204上读取 ID_CODE 寄存器;对于 SR2.0、它应该是0x2B99002F)?
Steve K.