问题描述
我想在TI AM3352的DUAL EMAC内部的2个PHY芯片上进行GPIO驱动的复位。
由于驱动程序不具备此功能,因此我在 mdio_bus.c 驱动程序中做了一个mod,功能为mdiobus_register_gpiod()
:
if (gpiod == NULL && mdiodev->bus && mdiodev->bus->dev.of_node) {
gpiod = fwnode_get_named_gpiod(&mdiodev->bus->dev.of_node->fwnode,"phy-reset-gpios",mdiodev->addr,GPIOD_OUT_LOW,"PHY reset");
if (gpiod)
printk("found gpiod for addr=%d\n",mdiodev->addr);
}
mdiodev->reset = gpiod;
这是我具有附加功能的设备树:
&cpsw_emac0 {
status = "okay";
phy_id = <&davinci_mdio>,<0>;
phy-mode = "mii";
dual_emac_res_vlan = <1>;
};
&cpsw_emac1 {
status = "okay";
phy_id = <&davinci_mdio>,<1>;
phy-mode = "mii";
dual_emac_res_vlan = <2>;
};
&davinci_mdio {
status = "okay";
phy-reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>,<&gpio1 1 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&mdio_pins_default>;
};
&mac {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&phy1_pins_default>,<&phy2_pins_default>;
dual_emac = <1>;
};
然而,GPIO控制器在Mdio驱动程序之后很长时间就初始化了,因此,mdio总线找不到GPIO芯片。
是否可以更早初始化GPIO?在哪里配置此优先级?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)