NXPチームの皆様、こんにちは。
私はi.MX93 SoMと、RMIIモードの外部LAN8720A PHYを使用しています。
イーサネットインターフェースの初期化に失敗し、以下のエラーが報告されます:
imx-dwmac 428a0000.イーサネット eth1:
PHY [stmmac-1:00] ドライバー [SMSC LAN8710/LAN8720]
imx-dwmac 428a0000.イーサネット:
DMAのリセットに失敗しました
stmmac_hw_setup: DMAエンジンの初期化に失敗しました
__stmmac_open: ハードウェアセットアップに失敗しました
dmsg レスポンス
oot@myd-lmx9x:~# dmesg |グレップ -I eth
[ 0.000000] OF: 予約済みメモリ:初期化されたノードethosu_region@B0000000、互換性のあるid shared-dma-pool(共有済みDMA-プール)
[ 0.000000] PSCI:DTからの導管方法のプロービング。
[ 0.953397 ] FEC 42890000.イーサネット:無効MACアドレス:00:00:00:00:00:00
[ 0.960228] fec 42890000.イーサネット:ランダムMACアドレスの使用:b2:da:68:e1:93:b7
[ 0.970863] hns3: Hisilicon Ethernet Network Driver for Hip08 ファミリー - バージョン
[ 1.008422] igb: Intel(R) ギガビットイーサネットネットワークドライバー
[ 1.071474] USBcore:新インターフェースドライバーKawethに登録
[ 1.082559] USBCORE:新インターフェースドライバー登録済み cdc_ether
[ 1.646174] optee:導管方法のプロービング。
[ 1.744525] Bluetooth: BNEP(イーサネットエミュレーション) バージョン1.3
[ 2.560730] FEC 42890000.イーサネット eth0: 登録済みPHCデバイス0
[ 2.567579] IMX-DWMAC 428A0000.イーサネット:IRQ eth_lpi見つかりません
[ 2.573824] imx-dwmac 428a0000.イーサネット:ユーザーID:0x10、Synopsys ID:0x52
[ 2.580662] IMX-DWMAC 428a0000.イーサネット:DWMAC4/5
[ 2.585448] imx-dwmac 428a0000.イーサネット:DMAハードウェア機能レジスタのサポート
[ 2.592568] IMX-DWMAC 428A0000.イーサネット:RXチェックサムオフロードエンジンのサポート
[ 2.599692] IMX-DWMAC 428A0000.イーサネット:TXチェックサム挿入のサポート
[ 2.606382] IMX-DWMAC 428A0000.イーサネット:ウェイクアップ・オン・ラン支援
[ 2.612538] IMX-DWMAC 428A0000.イーサネット:ハードウェアウォッチドッグタイマーによるRX軽減を有効にする
[ 2.620184] IMX-DWMAC 428A0000.イーサネット:有効化されたL3L4フローTC(エントリ=8)
[ 2.626958] imx-dwmac 428a0000.イーサネット:有効化されたRFSフローTC(エントリ=10)
[ 2.633749] IMX-DWMAC 428A0000.イーサネット:ハードウェアTCの有効化(エントリ=256、 max_off=256)
[ 2.641316] IMX-DWMAC 428A0000.イーサネット:32/32ビットDMAホスト/デバイス幅を使用
[ 5.034969] systemd[1]: /lib/systemd/system/proftpd.service:8:標準出力タイプ syslog は廃止されました。自動的に journal に更新されます。ユニットファイルを更新し、設定自体を削除することを検討してください。
[ 9.808139 ] SMSC LAN8710/LAN8720 42890000.イーサネット-1:00:phy_poll_reset失敗:-110
[ 9.872078] FEC 42890000.ethernet eth0: phyに接続できません
[ 9.879398 IMX-DWMAC 428a0000.ethernet eth1: レジスタ MEM_TYPE_PAGE_POOL RxQ-0
[ 10.892065] imx-dwmac 428a0000.ethernet eth1: __stmmac_open: PHYに接続できません(エラー:-110)
[ 10.900872 IMX-DWMAC 428a0000.ethernet eth1: レジスタ MEM_TYPE_PAGE_POOL RxQ-0
[ 11.904042] imx-dwmac 428a0000.ethernet eth1: __stmmac_open: PHYに接続できません(エラー: -110)
[ 12.838630] SMSC LAN8710/LAN8720 42890000.ethernet-1:00:phy_poll_reset失敗:-110
[ 12.896039] fec 42890000.イーサネット eth0: phyに接続できません
[ 12.899637] imx-dwmac 428a0000.イーサネット eth1: レジスタ MEM_TYPE_PAGE_POOL RxQ-0
[ 13.904038] imx-dwmac 428a0000.イーサネット eth1: __stmmac_open: PHYに接続できません(エラー: -110)
[ 289.712584] imx-dwmac 428a0000.イーサネット eth1: レジスタ MEM_TYPE_PAGE_POOL RxQ-0
[ 290.740032] imx-dwmac 428a0000.イーサネット eth1: __stmmac_open: PHYに接続できません(エラー:-110)
[ 322.123525] imx-dwmac 428a0000.イーサネット eth1: レジスタ MEM_TYPE_PAGE_POOL RxQ-0
[ 323.104042] imx-dwmac 428a0000.イーサネット eth1: __stmmac_open: PHYに接続できません(エラー:-110)
[ 655.579526] imx-dwmac 428a0000.イーサネット eth1: レジスタ MEM_TYPE_PAGE_POOL RxQ-0
[ 656.612033] imx-dwmac 428a0000.イーサネット eth1: __stmmac_open: PHYに接続できません(エラー: -110)
ステップ1 — EQoSを分離する
FECを一時的に無効にする:
&fec {
status = "無効";
};
次に起動して確認します。
dmesg | grep -Ei "dwmac|stmmac|eqos|mdio|phy|LAN87"
PHYは4289000.イーサネットではなく、EQoS/stmmacのMDIOバスの下で見たいです。
ステップ2 — MDIOを手動で検証する
mdio-toolまたはphytoolをお持ちの場合:
phytool read eth1/0/2
phytool read eth1/0/3
LAN8720AのPHY IDは読み取り可能である必要があります。読み取りがタイムアウトするか、すべて0xffff/0x0000を返す場合、これはハードウェア/MDIO/リセット/クロックの問題であり、IPスタックの問題ではありません。
ステップ3 — クロックツリーの検証
cat /sys/kernel/debug/clk/clk_summary | grep -Ei "enet|qos"
また、そのピン上のRMII基準クロックも測定してください。NXP RMIIスレッドでは、期待される50 MHzクロックの生成とDTSアップデートを<100000000> <50000000>で記録しています。
ステップ4 — ドライバーパッチの状態を確認する
grep -n "RMII_RESET_SPEED\|imx_dwmac_mx93_reset\|fix_soc_reset" \
ドライバ/NET/イーサネット/STmicro/STMaC/DWMAC-IMX.C
存在しない場合は、i.MX93 RMII DMAリセットパッチを適用/バックポートしてください。上流パッチでは、i.MX93リセットロジックに対応しており、完全なリセットにはRMIIモードで正しいインターフェース速度を設定する必要があると記載されています。( https://www.spinics.net/lists/netdev/msg894184.html )