mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 22:00:53 +07:00
phy/at8031: enable at8031 to work on interrupt mode
The at8031 can work on polling mode and interrupt mode. Add ack_interrupt and config intr funcs to enable interrupt mode for it. Signed-off-by: Zhao Qiang <B45475@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
437de07ced
commit
77a9939426
@ -27,6 +27,9 @@
|
|||||||
#define AT803X_MMD_ACCESS_CONTROL 0x0D
|
#define AT803X_MMD_ACCESS_CONTROL 0x0D
|
||||||
#define AT803X_MMD_ACCESS_CONTROL_DATA 0x0E
|
#define AT803X_MMD_ACCESS_CONTROL_DATA 0x0E
|
||||||
#define AT803X_FUNC_DATA 0x4003
|
#define AT803X_FUNC_DATA 0x4003
|
||||||
|
#define AT803X_INER 0x0012
|
||||||
|
#define AT803X_INER_INIT 0xec00
|
||||||
|
#define AT803X_INSR 0x0013
|
||||||
#define AT803X_DEBUG_ADDR 0x1D
|
#define AT803X_DEBUG_ADDR 0x1D
|
||||||
#define AT803X_DEBUG_DATA 0x1E
|
#define AT803X_DEBUG_DATA 0x1E
|
||||||
#define AT803X_DEBUG_SYSTEM_MODE_CTRL 0x05
|
#define AT803X_DEBUG_SYSTEM_MODE_CTRL 0x05
|
||||||
@ -191,6 +194,31 @@ static int at803x_config_init(struct phy_device *phydev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int at803x_ack_interrupt(struct phy_device *phydev)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
err = phy_read(phydev, AT803X_INSR);
|
||||||
|
|
||||||
|
return (err < 0) ? err : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int at803x_config_intr(struct phy_device *phydev)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
int value;
|
||||||
|
|
||||||
|
value = phy_read(phydev, AT803X_INER);
|
||||||
|
|
||||||
|
if (phydev->interrupts == PHY_INTERRUPT_ENABLED)
|
||||||
|
err = phy_write(phydev, AT803X_INER,
|
||||||
|
value | AT803X_INER_INIT);
|
||||||
|
else
|
||||||
|
err = phy_write(phydev, AT803X_INER, 0);
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
static struct phy_driver at803x_driver[] = {
|
static struct phy_driver at803x_driver[] = {
|
||||||
{
|
{
|
||||||
/* ATHEROS 8035 */
|
/* ATHEROS 8035 */
|
||||||
@ -240,6 +268,8 @@ static struct phy_driver at803x_driver[] = {
|
|||||||
.flags = PHY_HAS_INTERRUPT,
|
.flags = PHY_HAS_INTERRUPT,
|
||||||
.config_aneg = genphy_config_aneg,
|
.config_aneg = genphy_config_aneg,
|
||||||
.read_status = genphy_read_status,
|
.read_status = genphy_read_status,
|
||||||
|
.ack_interrupt = &at803x_ack_interrupt,
|
||||||
|
.config_intr = &at803x_config_intr,
|
||||||
.driver = {
|
.driver = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user