Hi Guys,
I am using AM335x Processor. I am interfacing it with DP83867IRR Ethernet IC. I have enabled the driver in kernel.
The PHY ID is configured as 0;
# # MII PHY device drivers # CONFIG_AT803X_PHY=y CONFIG_AMD_PHY=y CONFIG_MARVELL_PHY=y CONFIG_DAVICOM_PHY=y CONFIG_QSEMI_PHY=y CONFIG_LXT_PHY=y CONFIG_CICADA_PHY=y CONFIG_VITESSE_PHY=y CONFIG_SMSC_PHY=y CONFIG_BROADCOM_PHY=y CONFIG_BCM7XXX_PHY=y CONFIG_BCM87XX_PHY=y CONFIG_ICPLUS_PHY=y CONFIG_REALTEK_PHY=y CONFIG_NATIONAL_PHY=y CONFIG_STE10XP=y CONFIG_LSI_ET1011C_PHY=y CONFIG_MICREL_PHY=y CONFIG_DP83848_PHY=y CONFIG_DP83867_PHY=y CONFIG_FIXED_PHY=y CONFIG_MDIO_BITBANG=y CONFIG_MDIO_GPIO=y CONFIG_MDIO_BUS_MUX=y CONFIG_MDIO_BUS_MUX_GPIO=y CONFIG_MDIO_BUS_MUX_MMIOREG=y CONFIG_MDIO_BCM_UNIMAC=y # CONFIG_MICREL_KS8995MA is not set # CONFIG_PLIP is not set
I have configured the DTS file as follows
&davinci_mdio { pinctrl-names = "default", "sleep"; compatible = "ti,cpsw-mdio", "ti,davinci_mdio"; pinctrl-0 = <&davinci_mdio_default>; pinctrl-1 = <&davinci_mdio_sleep>; status = "okay"; dp83867_0: ethernet-phy@0 { reg = <0>; ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>; ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_75_NS>; ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; ti,min-output-impedance; ti,dp83867-rxctrl-strap-quirk; }; }; &cpsw_emac1 { phy_id = <&davinci_mdio>, <0>; phy-mode = "rgmii-txid"; };
The Pin Mux is as follows
cpsw_default: cpsw_default { pinctrl-single,pins = < /* Slave 1 */ 0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */ 0x118 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */ 0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd3.rgmii1_td3 */ 0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd2.rgmii1_td2 */ 0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */ 0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */ 0x12c (PIN_OUTPUT | MUX_MODE2) /* mii1_txclk.rgmii1_tclk */ 0x130 (PIN_INPUT | MUX_MODE2) /* mii1_rxclk.rgmii1_rclk */ 0x134 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd3.rgmii1_rd3 */ 0x138 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd2.rgmii1_rd2 */ 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd1.rgmii1_rd1 */ 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mii1_rxd0.rgmii1_rd0 */ >; };
If I boot it shows the following during boot-up
[ 11.254589] net eth0: initializing cpsw version 1.12 (0) [ 11.261584] libphy: PHY not found [ 11.338490] net eth0: phy not found on slave 0 [ 11.403951] net eth0: phy found : id is : 0x2000a231
If I give dmesg | grep phy, Its giving output as follows,
root@arm:~# dmesg | grep phy [ 0.000000] Booting Linux on physical CPU 0x0 [ 4.126362] libphy: Fixed MDIO Bus: probed [ 4.199525] libphy: 4a101000.mdio: probed [ 4.204942] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver TI DP83867 [ 4.214212] cpsw 4a100000.ethernet: Missing slave[0] phy_id property [ 4.284633] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer reset [ 4.284654] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup [ 4.284673] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' [ 4.284686] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' [ 4.284697] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup [ 4.284710] am335x-phy-driver 47401300.usb-phy: lookup for GPIO reset failed [ 4.284723] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer vbus-detect [ 4.284733] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup [ 4.284745] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' [ 4.284758] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]' [ 4.284769] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup [ 4.284780] am335x-phy-driver 47401300.usb-phy: lookup for GPIO vbus-detect failed [ 4.284837] 47401300.usb-phy supply vcc not found, using dummy regulator [ 4.404328] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer reset [ 4.404350] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup [ 4.404368] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' [ 4.404382] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' [ 4.404394] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup [ 4.404407] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO reset failed [ 4.404420] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer vbus-detect [ 4.404430] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup [ 4.404442] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' [ 4.404455] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401b00[0]' [ 4.404466] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup [ 4.404477] am335x-phy-driver 47401b00.usb-phy: lookup for GPIO vbus-detect failed [ 4.404531] 47401b00.usb-phy supply vcc not found, using dummy regulator [ 11.261584] libphy: PHY not found [ 11.338490] net eth0: phy not found on slave 0 [ 11.403951] net eth0: phy found : id is : 0x2000a231
If I give dmesg | grep DP83867
root@arm:~# dmesg | grep DP83867 [ 4.204942] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver TI DP83867
But the link is not up and the LED is not blinking.
Please Help !
Regards,
Vibhu