如何解决如何在MII初始化之前进行GPIO初始化
我想在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 举报,一经查实,本站将立刻删除。