Part Number:PROCESSOR-SDK-AM335X
Tool/software: Linux
I configured dual mac mode in the kernel. The eth0 is OK, but eth1 always show the following messages when connected ,even if I close the eth0 ( ifconfig eth0 down).
[ 46.248456] net eth1: initializing cpsw version 1.12 (0)
[ 46.349274] Micrel KSZ8041 4a101000.mdio:03: attached PHY driver [Micrel KSZ8041] (mii_bus:phy_addr=4a101000.mdio:03, irq=POLL)
[ 46.390027] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
root@am335x-evm:~# [ 76.490116] cpsw 4a100000.ethernet eth1: Link is Up - 100Mbps/Full - flow control rx/tx
[ 76.498348] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[ 79.609796] cpsw 4a100000.ethernet eth1: Link is Down
[ 90.009966] cpsw 4a100000.ethernet eth1: Link is Up - 100Mbps/Full - flow control rx/tx
[ 92.089768] cpsw 4a100000.ethernet eth1: Link is Down
[ 95.210342] cpsw 4a100000.ethernet eth1: Link is Up - 100Mbps/Full - flow control rx/tx
[ 97.289748] cpsw 4a100000.ethernet eth1: Link is Down
[ 103.529996] cpsw 4a100000.ethernet eth1: Link is Up - 100Mbps/Full - flow control rx/tx
[ 105.609918] cpsw 4a100000.ethernet eth1: Link is Down
[ 133.689984] cpsw 4a100000.ethernet eth1: Link is Up - 100Mbps/Full - flow control rx/tx
[ 135.769816] cpsw 4a100000.ethernet eth1: Link is Down
....
Following is my DTS:
cpsw_default: cpsw_default {
57 pinctrl-single,pins = <
58 /* Slave 1 */
59 AM33XX_IOPAD(0x90c, (PIN_INPUT_PULLUP | MUX_MODE1)) /* mii1_crs.rmii1_crs_dv */
60 AM33XX_IOPAD(0x944, (PIN_INPUT_PULLUP | MUX_MODE0)) /* rmii1_refclk.rmii1_refclk */
61 AM33XX_IOPAD(0x940, (PIN_INPUT_PULLUP | MUX_MODE1)) /* mii1_rxd0.rmii1_rxd0 */
62 AM33XX_IOPAD(0x93c, (PIN_INPUT_PULLUP | MUX_MODE1)) /* mii1_rxd1.rmii1_rxd1 */
63 AM33XX_IOPAD(0x910, (PIN_INPUT_PULLUP | MUX_MODE1)) /* mii1_rxerr.rmii1_rxerr */
64 AM33XX_IOPAD(0x928, (PIN_OUTPUT_PULLDOWN | MUX_MODE1)) /* mii1_txd0.rmii1_txd0 */
65 AM33XX_IOPAD(0x924, (PIN_OUTPUT_PULLDOWN | MUX_MODE1)) /* mii1_txd1.rmii1_txd1 */
66 AM33XX_IOPAD(0x914, (PIN_OUTPUT_PULLDOWN | MUX_MODE1)) /* mii1_txen.rmii1_txen */
67
68 /* Slave 2, RMII mode */
69 AM33XX_IOPAD(0x870, (PIN_INPUT_PULLUP | MUX_MODE3)) /* gpmc_wait0.rmii2_crs_dv */
70 AM33XX_IOPAD(0x908, (PIN_INPUT_PULLUP | MUX_MODE1)) /* mii1_col.rmii2_refclk */
71 AM33XX_IOPAD(0x86c, (PIN_INPUT_PULLUP | MUX_MODE3)) /* gpmc_a11.rmii2_rxd0 */
72 AM33XX_IOPAD(0x868, (PIN_INPUT_PULLUP | MUX_MODE3)) /* gpmc_a10.rmii2_rxd1 */
73 AM33XX_IOPAD(0x874, (PIN_INPUT_PULLUP | MUX_MODE3)) /* gpmc_wpn.rmii2_rxerr */
74 AM33XX_IOPAD(0x854, (PIN_OUTPUT_PULLDOWN | MUX_MODE3)) /* gpmc_a5.rmii2_txd0 */
75 AM33XX_IOPAD(0x850, (PIN_OUTPUT_PULLDOWN | MUX_MODE3)) /* gpmc_a4.rmii2_txd1 */
76 AM33XX_IOPAD(0x840, (PIN_OUTPUT_PULLDOWN | MUX_MODE3)) /* gpmc_a0.rmii2_txen */
77 >;
78 };
cpsw_sleep: cpsw_sleep {
81 pinctrl-single,pins = <
82 /* Slave 1 reset value */
83 AM33XX_IOPAD(0x90c, (PIN_INPUT_PULLDOWN | MUX_MODE7))
84 AM33XX_IOPAD(0x944, (PIN_INPUT_PULLDOWN | MUX_MODE7))
85 AM33XX_IOPAD(0x940, (PIN_INPUT_PULLDOWN | MUX_MODE7))
86 AM33XX_IOPAD(0x93c, (PIN_INPUT_PULLDOWN | MUX_MODE7))
87 AM33XX_IOPAD(0x910, (PIN_INPUT_PULLDOWN | MUX_MODE7))
88 AM33XX_IOPAD(0x928, (PIN_INPUT_PULLDOWN | MUX_MODE7))
89 AM33XX_IOPAD(0x924, (PIN_INPUT_PULLDOWN | MUX_MODE7))
90 AM33XX_IOPAD(0x914, (PIN_INPUT_PULLDOWN | MUX_MODE7))
91
92 /* Slave 2 reset value */
93 AM33XX_IOPAD(0x870, (PIN_INPUT_PULLDOWN | MUX_MODE7))
94 AM33XX_IOPAD(0x908, (PIN_INPUT_PULLDOWN | MUX_MODE7))
95 AM33XX_IOPAD(0x86c, (PIN_INPUT_PULLDOWN | MUX_MODE7))
96 AM33XX_IOPAD(0x868, (PIN_INPUT_PULLDOWN | MUX_MODE7))
97 AM33XX_IOPAD(0x874, (PIN_INPUT_PULLDOWN | MUX_MODE7))
98 AM33XX_IOPAD(0x854, (PIN_INPUT_PULLDOWN | MUX_MODE7))
99 AM33XX_IOPAD(0x850, (PIN_INPUT_PULLDOWN | MUX_MODE7))
100 AM33XX_IOPAD(0x840, (PIN_INPUT_PULLDOWN | MUX_MODE7))
101 >;
102 };
103
104 davinci_mdio_default: davinci_mdio_default {
105 pinctrl-single,pins = <
106 /* MDIO */
107 AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
108 AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
109 >;
110 };
111
112 davinci_mdio_sleep: davinci_mdio_sleep {
113 pinctrl-single,pins = <
114 /* MDIO reset value */
115 AM33XX_IOPAD(0x948, PIN_INPUT_PULLDOWN | MUX_MODE7)
116 AM33XX_IOPAD(0x94c, PIN_INPUT_PULLDOWN | MUX_MODE7)
117 >;
118 };
.....
&cpsw_emac0 {
251 phy_id = <&davinci_mdio>, <1>;
252 phy-mode = "rmii";
253 dual-emac-res-vlan = <3>;
254 };
255
256 &cpsw_emac1 {
257 phy_id = <&davinci_mdio>, <3>;
258 phy-mode = "rmii";
259 dual-emac-res-vlan = <4>;
260 };
261
262 &mac {
263 slaves = <2>;
264 pinctrl-names = "default", "sleep";
265 pinctrl-0 = <&cpsw_default>;
266 pinctrl-1 = <&cpsw_sleep>;
267 dual_emac = <1>;
268 status = "okay";
269 };
270
271 &davinci_mdio {
272 pinctrl-names = "default", "sleep";
273 pinctrl-0 = <&davinci_mdio_default>;
274 pinctrl-1 = <&davinci_mdio_sleep>;
275 status = "okay";
276 };
I have configured the SMA2's first bit to be 1.
.I use the ti-processor-sdk-linux-rt-am335x-evm-05.00.00.15.My board is the custom board.