@ -93,6 +93,27 @@ static const struct fixed_phy_port fixed_phy_port[] = {
CONFIG_SYS_FIXED_PHY_PORTS /* defined in board configuration file */
} ;
/*--------------------------------------------------------------------+
* BitBang MII support for ethernet ports
*
* Based from MPC8560ADS implementation
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/*
* Example board header file to define bitbang ethernet ports :
*
* # define CONFIG_SYS_BITBANG_PHY_PORT ( name ) name ,
* # define CONFIG_SYS_BITBANG_PHY_PORTS CONFIG_SYS_BITBANG_PHY_PORT ( " FSL UEC0 " )
*/
# ifndef CONFIG_SYS_BITBANG_PHY_PORTS
# define CONFIG_SYS_BITBANG_PHY_PORTS /* default is an empty array */
# endif
# if defined(CONFIG_BITBANGMII)
static const char * bitbang_phy_port [ ] = {
CONFIG_SYS_BITBANG_PHY_PORTS /* defined in board configuration file */
} ;
# endif /* CONFIG_BITBANGMII */
static void config_genmii_advert ( struct uec_mii_info * mii_info ) ;
static void genmii_setup_forced ( struct uec_mii_info * mii_info ) ;
static void genmii_restart_aneg ( struct uec_mii_info * mii_info ) ;
@ -113,6 +134,19 @@ void uec_write_phy_reg (struct eth_device *dev, int mii_id, int regnum, int valu
enet_tbi_mii_reg_e mii_reg = ( enet_tbi_mii_reg_e ) regnum ;
u32 tmp_reg ;
# if defined(CONFIG_BITBANGMII)
u32 i = 0 ;
for ( i = 0 ; i < ARRAY_SIZE ( bitbang_phy_port ) ; i + + ) {
if ( strncmp ( dev - > name , bitbang_phy_port [ i ] ,
sizeof ( dev - > name ) ) = = 0 ) {
( void ) bb_miiphy_write ( NULL , mii_id , regnum , value ) ;
return ;
}
}
# endif /* CONFIG_BITBANGMII */
ug_regs = ugeth - > uec_mii_regs ;
/* Stop the MII management read cycle */
@ -140,6 +174,19 @@ int uec_read_phy_reg (struct eth_device *dev, int mii_id, int regnum)
u32 tmp_reg ;
u16 value ;
# if defined(CONFIG_BITBANGMII)
u32 i = 0 ;
for ( i = 0 ; i < ARRAY_SIZE ( bitbang_phy_port ) ; i + + ) {
if ( strncmp ( dev - > name , bitbang_phy_port [ i ] ,
sizeof ( dev - > name ) ) = = 0 ) {
( void ) bb_miiphy_read ( NULL , mii_id , regnum , & value ) ;
return ( value ) ;
}
}
# endif /* CONFIG_BITBANGMII */
ug_regs = ugeth - > uec_mii_regs ;
/* Setting up the MII Mangement Address Register */