##這裡主要是匹配
匯流排匹配
struct bus_type mdio_bus_type =
;
從上面的結構體可以看出,linux中有多種匯流排型別.估計是從來匹配的.
例如platform的
struct bus_type platform_bus_type =
;
可以看出和猜想一致
接下來看一下我們關心的匹配的匯流排
/**
* mdio_bus_match - determine if given phy driver supports the given phy device
* @dev: target phy device
* @drv: given phy driver
* * description: given a phy device, and a phy driver, return 1 if
* the driver supports the device. otherwise, return 0.
*/static
in***io_bus_match
(struct device *dev,
struct device_driver *drv)
可以看出來是根據是根據phy_id & phy_id_mask 是否想等來確定的.
那這個函式是誰呼叫的呢?應該是核心裡面的核心吧.找不到
可以看到,最後一句裡面的東西
關於driver端
是struct phy_driver 中的 struct device_driver driver;(後來被填充了)
關於device段
MDIO匯流排相關 1
這裡主要是driver端 在drivers net phy裡面針對某一品牌的網路交換裝置有乙個檔案 例如 smsc 有乙個smsc.c 該品牌有多個裝置.每個裝置對應乙個結構體,因此組成了乙個結構體陣列 陣列元素型別 struct phy driver 陣列元素舉例 針對陣列中的每個元素都會註冊一次...
MDIO匯流排相關 4
mdio 在drivers net ethernet hieth gmac 下面有乙個檔案higmac.c 裡面實現了乙個platform框架,並且建立了乙個雜項裝置.ret platform device register higmac platform device if ret ret pla...
L3匯流排介面
下面介紹一下l3匯流排介面 一些codec 晶元中使用,eg uda1341 l3就是line 3 3條線 的意思,它只有l3data 資料線 用於傳輸資料 l3mode 模式線 用於選擇模式 l3clock 時鐘線 用於傳輸時鐘 l3一共有兩個模式 位址模式和資料傳輸模式,先傳輸位址模式資料,再傳...