@ -238,7 +238,6 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis)
DECLARE_GLOBAL_DATA_PTR ;
mpc5xxx_fec_priv * fec = ( mpc5xxx_fec_priv * ) dev - > priv ;
struct mpc5xxx_sdma * sdma = ( struct mpc5xxx_sdma * ) MPC5XXX_SDMA ;
const uint8 phyAddr = CONFIG_PHY_ADDR ; /* Only one PHY */
# if (DEBUG & 0x1)
printf ( " mpc5xxx_fec_init... Begin \n " ) ;
@ -251,17 +250,6 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis)
mpc5xxx_fec_tbd_init ( fec ) ;
/*
* Initialize GPIO pins
*/
if ( fec - > xcv_type = = SEVENWIRE ) {
/* 10MBit with 7-wire operation */
* ( vu_long * ) MPC5XXX_GPS_PORT_CONFIG | = 0x00020000 ;
} else {
/* 100MBit with MD operation */
* ( vu_long * ) MPC5XXX_GPS_PORT_CONFIG | = 0x00050000 ;
}
/*
* Clear FEC - Lite interrupt event register ( IEVENT )
*/
fec - > eth - > ievent = 0xffffffff ;
@ -371,6 +359,68 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis)
* ( int * ) FEC_TBD_NEXT = ( int ) fec - > tbdBase ;
* ( int * ) FEC_RBD_NEXT = ( int ) fec - > rbdBase ;
/*
* Enable FEC - Lite controller
*/
fec - > eth - > ecntrl | = 0x00000006 ;
# if (DEBUG & 0x2)
if ( fec - > xcv_type ! = SEVENWIRE )
mpc5xxx_fec_phydump ( ) ;
# endif
/*
* Enable SmartDMA receive task
*/
SDMA_TASK_ENABLE ( FEC_RECV_TASK_NO ) ;
# if (DEBUG & 0x1)
printf ( " mpc5xxx_fec_init... Done \n " ) ;
# endif
return 1 ;
}
/********************************************************************/
static int mpc5xxx_fec_init_phy ( struct eth_device * dev , bd_t * bis )
{
DECLARE_GLOBAL_DATA_PTR ;
mpc5xxx_fec_priv * fec = ( mpc5xxx_fec_priv * ) dev - > priv ;
const uint8 phyAddr = CONFIG_PHY_ADDR ; /* Only one PHY */
# if (DEBUG & 0x1)
printf ( " mpc5xxx_fec_init_phy... Begin \n " ) ;
# endif
/*
* Initialize GPIO pins
*/
if ( fec - > xcv_type = = SEVENWIRE ) {
/* 10MBit with 7-wire operation */
* ( vu_long * ) MPC5XXX_GPS_PORT_CONFIG | = 0x00020000 ;
} else {
/* 100MBit with MD operation */
* ( vu_long * ) MPC5XXX_GPS_PORT_CONFIG | = 0x00050000 ;
}
/*
* Clear FEC - Lite interrupt event register ( IEVENT )
*/
fec - > eth - > ievent = 0xffffffff ;
/*
* Set interrupt mask register
*/
fec - > eth - > imask = 0x00000000 ;
if ( fec - > xcv_type ! = SEVENWIRE ) {
/*
* Set MII_SPEED = ( 1 / ( mii_speed * 2 ) ) * System Clock
* and do not drop the Preamble .
*/
fec - > eth - > mii_speed = ( ( ( gd - > ipb_clk > > 20 ) / 5 ) < < 1 ) ; /* No MII for 7-wire mode */
}
if ( fec - > xcv_type ! = SEVENWIRE ) {
/*
* Initialize PHY ( LXT971A ) :
@ -486,23 +536,14 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis)
}
/*
* Enable FEC - Lite controller
*/
fec - > eth - > ecntrl | = 0x00000006 ;
# if (DEBUG & 0x2)
if ( fec - > xcv_type ! = SEVENWIRE )
mpc5xxx_fec_phydump ( ) ;
# endif
/*
* Enable SmartDMA receive task
*/
SDMA_TASK_ENABLE ( FEC_RECV_TASK_NO ) ;
# if (DEBUG & 0x1)
printf ( " mpc5xxx_fec_init... Done \n " ) ;
printf ( " mpc5xxx_fec_init_phy... Done \n " ) ;
# endif
return 1 ;
@ -859,6 +900,7 @@ int mpc5xxx_fec_initialize(bd_t * bis)
mpc5xxx_fec_set_hwaddr ( fec , env_enetaddr ) ;
}
mpc5xxx_fec_init_phy ( dev , bis ) ;
return 1 ;
}