@ -137,6 +137,24 @@ static int bcm5482_config(struct phy_device *phydev)
return 0 ;
}
static int bcm_cygnus_startup ( struct phy_device * phydev )
{
/* Read the Status (2x to make sure link is right) */
genphy_update_link ( phydev ) ;
genphy_parse_link ( phydev ) ;
return 0 ;
}
static int bcm_cygnus_config ( struct phy_device * phydev )
{
genphy_config_aneg ( phydev ) ;
phy_reset ( phydev ) ;
return 0 ;
}
/*
* Find out if PHY is in copper or serdes mode by looking at Expansion Reg
* 0x42 - " Operating Mode Status Register "
@ -264,11 +282,22 @@ static struct phy_driver BCM5482S_driver = {
. shutdown = & genphy_shutdown ,
} ;
static struct phy_driver BCM_CYGNUS_driver = {
. name = " Broadcom CYGNUS GPHY " ,
. uid = 0xae025200 ,
. mask = 0xfffff0 ,
. features = PHY_GBIT_FEATURES ,
. config = & bcm_cygnus_config ,
. startup = & bcm_cygnus_startup ,
. shutdown = & genphy_shutdown ,
} ;
int phy_broadcom_init ( void )
{
phy_register ( & BCM5482S_driver ) ;
phy_register ( & BCM5464S_driver ) ;
phy_register ( & BCM5461S_driver ) ;
phy_register ( & BCM_CYGNUS_driver ) ;
return 0 ;
}