@ -1,5 +1,5 @@
/*
* Copyright ( C ) 2006 - 2010 Freescale Semiconductor , Inc .
* Copyright ( C ) 2006 - 2011 Freescale Semiconductor , Inc .
*
* Dave Liu < daveliu @ freescale . com >
*
@ -588,9 +588,27 @@ static void phy_change(struct eth_device *dev)
{
uec_private_t * uec = ( uec_private_t * ) dev - > priv ;
# if defined(CONFIG_P1012) || defined(CONFIG_P1016) || \
defined ( CONFIG_P1021 ) | | defined ( CONFIG_P1025 )
ccsr_gur_t * gur = ( void * ) ( CONFIG_SYS_MPC85xx_GUTS_ADDR ) ;
/* QE9 and QE12 need to be set for enabling QE MII managment signals */
setbits_be32 ( & gur - > pmuxcr , MPC85xx_PMUXCR_QE9 ) ;
setbits_be32 ( & gur - > pmuxcr , MPC85xx_PMUXCR_QE12 ) ;
# endif
/* Update the link, speed, duplex */
uec - > mii_info - > phyinfo - > read_status ( uec - > mii_info ) ;
# if defined(CONFIG_P1012) || defined(CONFIG_P1016) || \
defined ( CONFIG_P1021 ) | | defined ( CONFIG_P1025 )
/*
* QE12 is muxed with LBCTL , it needs to be released for enabling
* LBCTL signal for LBC usage .
*/
clrbits_be32 ( & gur - > pmuxcr , MPC85xx_PMUXCR_QE12 ) ;
# endif
/* Adjust the interface according to speed */
adjust_link ( dev ) ;
}
@ -1198,10 +1216,21 @@ static int uec_init(struct eth_device* dev, bd_t *bd)
uec_private_t * uec ;
int err , i ;
struct phy_info * curphy ;
# if defined(CONFIG_P1012) || defined(CONFIG_P1016) || \
defined ( CONFIG_P1021 ) | | defined ( CONFIG_P1025 )
ccsr_gur_t * gur = ( void * ) ( CONFIG_SYS_MPC85xx_GUTS_ADDR ) ;
# endif
uec = ( uec_private_t * ) dev - > priv ;
if ( uec - > the_first_run = = 0 ) {
# if defined(CONFIG_P1012) || defined(CONFIG_P1016) || \
defined ( CONFIG_P1021 ) | | defined ( CONFIG_P1025 )
/* QE9 and QE12 need to be set for enabling QE MII managment signals */
setbits_be32 ( & gur - > pmuxcr , MPC85xx_PMUXCR_QE9 ) ;
setbits_be32 ( & gur - > pmuxcr , MPC85xx_PMUXCR_QE12 ) ;
# endif
err = init_phy ( dev ) ;
if ( err ) {
printf ( " %s: Cannot initialize PHY, aborting. \n " ,
@ -1228,6 +1257,12 @@ static int uec_init(struct eth_device* dev, bd_t *bd)
udelay ( 100000 ) ;
} while ( 1 ) ;
# if defined(CONFIG_P1012) || defined(CONFIG_P1016) || \
defined ( CONFIG_P1021 ) | | defined ( CONFIG_P1025 )
/* QE12 needs to be released for enabling LBCTL signal*/
clrbits_be32 ( & gur - > pmuxcr , MPC85xx_PMUXCR_QE12 ) ;
# endif
if ( err | | i < = 0 )
printf ( " warning: %s: timeout on PHY link \n " , dev - > name ) ;