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)
|
static unsigned int m88e1145_setmode(uint mii_reg, struct tsec_private *priv)
|
||||||
{
|
{
|
||||||
uint mii_data = read_phy_reg(priv, mii_reg);
|
uint mii_data = read_phy_reg(priv, mii_reg);
|
||||||
|
@ -1522,6 +1570,7 @@ struct phy_info *phy_info[] = {
|
||||||
&phy_info_M88E1011S,
|
&phy_info_M88E1011S,
|
||||||
&phy_info_M88E1111S,
|
&phy_info_M88E1111S,
|
||||||
&phy_info_M88E1118,
|
&phy_info_M88E1118,
|
||||||
|
&phy_info_M88E1121R,
|
||||||
&phy_info_M88E1145,
|
&phy_info_M88E1145,
|
||||||
&phy_info_M88E1149S,
|
&phy_info_M88E1149S,
|
||||||
&phy_info_dm9161,
|
&phy_info_dm9161,
|
||||||
|
|
|
@ -184,6 +184,13 @@
|
||||||
#define MIIM_88E1111_PHY_LED_DIRECT 0x4100
|
#define MIIM_88E1111_PHY_LED_DIRECT 0x4100
|
||||||
#define MIIM_88E1111_PHY_LED_COMBINE 0x411C
|
#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 */
|
/* 88E1145 Extended PHY Specific Control Register */
|
||||||
#define MIIM_88E1145_PHY_EXT_CR 20
|
#define MIIM_88E1145_PHY_EXT_CR 20
|
||||||
#define MIIM_M88E1145_RGMII_RX_DELAY 0x0080
|
#define MIIM_M88E1145_RGMII_RX_DELAY 0x0080
|
||||||
|
|
Loading…
Reference in a new issue