Hello Joan Xie,
Thanks for the reply. The configurations are in u-boot. I need the ethernet running in my u-boot first.
The dts file is from my u-boot. I have used the device tree to configure my ethernet phy and fec.
The driver config files are also similar according to your refeence link https://community.nxp.com/docs/DOC-343802.
I am using micrel ksz8081rnb phy for rmii. I am rechecking the HW design and REF_CLK period while TXEN is asserted.
Defconfig for fec , phy and cmd tools:
CONFIG_PHYLIB=y
CONFIG_PHY_ADDR_ENABLE=y
CONFIG_PHY_MICREL=y
# CONFIG_PHY_MICREL_KSZ90X1 is not set
CONFIG_PHY_MICREL_KSZ8XXX=y
CONFIG_PHY_FIXED=y
CONFIG_DM_ETH=y
CONFIG_NETDEVICES=y
CONFIG_ETHOC=y
CONFIG_FEC_MXC_SHARE_MDIO=y
CONFIG_FEC_MXC_MDIO_BASE=0x5B040000
CONFIG_FEC_MXC=y
CONFIG_MII=y
CONFIG_RMII=y
#
# Shell scripting commands
#
CONFIG_CMD_ECHO=y
CONFIG_CMD_ITEST=y
CONFIG_CMD_SOURCE=y
CONFIG_CMD_SETEXPR=y
CONFIG_CMD_NET=y
CONFIG_CMD_BOOTP=y
CONFIG_CMD_DHCP=y
CONFIG_BOOTP_BOOTPATH=y
CONFIG_BOOTP_DNS=y
CONFIG_BOOTP_GATEWAY=y
CONFIG_BOOTP_HOSTNAME=y
CONFIG_BOOTP_SUBNETMASK=y
CONFIG_CMD_TFTPBOOT=y
CONFIG_NET_TFTP_VARS=y
CONFIG_CMD_NFS=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
CONFIG_CMD_DNS=y
CONFIG_CMD_LINK_LOCAL=y
CONFIG_CMD_PCAP=y
board.h file:
/******************************************************************************************************/
/****************************** Networking config*************************************/
/******************************************************************************************************/
#define CONFIG_FEC_XCV_TYPE RMII
#define FEC_QUIRK_ENET_MAC
#define CONFIG_FEC_ENET_DEV 0
#if (CONFIG_FEC_ENET_DEV == 0)
#define IMX_FEC_BASE 0x5B040000
#define CONFIG_FEC_MXC_PHYADDR 0x01
#define CONFIG_ETHPRIME "eth0"
#endif
//#define CONFIG_PHY_MICREL
#ifndef CONFIG_LIB_RAND
#define CONFIG_LIB_RAND
#endif
//#define CONFIG_NET_RANDOM_ETHADDR
#define CONFIG_IP_DEFRAG
#define CONFIG_TFTP_BLOCKSIZE SZ_4K
#define CONFIG_TFTP_TSIZE
#define CONFIG_SERVERIP 10.0.0.1
I have also used the link as reference
The board phy_config in my board.c file:
int board_phy_config(struct phy_device *phydev)
{
//phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x8190);
if (phydev->drv->config)
phydev->drv->config(phydev);
return 0;
}