Message ID | 20180627181618.23463-1-dmurphy@ti.com |
---|---|
State | New |
Headers | show |
Series | [1/2] net: phy: DP83TC811: Add INT_STAT3 | expand |
> err = phy_write(phydev, MII_DP83811_INT_STAT1, 0); > if (err < 0) > return err; > > - err = phy_write(phydev, MII_DP83811_INT_STAT1, 0); > + err = phy_write(phydev, MII_DP83811_INT_STAT2, 0); > + if (err < 0) > + return err; > + > + err = phy_write(phydev, MII_DP83811_INT_STAT3, 0); > } > Hi Dan This seems like a bug fix, and so should be in a patch of its own, for net, not net-next. Andrew
Andrew On 06/28/2018 03:16 AM, Andrew Lunn wrote: >> err = phy_write(phydev, MII_DP83811_INT_STAT1, 0); >> if (err < 0) >> return err; >> >> - err = phy_write(phydev, MII_DP83811_INT_STAT1, 0); >> + err = phy_write(phydev, MII_DP83811_INT_STAT2, 0); >> + if (err < 0) >> + return err; >> + >> + err = phy_write(phydev, MII_DP83811_INT_STAT3, 0); >> } >> > > Hi Dan > > This seems like a bug fix, and so should be in a patch of its own, for > net, not net-next. > Yes I was debating whether to include this change in the patch or have it stand alone for stable back port. I will pull it out and cc stable > Andrew > -- ------------------ Dan Murphy
> Yes I was debating whether to include this change in the patch or have it > stand alone for stable back port. > > I will pull it out and cc stable No need to CC stable. Base the patch on daveM net branch, and David will do the rest. You probably want to wait a week or two before sending the other patches for net-next. You want net to be merged into net-next, in order to avoid conflicts. Andrew
diff --git a/drivers/net/phy/dp83tc811.c b/drivers/net/phy/dp83tc811.c index 081d99aa3985..f8653f5d8789 100644 --- a/drivers/net/phy/dp83tc811.c +++ b/drivers/net/phy/dp83tc811.c @@ -21,6 +21,7 @@ #define MII_DP83811_SGMII_CTRL 0x09 #define MII_DP83811_INT_STAT1 0x12 #define MII_DP83811_INT_STAT2 0x13 +#define MII_DP83811_INT_STAT3 0x18 #define MII_DP83811_RESET_CTRL 0x1f #define DP83811_HW_RESET BIT(15) @@ -44,6 +45,11 @@ #define DP83811_OVERVOLTAGE_INT_EN BIT(6) #define DP83811_UNDERVOLTAGE_INT_EN BIT(7) +/* INT_STAT3 bits */ +#define DP83811_LPS_INT_EN BIT(0) +#define DP83811_NO_FRAME_INT_EN BIT(3) +#define DP83811_POR_DONE_INT_EN BIT(4) + #define MII_DP83811_RXSOP1 0x04a5 #define MII_DP83811_RXSOP2 0x04a6 #define MII_DP83811_RXSOP3 0x04a7 @@ -81,6 +87,10 @@ static int dp83811_ack_interrupt(struct phy_device *phydev) if (err < 0) return err; + err = phy_read(phydev, MII_DP83811_INT_STAT3); + if (err < 0) + return err; + return 0; } @@ -216,13 +226,29 @@ static int dp83811_config_intr(struct phy_device *phydev) DP83811_UNDERVOLTAGE_INT_EN); err = phy_write(phydev, MII_DP83811_INT_STAT2, misr_status); + if (err < 0) + return err; + + misr_status = phy_read(phydev, MII_DP83811_INT_STAT3); + if (misr_status < 0) + return misr_status; + + misr_status |= (DP83811_LPS_INT_EN | + DP83811_NO_FRAME_INT_EN | + DP83811_POR_DONE_INT_EN); + + err = phy_write(phydev, MII_DP83811_INT_STAT3, misr_status); } else { err = phy_write(phydev, MII_DP83811_INT_STAT1, 0); if (err < 0) return err; - err = phy_write(phydev, MII_DP83811_INT_STAT1, 0); + err = phy_write(phydev, MII_DP83811_INT_STAT2, 0); + if (err < 0) + return err; + + err = phy_write(phydev, MII_DP83811_INT_STAT3, 0); } return err;
Add INT_STAT3 interrupt setting and clearing. Also fixed writing to INT_STAT2 when disabling the interrupts as there was a double write to INT_STAT1. Signed-off-by: Dan Murphy <dmurphy@ti.com> --- drivers/net/phy/dp83tc811.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) -- 2.17.0.582.gccdcbd54c