我想讓 mt7622 soc 的以太網控制器作業并面臨這個問題。我編譯mtk_soc_eth 驅動程式作為mkt_eth 模塊和我有一個入口mt7622-bananapi-bpi-r64.dts 設備樹的設備,用驅動程式不兼容。
在啟動程序中,這個模塊會自動加載到系統中(我認為在安裝 rootfs 之后):
[root@nixos:~]# lsmod | grep mtk_eth
mtk_eth 69632 0
dsa_core 98304 1 mtk_eth
它似乎注冊為平臺驅動程式:
[root@nixos:~]# ls /sys/bus/platform/drivers/mtk_soc_eth
bind module uevent unbind
同樣在啟動后我有一個平臺設備:
[root@nixos:~]# ls /sys/bus/platform/devices/1b100000.ethernet
driver_override
modalias
of_node
power
subsystem
supplier:platform:10006000.power-controller
supplier:platform:10209000.apmixedsys
supplier:platform:10210000.topckgen
supplier:platform:10211000.pinctrl
supplier:platform:1b000000.syscon
supplier:platform:1b128000.sgmiisys
uevent
waiting_for_supplier
但是,由于某種原因,它們不受約束。此外,當我嘗試手動系結它們時,出現錯誤:
[root@nixos:~]# echo '1b100000.ethernet' > /sys/bus/platform/drivers/mtk_soc_eth/bind
-bash: echo: write error: Resource temporarily unavailable
我怎么能理解為什么以太網設備沒有與驅動程式系結?
uj5u.com熱心網友回復:
嗯,看來我找到了問題所在。似乎 linux 內核有豐富的除錯選項)我啟用了動態除錯來跟蹤__driver_probe_device https://github.com/torvalds/linux/blob/master/drivers/base/dd.c#L730函式中發生的情況:
[root@nixos:~]# echo 'file dd.c p'>/sys/kernel/debug/dynamic_debug/control
[root@nixos:~]# echo 'file core.c p'>/sys/kernel/debug/dynamic_debug/control
然后嘗試系結設備驅動程式和設備:
[root@nixos:~]# echo '1b100000.ethernet' >/sys/bus/platform/drivers/mtk_soc_eth/bind
-bash: echo: write error: Resource temporarily unavailable
[root@nixos:~]# dmesg -T | tail
...
[Sat Jan 1 00:03:27 2000] bus: 'platform': __driver_probe_device: matched device 1b100000.ethernet with driver mtk_soc_eth
[Sat Jan 1 00:03:27 2000] platform 1b100000.ethernet: error -EPROBE_DEFER: supplier 1b000000.syscon not ready
似乎其中一個依賴設備 ( 1b000000.syscon) 尚未準備好(同時出于某種原因/sys/bus/platform/devices/1b100000.ethernet/waiting_for_supplier仍處于0準備狀態)。我也需要加載clk-mt7622-eth驅動程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/403469.html
標籤:
下一篇:處理bash腳本中的特殊字符
