From: Andrew Lunn <and...@lunn.ch> On some boards, this PHY has a problem when it hibernates. Export this function to a board can register a PHY fixup to disable hibernation.
Signed-off-by: Andrew Lunn <and...@lunn.ch> Signed-off-by: Paul Burton <paul.bur...@mips.com> Cc: David S. Miller <da...@davemloft.net> Cc: linux-m...@linux-mips.org Cc: netdev@vger.kernel.org --- Changes in v6: - New patch. Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: None drivers/net/phy/at803x.c | 5 +++-- include/linux/at803x_phy.h | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 include/linux/at803x_phy.h diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c index 411cf1072bae..5aede5708abf 100644 --- a/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c @@ -18,6 +18,7 @@ #include <linux/etherdevice.h> #include <linux/of_gpio.h> #include <linux/gpio/consumer.h> +#include <linux/at803x_phy.h> #define AT803X_INTR_ENABLE 0x12 #define AT803X_INTR_ENABLE_AUTONEG_ERR BIT(15) @@ -93,8 +94,8 @@ static int at803x_debug_reg_read(struct phy_device *phydev, u16 reg) return phy_read(phydev, AT803X_DEBUG_DATA); } -static int at803x_debug_reg_mask(struct phy_device *phydev, u16 reg, - u16 clear, u16 set) +int at803x_debug_reg_mask(struct phy_device *phydev, u16 reg, + u16 clear, u16 set) { u16 val; int ret; diff --git a/include/linux/at803x_phy.h b/include/linux/at803x_phy.h new file mode 100644 index 000000000000..2460c17d56ec --- /dev/null +++ b/include/linux/at803x_phy.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _AT803X_PHY_H +#define _PHY_AT803X_PHY + +#define ATH8030_PHY_ID 0x004dd076 +#define ATH8031_PHY_ID 0x004dd074 +#define ATH8035_PHY_ID 0x004dd072 +#define AT803X_PHY_ID_MASK 0xffffffef + +#define AT8031_HIBERNATE 0x0B +#define AT8031_PS_HIB_EN 0x8000 /* Hibernate enable */ + +int at803x_debug_reg_mask(struct phy_device *phydev, u16 reg, + u16 clear, u16 set); + +#endif /* _AT803X_PHY_H */ -- 2.17.0