am6254的设备树配置 SDIO(MMC2) 与 cc3351连接,
wifi_pins_default: wifi-pins-default {
pinctrl-single,pins = <
AM62X_IOPAD(0x0120, PIN_INPUT, 0) /* (C24) MMC2_CMD */
AM62X_IOPAD(0x0118, PIN_INPUT, 0) /* (D25) MMC2_CLK */
AM62X_IOPAD(0x0114, PIN_INPUT, 0) /* (B24) MMC2_DAT0 */
AM62X_IOPAD(0x0110, PIN_INPUT, 0) /* (C25) MMC2_DAT1 */
AM62X_IOPAD(0x010c, PIN_INPUT, 0) /* (E23) MMC2_DAT2 */
AM62X_IOPAD(0x0108, PIN_INPUT, 0) /* (D24) MMC2_DAT3 */
AM62X_IOPAD(0x0124, PIN_INPUT, 0) /* (A23) MMC2_SDCD */
AM62X_IOPAD(0x11c, PIN_INPUT, 0) /* (#N/A) MMC2_CLKB */
>;
};
wifi_en_pins_default: wifi-en-pins-default {
pinctrl-single,pins = <
AM62X_IOPAD(0x009c, PIN_OUTPUT, 7) /* (V25) GPMC0_WAIT1.GPIO0_38 */
>;
};
外接3.3V电压,实际测量CC3351的SDIO接口各个引脚电平值
Vcc = 3.3V
(C24) MMC2_CMD = 0.5V
(D25) MMC2_CLK = 0.5V
(B24) MMC2_DAT0 = 0.5V
(C25) MMC2_DAT1 = 0.5V
(E23) MMC2_DAT2 = 0.5V
(D24) MMC2_DAT3 = 0.5V
IRQ_WL = 0.5V
RESET = 3.3V
GND = 0V
上面出现0.5V的电压值,不知道是什么原因引起的异常。
以下是相关设备树节点信息
wlan_en: regulator-3 {
/* OUTPUT of SN74AVC2T244DQMR */
compatible = "regulator-fixed";
regulator-name = "wlan_en";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
enable-active-high;
regulator-always-on;
vin-supply = <&vdd_3v3>;
gpio = <&main_gpio0 38 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&wifi_en_pins_default>;
};
wifi_pins_default: wifi-pins-default {
pinctrl-single,pins = <
AM62X_IOPAD(0x0120, PIN_INPUT, 0) /* (C24) MMC2_CMD */
AM62X_IOPAD(0x0118, PIN_INPUT, 0) /* (D25) MMC2_CLK */
AM62X_IOPAD(0x0114, PIN_INPUT, 0) /* (B24) MMC2_DAT0 */
AM62X_IOPAD(0x0110, PIN_INPUT, 0) /* (C25) MMC2_DAT1 */
AM62X_IOPAD(0x010c, PIN_INPUT, 0) /* (E23) MMC2_DAT2 */
AM62X_IOPAD(0x0108, PIN_INPUT, 0) /* (D24) MMC2_DAT3 */
>;
};
wifi_en_pins_default: wifi-en-pins-default {
pinctrl-single,pins = <
AM62X_IOPAD(0x009C, PIN_OUTPUT, 7) /* MMC2_SDCD (V25)GPMC0_WAIT1.GPIO0_38 */
>;
};
main_wlirq_pins_default: main-wlirq-pins-default {
pinctrl-single,pins = <
AM62X_IOPAD(0x00A8, PIN_OUTPUT, 7) /* MMC2_SDWP (M21)GPMC0_CSn0.GPIO0_41 */
>;
};
&sdhci2 {
status = "okay";
vmmc-supply = <&wlan_en>;
pinctrl-names = "default";
pinctrl-0 = <&wifi_pins_default>;
non-removable;
ti,fails-without-test-cd;
cap-power-off-card;
keep-power-in-suspend;
ti,driver-strength-ohm = <50>;
assigned-clocks = <&k3_clks 157 158>;
assigned-clock-parents = <&k3_clks 157 160>;
#address-cells = <1>;
#size-cells = <0>;
wlcore: wlcore@2 {
compatible = "ti,cc33xx";
reg = <2>;
pinctrl-names = "default";
pinctrl-0 = <&main_wlirq_pins_default>;
interrupt-parent = <&main_gpio0>;
interrupts = <41 IRQ_TYPE_EDGE_FALLING>;
};
// TI-BLE-SDIO interface
btti: btti@1 {
compatible = "ti,cc33xxbt";
reg = <1>;
};
};
您好,
从中不清楚的是,如果 MMC2的 gpio bank 供电至1.8V,也请检查一下。
在你的设备树中,wlan-en 节点不应该有 'regulator-always-on'。此引脚需要由 MPU 切换。
另外,请将 “MMC2_CLKB” 添加到您的 “wifi-pins-default” 节点中。这是 MMC 正确作所必需的。您可以在此处找到示例:
最后,如果 WL_IRQ 引脚从 CC33xx 直接连接到 MPU,那么请EDGE_RISING。如果路径之间有逆变器,则只能使用 EDGE_FALLING。
提供内核消息以查看作过程中是否有任何错误也会有所帮助。