Tool/software: Linux
Hi all,
I'm configuring for a custom board base on AM335x EVM, my custom board use KSZ9021 for Ethernet, but when board booting, the Ethernet dont work,
The log show below:
[ 1.137159] libphy: Fixed MDIO Bus: probed
[ 1.212746] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[ 1.218913] davinci_mdio 4a101000.mdio: detected phy mask ffffff7f
[ 1.225969] libphy: 4a101000.mdio: probed
[ 1.230067] davinci_mdio 4a101000.mdio: phy[7]: device 4a101000.mdio:07, driver Micrel KSZ9021 Gigabit PHY
[ 1.240568] cpsw 4a100000.ethernet: No slave[1] phy_id, phy-handle, or fixed-link property
[ 1.249082] cpsw 4a100000.ethernet: Detected MACID = 00:0c:7b:39:01:3d
[ 1.255847] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies)
[ 13.426253] net eth0: initializing cpsw version 1.12 (0)
[ 13.426264] net eth0: initialized cpsw ale version 1.4
[ 13.426270] net eth0: ALE Table size 1024
[ 13.536728] Micrel KSZ9021 Gigabit PHY 4a101000.mdio:07: attached PHY driver [Micrel KSZ9021 Gigabit PHY] (mii_bus:phy_addr=4a101000.mdio:07, irq=-1)
[ 13.537763] libphy: PHY not found
[ 13.537774] net eth0: phy "" not found on slave 1, err -19
[ 13.559195] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 18.735324] cpsw 4a100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[ 18.848835] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
When the booting process finish, the Ethernet cannot detect IP address, but when i try command: /etc/init.d/networking restart, in the firsrt time cosole show:
Reconfiguring network interfaces... ifdown: interface lo not configured
ifdown: interface eth0 not configured
ifconfig: SIOCGIFFLAGS: No such device
done.
In the second time, the console show:
[ 56.006369] net eth0: initializing cpsw version 1.12 (0)
[ 56.011735] net eth0: initialized cpsw ale version 1.4
[ 56.021736] net eth0: ALE Table size 1024
[ 56.123974] Micrel KSZ9021 Gigabit PHY 4a101000.mdio:07: attached PHY driver [Micrel KSZ9021 Gigabit PHY] (mii_bus:phy_addr=4a101000.mdio:07, irq=-1)
[ 56.138510] libphy: PHY not found
[ 56.141929] net eth0: phy "" not found on slave 1, err -19
[ 56.180079] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
ifconfig: SIOCGIFFLAGS: No such device
done.
and Ethernet can detect IP Address, can anybody help me fix this issue
This is my device tree config:
cpsw_default: cpsw_default {
pinctrl-single,pins = <
/* Slave 1 */
AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */
AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */
AM33XX_IOPAD(0x91c, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd3.rgmii1_td3 */
AM33XX_IOPAD(0x920, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd2.rgmii1_td2 */
AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */
AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */
AM33XX_IOPAD(0x92c, PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rgmii1_tclk */
AM33XX_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxclk.rgmii1_rclk */
AM33XX_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd3.rgmii1_rd3 */
AM33XX_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd2.rgmii1_rd2 */
AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd1.rgmii1_rd1 */
AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd0.rgmii1_rd0 */
>;
};
cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
AM33XX_IOPAD(0x914, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x91c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x920, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x928, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x92c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE7)
AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
davinci_mdio_default: davinci_mdio_default {
pinctrl-single,pins = <
/* MDIO */
AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
>;
};
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)
>;
};
&mac {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
// dual_emac = <1>;
status = "okay";
};
&davinci_mdio {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>;
status = "okay";
};
&cpsw_emac0 {
phy_id = <&davinci_mdio>, <7>;
phy-mode = "rgmii-txid"";
};