
Hi Detlev,
Detlev Zundel wrote:
Hi Ben,
Signed-off-by: Yuri Tikhonov yur@emcraft.com Signed-off-by: Sergei Poselenov sposelenov@emcraft.com
Added to GNATS database as unassigned-patches/24
Responsible: patch-coord Message-Id: 1218807733-26929-1-git-send-email-dzu@denx.de In-Reply-To: References: Patch-Date: Fri Aug 15 15:42:08 +0200 2008
drivers/net/tsec.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ drivers/net/tsec.h | 7 +++++++ 2 files changed, 57 insertions(+), 0 deletions(-)
Any comments on this patch?
Thanks Detlev
Hi Detlev,
It looks like this one slipped through the cracks. I've looked through my e-mails and found one from Wolfgang on 6/8 where he said he'd apply it, so I acked the patch rather than pulling it myself. For whatever reason, it didn't make it in.
I've rejigged the patch to apply to TOT, and have applied to the net repo. Please find the fixed-up patch attached, as applied to e99e9575bbeba1b7c48e046547cae065ec0071de
[PATCH] PHY: Add support for the M88E1121R Marvell chip.
From: Sergei Poselenov sposelenov@emcraft.com
Signed-off-by: Yuri Tikhonov yur@emcraft.com Signed-off-by: Sergei Poselenov sposelenov@emcraft.com --- drivers/net/tsec.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ drivers/net/tsec.h | 7 +++++++ 2 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index c7af930..565da5c 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); @@ -1521,6 +1569,7 @@ struct phy_info *phy_info[] = { &phy_info_BCM5464S, &phy_info_M88E1011S, &phy_info_M88E1111S, &phy_info_M88E1118, + &phy_info_M88E1121R, &phy_info_M88E1145, &phy_info_M88E1149S, diff --git a/drivers/net/tsec.h b/drivers/net/tsec.h index 6a2338b..fee5934 100644 --- a/drivers/net/tsec.h +++ b/drivers/net/tsec.h @@ -184,6 +184,13 @@ #define MIIM_88E1111_PHY_LED_DIRECT 0x4100 #define MIIM_88E1111_PHY_LED_COMBINE 0x411C
+/* 88E1121 PHY LED Control Register */ +#define MIIM_88E1121_PHY_LED_CTRL 16 +#define MIIM_88E1121_PHY_LED_PAGE 3 +#define MIIM_88E1121_PHY_LED_DEF 0x0030 + +#define MIIM_88E1121_PHY_PAGE 22 + /* 88E1145 Extended PHY Specific Control Register */ #define MIIM_88E1145_PHY_EXT_CR 20 #define MIIM_M88E1145_RGMII_RX_DELAY 0x0080