123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- From 30dd62191d3dd97c08f7f9dc9ce77ffab457e4fb Mon Sep 17 00:00:00 2001
- From: Christian Marangi <[email protected]>
- Date: Fri, 8 Dec 2023 15:51:56 +0100
- Subject: [PATCH 09/13] net: phy: at803x: move specific at8031 config_intr to
- dedicated function
- Move specific at8031 config_intr bits to dedicated function to make
- at803x_config_initr more generic.
- This is needed in preparation for PHY driver split as qca8081 share the
- same function to setup interrupts.
- Signed-off-by: Christian Marangi <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- drivers/net/phy/at803x.c | 30 ++++++++++++++++++++++++------
- 1 file changed, 24 insertions(+), 6 deletions(-)
- --- a/drivers/net/phy/at803x.c
- +++ b/drivers/net/phy/at803x.c
- @@ -990,7 +990,6 @@ static int at803x_ack_interrupt(struct p
-
- static int at803x_config_intr(struct phy_device *phydev)
- {
- - struct at803x_priv *priv = phydev->priv;
- int err;
- int value;
-
- @@ -1007,10 +1006,6 @@ static int at803x_config_intr(struct phy
- value |= AT803X_INTR_ENABLE_DUPLEX_CHANGED;
- value |= AT803X_INTR_ENABLE_LINK_FAIL;
- value |= AT803X_INTR_ENABLE_LINK_SUCCESS;
- - if (priv->is_fiber) {
- - value |= AT803X_INTR_ENABLE_LINK_FAIL_BX;
- - value |= AT803X_INTR_ENABLE_LINK_SUCCESS_BX;
- - }
-
- err = phy_write(phydev, AT803X_INTR_ENABLE, value);
- } else {
- @@ -1617,6 +1612,29 @@ static int at8031_set_wol(struct phy_dev
- return ret;
- }
-
- +static int at8031_config_intr(struct phy_device *phydev)
- +{
- + struct at803x_priv *priv = phydev->priv;
- + int err, value = 0;
- +
- + if (phydev->interrupts == PHY_INTERRUPT_ENABLED &&
- + priv->is_fiber) {
- + /* Clear any pending interrupts */
- + err = at803x_ack_interrupt(phydev);
- + if (err)
- + return err;
- +
- + value |= AT803X_INTR_ENABLE_LINK_FAIL_BX;
- + value |= AT803X_INTR_ENABLE_LINK_SUCCESS_BX;
- +
- + err = phy_set_bits(phydev, AT803X_INTR_ENABLE, value);
- + if (err)
- + return err;
- + }
- +
- + return at803x_config_intr(phydev);
- +}
- +
- static int qca83xx_config_init(struct phy_device *phydev)
- {
- u8 switch_revision;
- @@ -2137,7 +2155,7 @@ static struct phy_driver at803x_driver[]
- .write_page = at803x_write_page,
- .get_features = at803x_get_features,
- .read_status = at803x_read_status,
- - .config_intr = at803x_config_intr,
- + .config_intr = at8031_config_intr,
- .handle_interrupt = at803x_handle_interrupt,
- .get_tunable = at803x_get_tunable,
- .set_tunable = at803x_set_tunable,
|