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>
This commit is contained in:
parent
e99e9575bb
commit
d23dc394aa
@ -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,
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user