@ -35,7 +35,7 @@ static int init_phy(struct eth_device *dev)
return - 1 ;
}
priv - > phydev = phydev ;
wriop_set_phy_dev ( priv - > dpmac_id , phydev ) ;
return phy_config ( phydev ) ;
}
@ -388,6 +388,7 @@ static int ldpaa_eth_open(struct eth_device *net_dev, bd_t *bd)
struct mii_dev * bus ;
phy_interface_t enet_if ;
struct dpni_queue d_queue ;
struct phy_device * phydev = NULL ;
if ( net_dev - > state = = ETH_STATE_ACTIVE )
return 0 ;
@ -408,38 +409,41 @@ static int ldpaa_eth_open(struct eth_device *net_dev, bd_t *bd)
goto err_dpmac_setup ;
# ifdef CONFIG_PHYLIB
if ( priv - > phydev ) {
err = phy_startup ( priv - > phydev ) ;
phydev = wriop_get_phy_dev ( priv - > dpmac_id ) ;
if ( phydev ) {
err = phy_startup ( phydev ) ;
if ( err ) {
printf ( " %s: Could not initialize \n " ,
priv - > p hydev - > dev - > name ) ;
phydev - > dev - > name ) ;
goto err_dpmac_bind ;
}
}
# else
priv - > phydev = ( struct phy_device * ) malloc ( sizeof ( struct phy_device ) ) ;
memset ( priv - > phydev , 0 , sizeof ( struct phy_device ) ) ;
phydev = ( struct phy_device * ) malloc ( sizeof ( struct phy_device ) ) ;
memset ( phydev , 0 , sizeof ( struct phy_device ) ) ;
wriop_set_phy_dev ( priv - > dpmac_id , phydev ) ;
priv - > p hydev - > speed = SPEED_1000 ;
priv - > p hydev - > link = 1 ;
priv - > p hydev - > duplex = DUPLEX_FULL ;
phydev - > speed = SPEED_1000 ;
phydev - > link = 1 ;
phydev - > duplex = DUPLEX_FULL ;
# endif
bus = wriop_get_mdio ( priv - > dpmac_id ) ;
enet_if = wriop_get_enet_if ( priv - > dpmac_id ) ;
if ( ( bus = = NULL ) & &
( enet_if = = PHY_INTERFACE_MODE_XGMII ) ) {
priv - > p hydev = ( struct phy_device * )
phydev = ( struct phy_device * )
malloc ( sizeof ( struct phy_device ) ) ;
memset ( priv - > phydev , 0 , sizeof ( struct phy_device ) ) ;
memset ( phydev , 0 , sizeof ( struct phy_device ) ) ;
wriop_set_phy_dev ( priv - > dpmac_id , phydev ) ;
priv - > p hydev - > speed = SPEED_10000 ;
priv - > p hydev - > link = 1 ;
priv - > p hydev - > duplex = DUPLEX_FULL ;
phydev - > speed = SPEED_10000 ;
phydev - > link = 1 ;
phydev - > duplex = DUPLEX_FULL ;
}
if ( ! priv - > p hydev - > link ) {
printf ( " %s: No link. \n " , priv - > p hydev - > dev - > name ) ;
if ( ! phydev - > link ) {
printf ( " %s: No link. \n " , phydev - > dev - > name ) ;
err = - 1 ;
goto err_dpmac_bind ;
}
@ -476,17 +480,17 @@ static int ldpaa_eth_open(struct eth_device *net_dev, bd_t *bd)
return err ;
}
dpmac_link_state . rate = priv - > p hydev - > speed ;
dpmac_link_state . rate = phydev - > speed ;
if ( priv - > p hydev - > autoneg = = AUTONEG_DISABLE )
if ( phydev - > autoneg = = AUTONEG_DISABLE )
dpmac_link_state . options & = ~ DPMAC_LINK_OPT_AUTONEG ;
else
dpmac_link_state . options | = DPMAC_LINK_OPT_AUTONEG ;
if ( priv - > p hydev - > duplex = = DUPLEX_HALF )
if ( phydev - > duplex = = DUPLEX_HALF )
dpmac_link_state . options | = DPMAC_LINK_OPT_HALF_DUPLEX ;
dpmac_link_state . up = priv - > p hydev - > link ;
dpmac_link_state . up = phydev - > link ;
err = dpmac_set_link_state ( dflt_mc_io , MC_CMD_NO_FLAGS ,
priv - > dpmac_handle , & dpmac_link_state ) ;
@ -530,7 +534,7 @@ static int ldpaa_eth_open(struct eth_device *net_dev, bd_t *bd)
goto err_qdid ;
}
return priv - > p hydev - > link ;
return phydev - > link ;
err_qdid :
err_get_queue :
@ -556,6 +560,7 @@ static void ldpaa_eth_stop(struct eth_device *net_dev)
# ifdef CONFIG_PHYLIB
struct mii_dev * bus = wriop_get_mdio ( priv - > dpmac_id ) ;
# endif
struct phy_device * phydev = NULL ;
if ( ( net_dev - > state = = ETH_STATE_PASSIVE ) | |
( net_dev - > state = = ETH_STATE_INIT ) )
@ -588,11 +593,12 @@ static void ldpaa_eth_stop(struct eth_device *net_dev)
printf ( " dpni_disable() failed \n " ) ;
# ifdef CONFIG_PHYLIB
if ( priv - > phydev & & bus ! = NULL )
phy_shutdown ( priv - > phydev ) ;
else {
free ( priv - > phydev ) ;
priv - > phydev = NULL ;
phydev = wriop_get_phy_dev ( priv - > dpmac_id ) ;
if ( phydev & & bus ) {
phy_shutdown ( phydev ) ;
} else {
free ( phydev ) ;
wriop_set_phy_dev ( priv - > dpmac_id , NULL ) ;
}
# endif