imx93 EVK で外部 uSD モジュール (TI cc33xx) を起動できません。linux-imx github リポジトリからカーネルと DTS ファイルをコンパイルしてビルドし、EVK 上の eMMC から起動して実行しました。
DTS では、M.2 SDIO インターフェース usdhc3 を無効にし、usdhc2 を変更して microSD スロットをサポートするようにしました。Wi-Fi カードの電源が入り、初期化を試みますが、モジュールのリセット ピンへの接続がないため、ファームウェアのロードに失敗します。
さまざまな設定を試しましたが、CANうまく動作しません。モジュールのリセット ピンを imx 93 EVK (11x11) の 40 ピン GPIO ヘッダーに接続しようとしています。コードと EVK リファレンス・マニュアルから判断すると、imx93 40 ピン ヘッダーは gpio2 としてアドレス指定されており、DTS 設定には次の関連部分があります。
reg_usdhc2_vmmc: regulator-usdhc2 {
compatible = "regulator-fixed";
regulator-name = "WLAN_EN";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio2 7 GPIO_ACTIVE_HIGH>;
/*
* IW612 wifi chip needs more delay than other wifi chips to complete
* the host interface initialization after power up, otherwise the
* internal state of IW612 may be unstable, resulting in the failure of
* the SDIO3.0 switch voltage.
*/
startup-delay-us = <20000>;
enable-active-high;
regulator-always-on;
};
usdhc2_pwrseq: usdhc2_pwrseq {
compatible = "mmc-pwrseq-simple";
// reset-gpios = <&pcal6524 20 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
post-power-on-delay-ms = <10>;
power-off-delay-us = <80>;
};
&usdhc2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_wlan>;
mmc-pwrseq = <&usdhc2_pwrseq>;
vmmc-supply = <®_usdhc2_vmmc>;
bus-width = <4>;
keep-power-in-suspend;
cap-power-off-card;
non-removable;
max-frequency = <10000000>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
wlcore: wlcore@2 {
compatible = "ti,cc33xx";
reg = <2>;
//interrupt-parent = <&pcal6524>;
//interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
};
btti: btti@1 {
compatible = "ti,cc33xxbt";
reg = <1>;
};
};
pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp {
fsl,pins = <
MX93_PAD_SD2_RESET_B__USDHC2_RESET_B 0x31e
>;
};モジュールのリセット ピンを 40 ピン ヘッダーのピン 26 にコネクテッドしています。何が間違っているのでしょうか?リセットには EVK の別のピンを使用する必要がありますか?
こんにちは!
良さそうですね。唯一の推奨事項は、有効化とリセットに 2 つの異なる PAD を使用することです。このCASE、SAM GPIO2_IO07 を使用します。
よろしくお願いいたします。
サラス。
@Manuel_Salas返信ありがとうございます。これらの usdhc2 パーツは見た目が良いですか?
reg_usdhc2_vmmc: regulator-usdhc2 {
compatible = "regulator-fixed";
regulator-name = "WLAN_EN";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio2 7 GPIO_ACTIVE_HIGH>;
/*
* IW612 wifi chip needs more delay than other wifi chips to complete
* the host interface initialization after power up, otherwise the
* internal state of IW612 may be unstable, resulting in the failure of
* the SDIO3.0 switch voltage.
*/
startup-delay-us = <20000>;
enable-active-high;
regulator-always-on;
};
usdhc2_pwrseq: usdhc2_pwrseq {
compatible = "mmc-pwrseq-simple";
// reset-gpios = <&pcal6524 20 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
post-power-on-delay-ms = <10>;
power-off-delay-us = <80>;
};
&usdhc2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_wlan>, <&pinctrl_reg_usdhc2_vmmc>;
mmc-pwrseq = <&usdhc2_pwrseq>;
vmmc-supply = <®_usdhc2_vmmc>;
bus-width = <4>;
keep-power-in-suspend;
no-1-8-v;
cap-power-off-card;
//non-removable;
max-frequency = <10000000>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
wlcore: wlcore@2 {
compatible = "ti,cc33xx";
reg = <2>;
//interrupt-parent = <&pcal6524>;
//interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
};
btti: btti@1 {
compatible = "ti,cc33xxbt";
reg = <1>;
};
};
pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp {
fsl,pins = <
MX93_PAD_GPIO_IO07__GPIO2_IO07 0x31e
>;
};
pinctrl_usdhc2_wlan: usdhc2wlangrp {
fsl,pins = <
MX93_PAD_CCM_CLKO1__GPIO3_IO26 0x31e
>;
};または、&usdhc2 の pinctrl-0 とは異なる方法でアドレス指定する必要がありますか?
こんにちは@rtwheato
とても順調にやっていると思います。
PAD に関して混乱が生じています。
40 ピン ヘッダーの PAD 26 は &gpio2 7 (EXP_GPIO_IO07) ですが、デバイス ツリー SD2_RESET_B では別の PAD を使用しています。
PIN 26 (EXP_GPIO_IO07) を使用する場合は、次のように変更する必要があります。
MX93_PAD_GPIO_IO07__GPIO2_IO07
よろしくお願いいたします。
サラス。