Commit 07777246 authored by Wang Dongsheng's avatar Wang Dongsheng Committed by David S. Miller

net: phy: marvell: change default m88e1510 LED configuration

The m88e1121 LED default configuration does not apply m88e151x.
So add a function to relpace m88e1121 LED configuration.
Signed-off-by: default avatarWang Dongsheng <dongsheng.wang@hxt-semitech.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 248c690a
...@@ -130,8 +130,9 @@ ...@@ -130,8 +130,9 @@
#define MII_88E1318S_PHY_WOL_CTRL_CLEAR_WOL_STATUS BIT(12) #define MII_88E1318S_PHY_WOL_CTRL_CLEAR_WOL_STATUS BIT(12)
#define MII_88E1318S_PHY_WOL_CTRL_MAGIC_PACKET_MATCH_ENABLE BIT(14) #define MII_88E1318S_PHY_WOL_CTRL_MAGIC_PACKET_MATCH_ENABLE BIT(14)
#define MII_88E1121_PHY_LED_CTRL 16 #define MII_PHY_LED_CTRL 16
#define MII_88E1121_PHY_LED_DEF 0x0030 #define MII_88E1121_PHY_LED_DEF 0x0030
#define MII_88E1510_PHY_LED_DEF 0x1177
#define MII_M1011_PHY_STATUS 0x11 #define MII_M1011_PHY_STATUS 0x11
#define MII_M1011_PHY_STATUS_1000 0x8000 #define MII_M1011_PHY_STATUS_1000 0x8000
...@@ -632,8 +633,40 @@ static int m88e1510_config_aneg(struct phy_device *phydev) ...@@ -632,8 +633,40 @@ static int m88e1510_config_aneg(struct phy_device *phydev)
return err; return err;
} }
static void marvell_config_led(struct phy_device *phydev)
{
u16 def_config;
int err;
switch (MARVELL_PHY_FAMILY_ID(phydev->phy_id)) {
/* Default PHY LED config: LED[0] .. Link, LED[1] .. Activity */
case MARVELL_PHY_FAMILY_ID(MARVELL_PHY_ID_88E1121R):
case MARVELL_PHY_FAMILY_ID(MARVELL_PHY_ID_88E1318S):
def_config = MII_88E1121_PHY_LED_DEF;
break;
/* Default PHY LED config:
* LED[0] .. 1000Mbps Link
* LED[1] .. 100Mbps Link
* LED[2] .. Blink, Activity
*/
case MARVELL_PHY_FAMILY_ID(MARVELL_PHY_ID_88E1510):
def_config = MII_88E1510_PHY_LED_DEF;
break;
default:
return;
}
err = phy_write_paged(phydev, MII_MARVELL_LED_PAGE, MII_PHY_LED_CTRL,
def_config);
if (err < 0)
pr_warn("Fail to config marvell phy LED.\n");
}
static int marvell_config_init(struct phy_device *phydev) static int marvell_config_init(struct phy_device *phydev)
{ {
/* Set defalut LED */
marvell_config_led(phydev);
/* Set registers from marvell,reg-init DT property */ /* Set registers from marvell,reg-init DT property */
return marvell_of_reg_init(phydev); return marvell_of_reg_init(phydev);
} }
...@@ -813,21 +846,6 @@ static int m88e1111_config_init(struct phy_device *phydev) ...@@ -813,21 +846,6 @@ static int m88e1111_config_init(struct phy_device *phydev)
return genphy_soft_reset(phydev); return genphy_soft_reset(phydev);
} }
static int m88e1121_config_init(struct phy_device *phydev)
{
int err;
/* Default PHY LED config: LED[0] .. Link, LED[1] .. Activity */
err = phy_write_paged(phydev, MII_MARVELL_LED_PAGE,
MII_88E1121_PHY_LED_CTRL,
MII_88E1121_PHY_LED_DEF);
if (err < 0)
return err;
/* Set marvell,reg-init configuration from device tree */
return marvell_config_init(phydev);
}
static int m88e1318_config_init(struct phy_device *phydev) static int m88e1318_config_init(struct phy_device *phydev)
{ {
if (phy_interrupt_is_valid(phydev)) { if (phy_interrupt_is_valid(phydev)) {
...@@ -841,7 +859,7 @@ static int m88e1318_config_init(struct phy_device *phydev) ...@@ -841,7 +859,7 @@ static int m88e1318_config_init(struct phy_device *phydev)
return err; return err;
} }
return m88e1121_config_init(phydev); return marvell_config_init(phydev);
} }
static int m88e1510_config_init(struct phy_device *phydev) static int m88e1510_config_init(struct phy_device *phydev)
...@@ -2087,7 +2105,7 @@ static struct phy_driver marvell_drivers[] = { ...@@ -2087,7 +2105,7 @@ static struct phy_driver marvell_drivers[] = {
.features = PHY_GBIT_FEATURES, .features = PHY_GBIT_FEATURES,
.flags = PHY_HAS_INTERRUPT, .flags = PHY_HAS_INTERRUPT,
.probe = &m88e1121_probe, .probe = &m88e1121_probe,
.config_init = &m88e1121_config_init, .config_init = &marvell_config_init,
.config_aneg = &m88e1121_config_aneg, .config_aneg = &m88e1121_config_aneg,
.read_status = &marvell_read_status, .read_status = &marvell_read_status,
.ack_interrupt = &marvell_ack_interrupt, .ack_interrupt = &marvell_ack_interrupt,
......
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
*/ */
#define MARVELL_PHY_ID_88E6390 0x01410f90 #define MARVELL_PHY_ID_88E6390 0x01410f90
#define MARVELL_PHY_FAMILY_ID(id) ((id) >> 4)
/* struct phy_device dev_flags definitions */ /* struct phy_device dev_flags definitions */
#define MARVELL_PHY_M1145_FLAGS_RESISTANCE 0x00000001 #define MARVELL_PHY_M1145_FLAGS_RESISTANCE 0x00000001
#define MARVELL_PHY_M1118_DNS323_LEDS 0x00000002 #define MARVELL_PHY_M1118_DNS323_LEDS 0x00000002
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment