Skip to content

Commit

Permalink
generic: 6.6: backport pending fix for Aquantia PHY LEDs
Browse files Browse the repository at this point in the history
The 'active-low' property was not applied correctly and two fixes
are required to make inverted LEDs work as expected.

Signed-off-by: Daniel Golle <[email protected]>
  • Loading branch information
dangowrt committed Sep 17, 2024
1 parent 85f7b62 commit 5b4131d
Show file tree
Hide file tree
Showing 4 changed files with 131 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ Signed-off-by: Alex Marginean <[email protected]>
static int aqr_config_intr(struct phy_device *phydev)
{
bool en = phydev->interrupts == PHY_INTERRUPT_ENABLED;
@@ -816,7 +884,7 @@ static struct phy_driver aqr_driver[] =
@@ -815,7 +883,7 @@ static struct phy_driver aqr_driver[] =
PHY_ID_MATCH_MODEL(PHY_ID_AQR112),
.name = "Aquantia AQR112",
.probe = aqr107_probe,
Expand All @@ -106,7 +106,7 @@ Signed-off-by: Alex Marginean <[email protected]>
.config_intr = aqr_config_intr,
.handle_interrupt = aqr_handle_interrupt,
.get_tunable = aqr107_get_tunable,
@@ -839,7 +907,7 @@ static struct phy_driver aqr_driver[] =
@@ -838,7 +906,7 @@ static struct phy_driver aqr_driver[] =
PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
.name = "Aquantia AQR412",
.probe = aqr107_probe,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Signed-off-by: Daniel Golle <[email protected]>

#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3)
@@ -1023,6 +1025,30 @@ static struct phy_driver aqr_driver[] =
@@ -1022,6 +1024,30 @@ static struct phy_driver aqr_driver[] =
.led_hw_control_get = aqr_phy_led_hw_control_get,
.led_polarity_set = aqr_phy_led_polarity_set,
},
Expand Down Expand Up @@ -52,7 +52,7 @@ Signed-off-by: Daniel Golle <[email protected]>
};

module_phy_driver(aqr_driver);
@@ -1043,6 +1069,8 @@ static struct mdio_device_id __maybe_unu
@@ -1042,6 +1068,8 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR114C) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR813) },
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
From patchwork Tue Sep 17 13:49:40 2024
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Daniel Golle <[email protected]>
X-Patchwork-Id: 13806176
X-Patchwork-Delegate: [email protected]
Date: Tue, 17 Sep 2024 14:49:40 +0100
From: Daniel Golle <[email protected]>
To: Andrew Lunn <[email protected]>, Heiner Kallweit <[email protected]>,
Russell King <[email protected]>,
"David S. Miller" <[email protected]>,
Eric Dumazet <[email protected]>,
Jakub Kicinski <[email protected]>, Paolo Abeni <[email protected]>,
Daniel Golle <[email protected]>,
Christian Marangi <[email protected]>,
Bartosz Golaszewski <[email protected]>,
Robert Marko <[email protected]>,
Russell King <[email protected]>, [email protected],
[email protected]
Subject: [PATCH net 1/2] net: phy: aquantia: fix setting active_low bit
Message-ID:
<ab963584b0a7e3b4dac39472a4b82ca264d79630.1726580902.git.daniel@makrotopia.org>
Precedence: bulk
X-Mailing-List: [email protected]
List-Id: <netdev.vger.kernel.org>
List-Subscribe: <mailto:[email protected]>
List-Unsubscribe: <mailto:[email protected]>
MIME-Version: 1.0
Content-Disposition: inline
X-Patchwork-Delegate: [email protected]

phy_modify_mmd was used wrongly in aqr_phy_led_active_low_set() resulting
in a no-op instead of setting the VEND1_GLOBAL_LED_DRIVE_VDD bit.
Correctly set VEND1_GLOBAL_LED_DRIVE_VDD bit.

Fixes: 61578f679378 ("net: phy: aquantia: add support for PHY LEDs")
Signed-off-by: Daniel Golle <[email protected]>
Reviewed-by: Russell King (Oracle) <[email protected]>
---
drivers/net/phy/aquantia/aquantia_leds.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/net/phy/aquantia/aquantia_leds.c
+++ b/drivers/net/phy/aquantia/aquantia_leds.c
@@ -120,7 +120,8 @@ int aqr_phy_led_hw_control_set(struct ph
int aqr_phy_led_active_low_set(struct phy_device *phydev, int index, bool enable)
{
return phy_modify_mmd(phydev, MDIO_MMD_VEND1, AQR_LED_DRIVE(index),
- VEND1_GLOBAL_LED_DRIVE_VDD, enable);
+ VEND1_GLOBAL_LED_DRIVE_VDD,
+ enable ? VEND1_GLOBAL_LED_DRIVE_VDD : 0);
}

int aqr_phy_led_polarity_set(struct phy_device *phydev, int index, unsigned long modes)
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
From patchwork Tue Sep 17 13:49:55 2024
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Daniel Golle <[email protected]>
X-Patchwork-Id: 13806177
X-Patchwork-Delegate: [email protected]
Date: Tue, 17 Sep 2024 14:49:55 +0100
From: Daniel Golle <[email protected]>
To: Andrew Lunn <[email protected]>, Heiner Kallweit <[email protected]>,
Russell King <[email protected]>,
"David S. Miller" <[email protected]>,
Eric Dumazet <[email protected]>,
Jakub Kicinski <[email protected]>, Paolo Abeni <[email protected]>,
Daniel Golle <[email protected]>,
Christian Marangi <[email protected]>,
Bartosz Golaszewski <[email protected]>,
Robert Marko <[email protected]>,
Russell King <[email protected]>, [email protected],
[email protected]
Subject: [PATCH net 2/2] net: phy: aquantia: fix applying active_low bit
after reset
Message-ID:
<9b1f0cd91f4cda54c8be56b4fe780480baf4aa0f.1726580902.git.daniel@makrotopia.org>
References:
<ab963584b0a7e3b4dac39472a4b82ca264d79630.1726580902.git.daniel@makrotopia.org>
Precedence: bulk
X-Mailing-List: [email protected]
List-Id: <netdev.vger.kernel.org>
List-Subscribe: <mailto:[email protected]>
List-Unsubscribe: <mailto:[email protected]>
MIME-Version: 1.0
Content-Disposition: inline
In-Reply-To:
<ab963584b0a7e3b4dac39472a4b82ca264d79630.1726580902.git.daniel@makrotopia.org>
X-Patchwork-Delegate: [email protected]

for_each_set_bit was used wrongly in aqr107_config_init() when iterating
over LEDs. Drop misleading 'index' variable and call
aqr_phy_led_active_low_set() for each set bit representing an LED which
is driven by VDD instead of GND pin.

Fixes: 61578f679378 ("net: phy: aquantia: add support for PHY LEDs")
Signed-off-by: Daniel Golle <[email protected]>
Reviewed-by: Russell King (Oracle) <[email protected]>
---
drivers/net/phy/aquantia/aquantia_main.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

--- a/drivers/net/phy/aquantia/aquantia_main.c
+++ b/drivers/net/phy/aquantia/aquantia_main.c
@@ -501,7 +501,7 @@ static int aqr107_config_init(struct phy
{
struct aqr107_priv *priv = phydev->priv;
u32 led_active_low;
- int ret, index = 0;
+ int ret;

/* Check that the PHY interface type is compatible */
if (phydev->interface != PHY_INTERFACE_MODE_SGMII &&
@@ -537,10 +537,9 @@ static int aqr107_config_init(struct phy

/* Restore LED polarity state after reset */
for_each_set_bit(led_active_low, &priv->leds_active_low, AQR_MAX_LEDS) {
- ret = aqr_phy_led_active_low_set(phydev, index, led_active_low);
+ ret = aqr_phy_led_active_low_set(phydev, led_active_low, true);
if (ret)
return ret;
- index++;
}

return 0;

0 comments on commit 5b4131d

Please sign in to comment.