diff options
Diffstat (limited to 'drivers/net/phy/intel-xway.c')
| -rw-r--r-- | drivers/net/phy/intel-xway.c | 21 | 
1 files changed, 21 insertions, 0 deletions
| diff --git a/drivers/net/phy/intel-xway.c b/drivers/net/phy/intel-xway.c index 6eac50d4b42f..d453ec016168 100644 --- a/drivers/net/phy/intel-xway.c +++ b/drivers/net/phy/intel-xway.c @@ -11,6 +11,18 @@  #define XWAY_MDIO_IMASK			0x19	/* interrupt mask */  #define XWAY_MDIO_ISTAT			0x1A	/* interrupt status */ +#define XWAY_MDIO_LED			0x1B	/* led control */ + +/* bit 15:12 are reserved */ +#define XWAY_MDIO_LED_LED3_EN		BIT(11)	/* Enable the integrated function of LED3 */ +#define XWAY_MDIO_LED_LED2_EN		BIT(10)	/* Enable the integrated function of LED2 */ +#define XWAY_MDIO_LED_LED1_EN		BIT(9)	/* Enable the integrated function of LED1 */ +#define XWAY_MDIO_LED_LED0_EN		BIT(8)	/* Enable the integrated function of LED0 */ +/* bit 7:4 are reserved */ +#define XWAY_MDIO_LED_LED3_DA		BIT(3)	/* Direct Access to LED3 */ +#define XWAY_MDIO_LED_LED2_DA		BIT(2)	/* Direct Access to LED2 */ +#define XWAY_MDIO_LED_LED1_DA		BIT(1)	/* Direct Access to LED1 */ +#define XWAY_MDIO_LED_LED0_DA		BIT(0)	/* Direct Access to LED0 */  #define XWAY_MDIO_INIT_WOL		BIT(15)	/* Wake-On-LAN */  #define XWAY_MDIO_INIT_MSRE		BIT(14) @@ -159,6 +171,15 @@ static int xway_gphy_config_init(struct phy_device *phydev)  	/* Clear all pending interrupts */  	phy_read(phydev, XWAY_MDIO_ISTAT); +	/* Ensure that integrated led function is enabled for all leds */ +	err = phy_write(phydev, XWAY_MDIO_LED, +			XWAY_MDIO_LED_LED0_EN | +			XWAY_MDIO_LED_LED1_EN | +			XWAY_MDIO_LED_LED2_EN | +			XWAY_MDIO_LED_LED3_EN); +	if (err) +		return err; +  	phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDCH,  		      XWAY_MMD_LEDCH_NACS_NONE |  		      XWAY_MMD_LEDCH_SBF_F02HZ | | 
