(tmp & 0x04)) {
#if defined(CONFIG_DRIVER_TI_EMAC_USE_RMII) && \
defined(CONFIG_MACH_DAVINCI_DA850_EVM)
- davinci_eth_phy_read(phy_addr, PHY_ANLPAR, &tmp);
+ davinci_eth_phy_read(phy_addr, MII_LPA, &tmp);
/* Speed doesn't matter, there is no setting for it in EMAC. */
- if (tmp & (PHY_ANLPAR_TXFD | PHY_ANLPAR_10FD)) {
+ if (tmp & (LPA_100FULL | LPA_10FULL)) {
/* set EMAC for Full Duplex */
writel(EMAC_MACCONTROL_MIIEN_ENABLE |
EMAC_MACCONTROL_FULLDUPLEX_ENABLE,
&adap_emac->MACCONTROL);
}
- if (tmp & (PHY_ANLPAR_TXFD | PHY_ANLPAR_TX))
+ if (tmp & (LPA_100FULL | LPA_100HALF))
writel(readl(&adap_emac->MACCONTROL) |
EMAC_MACCONTROL_RMIISPEED_100,
&adap_emac->MACCONTROL);
if (ch == EMAC_CH_TX) {
/* Init TX channel teardown */
- writel(1, &adap_emac->TXTEARDOWN);
+ writel(0, &adap_emac->TXTEARDOWN);
do {
/*
* Wait here for Tx teardown completion interrupt to
writel(0, &adap_emac->TX0HDP);
} else {
/* Init RX channel teardown */
- writel(1, &adap_emac->RXTEARDOWN);
+ writel(0, &adap_emac->RXTEARDOWN);
do {
/*
* Wait here for Rx teardown completion interrupt to
davinci_eth_mdio_enable();
+ /* let the EMAC detect the PHYs */
+ udelay(5000);
+
for (i = 0; i < 256; i++) {
if (readl(&adap_mdio->ALIVE))
break;
phy_id |= tmp & 0x0000ffff;
switch (phy_id) {
+ case PHY_KSZ8873:
+ sprintf(phy.name, "KSZ8873 @ 0x%02x", active_phy_addr);
+ phy.init = ksz8873_init_phy;
+ phy.is_phy_connected = ksz8873_is_phy_connected;
+ phy.get_link_speed = ksz8873_get_link_speed;
+ phy.auto_negotiate = ksz8873_auto_negotiate;
+ break;
case PHY_LXT972:
sprintf(phy.name, "LXT972 @ 0x%02x", active_phy_addr);
phy.init = lxt972_init_phy;
phy.auto_negotiate = gen_auto_negotiate;
}
- printf("Ethernet PHY: %s\n", phy.name);
+ debug("Ethernet PHY: %s\n", phy.name);
miiphy_register(phy.name, davinci_mii_phy_read, davinci_mii_phy_write);
return(1);