本帖最后由 xuesong10210 于 2020-6-24 14:06 编辑
最近的linux上移植am335x的以太网,遇到一些问题,希望路过的大神指点一下。
我用的官方的SDK,linux内核版本是4.19.35。两个网口都采用的是rmii接口。现在出现的问题是eth0可以正常使用,但是eth1一直包找不到phy的错误。
eth0用的是rmii1,eth1用的是rmii2. 两个网口用的PHY都是lan7820。soc用的是2.x的版本!!!PHY ID和引脚对应关系也都确认了没有啥问题!
dts配置如下:
cpsw_default: cpsw_default {
pinctrl-single,pins = <
/* Slave 1 */
AM33XX_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_crs.rmii1_crs */
AM33XX_IOPAD(0x910, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxerr.rmii1_rxerr */
AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txen.rmii1_txen */
AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd1.rmii1_txd1 */
AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd0.rmii1_txd0 */
AM33XX_IOPAD(0x93c, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd1.rmii1_rxd1 */
AM33XX_IOPAD(0x940, PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd0.rmii1_rxd0 */
AM33XX_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii1_ref_clk.rmii_ref_clk */
/* Slave 2 */
AM33XX_IOPAD(0x1320, 0x01)
AM33XX_IOPAD(0x864, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /*gpmc_a9.rmii2_crs*/
AM33XX_IOPAD(0x874, PIN_INPUT_PULLUP | MUX_MODE3) /*gpmc_wpn.rmii2_rxerr */
AM33XX_IOPAD(0x840, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /*gpmc_a0.rmii2_txen*/
AM33XX_IOPAD(0x850, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /*gpmc_a4.rmii_txd1*/
AM33XX_IOPAD(0x854, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /*gpmc_a5.rmii_txd0*/
AM33XX_IOPAD(0x868, PIN_INPUT_PULLUP | MUX_MODE3) /*gpmc_a10.rmii_rxd1*/
AM33XX_IOPAD(0x86C, PIN_INPUT_PULLUP | MUX_MODE3) /*gpmc_a11.rmii_rxd0*/
AM33XX_IOPAD(0x908, PIN_INPUT_PULLDOWN | MUX_MODE1) /*mii_col.rmii2_refclk*/
>;
};
cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
AM33XX_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x914, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x928, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE7)
/* Slave 2 reset value */
AM33XX_IOPAD(0x864, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x874, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x840, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x850, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x854, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x868, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x86C, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x908, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
davinci_mdio_default: davinci_mdio_default {
pinctrl-single,pins = <
/* mdio_data.mdio_data */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)
/* mdio_clk.mdio_clk */
AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0)
>;
};
davinci_mdio_sleep: davinci_mdio_sleep {
pinctrl-single,pins = <
/* MDIO reset value */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x94c, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
/* Ethernet */
&mac {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
status = "okay";
dual_emac;
};
&davinci_mdio {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>;
status = "okay";
};
&cpsw_emac0 {
phy_id = <&davinci_mdio>,<1>;
dual_emac_res_vlan = <2>;
phy-mode = "rmii";
reset-gpio = <&gpio0 2 GPIO_ACTIVE_LOW>;
};
&cpsw_emac1 {
phy_id = <&davinci_mdio>,<0>;
dual_emac_res_vlan = <1>;
phy-mode = "rmii";
reset-gpio = <&gpio2 1 GPIO_ACTIVE_LOW>;
};
&phy_sel {
rmii-clock-ext;
};
|