diff options
| author | Sergei Poselenov <sposelenov@emcraft.com> | 2008-06-06 15:52:44 +0200 | 
|---|---|---|
| committer | Ben Warren <biggerbadderben@gmail.com> | 2008-09-02 21:18:14 -0700 | 
| commit | d23dc394aa69093b6326ad917db04dc0d1aff3f8 (patch) | |
| tree | ae646f06118ef53105f64ee7aec00ba7640da90f /drivers/net/tsec.c | |
| parent | e99e9575bbeba1b7c48e046547cae065ec0071de (diff) | |
| download | olio-uboot-2014.01-d23dc394aa69093b6326ad917db04dc0d1aff3f8.tar.xz olio-uboot-2014.01-d23dc394aa69093b6326ad917db04dc0d1aff3f8.zip | |
PHY: Add support for the M88E1121R Marvell chip.
Signed-off-by: Yuri Tikhonov <yur@emcraft.com>
Signed-off-by: Sergei Poselenov <sposelenov@emcraft.com>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
Diffstat (limited to 'drivers/net/tsec.c')
| -rw-r--r-- | drivers/net/tsec.c | 49 | 
1 files changed, 49 insertions, 0 deletions
| diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index 6e0f2c6fd..e50d516f5 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -1157,6 +1157,54 @@ struct phy_info phy_info_M88E1118 = {  		},  }; +/* + *  Since to access LED register we need do switch the page, we + * do LED configuring in the miim_read-like function as follows + */ +uint mii_88E1121_set_led (uint mii_reg, struct tsec_private *priv) +{ +	uint pg; + +	/* Switch the page to access the led register */ +	pg = read_phy_reg(priv, MIIM_88E1121_PHY_PAGE); +	write_phy_reg(priv, MIIM_88E1121_PHY_PAGE, MIIM_88E1121_PHY_LED_PAGE); + +	/* Configure leds */ +	write_phy_reg(priv, MIIM_88E1121_PHY_LED_CTRL, +		      MIIM_88E1121_PHY_LED_DEF); + +	/* Restore the page pointer */ +	write_phy_reg(priv, MIIM_88E1121_PHY_PAGE, pg); +	return 0; +} + +struct phy_info phy_info_M88E1121R = { +	0x01410cb, +	"Marvell 88E1121R", +	4, +	(struct phy_cmd[]){	/* config */ +			   /* Reset and configure the PHY */ +			   {MIIM_CONTROL, MIIM_CONTROL_RESET, NULL}, +			   {MIIM_GBIT_CONTROL, MIIM_GBIT_CONTROL_INIT, NULL}, +			   {MIIM_ANAR, MIIM_ANAR_INIT, NULL}, +			   /* Configure leds */ +			   {MIIM_88E1121_PHY_LED_CTRL, miim_read, +			    &mii_88E1121_set_led}, +			   {MIIM_CONTROL, MIIM_CONTROL_INIT, &mii_cr_init}, +			   {miim_end,} +			   }, +	(struct phy_cmd[]){	/* startup */ +			   /* Status is read once to clear old link state */ +			   {MIIM_STATUS, miim_read, NULL}, +			   {MIIM_STATUS, miim_read, &mii_parse_sr}, +			   {MIIM_STATUS, miim_read, &mii_parse_link}, +			   {miim_end,} +			   }, +	(struct phy_cmd[]){	/* shutdown */ +			   {miim_end,} +			   }, +}; +  static unsigned int m88e1145_setmode(uint mii_reg, struct tsec_private *priv)  {  	uint mii_data = read_phy_reg(priv, mii_reg); @@ -1522,6 +1570,7 @@ struct phy_info *phy_info[] = {  	&phy_info_M88E1011S,  	&phy_info_M88E1111S,  	&phy_info_M88E1118, +	&phy_info_M88E1121R,  	&phy_info_M88E1145,  	&phy_info_M88E1149S,  	&phy_info_dm9161, |