硬件 am335x lan8710 采用RMII rmii1_refclk由外部50MHz晶振提供 PHY_ID的三个管脚都拉低为 000
uboot下网口已经调通了。
但是linux下还没有通,找不到原因在哪里
我的配置如下:
/* Module pin mux for rmii1 */
static struct pinmux_config rmii1_pin_mux[] = {
{"mii1_crs.rmii1_crs_dv", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxerr.mii1_rxerr", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_txen.mii1_txen", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
{"mii1_txd1.mii1_txd1", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
{"mii1_txd0.mii1_txd0", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
{"mii1_rxd1.mii1_rxd1", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxd0.mii1_rxd0", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
{"rmii1_refclk.rmii1_refclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP},
{NULL, 0},
};
__raw_writel(0xf5,AM33XX_CTRL_REGADDR(MAC_MII_SEL));
static struct cpsw_slave_data am33xx_cpsw_slaves[] = {
{
.slave_reg_ofs = 0x208,
.sliver_reg_ofs = 0xd80,
.phy_id = "0:00",
},
{
.slave_reg_ofs = 0x308,
.sliver_reg_ofs = 0xdc0,
.phy_id = "0:01",
},
};
除了上面这3个地方要注意的 是否还有其他地方需要修改????
linux在初始化的过程中,执行到函数davinci_mdio_probe时,MDIOALIVE始终读到的值为0, 所以在get_phy_id中读MII_PHYSID1、MII_PHYSID2也会出错。
问题出在哪里?一直找不到?
在uboot下,MDIOALIVE读到的值为1