[openwrt/openwrt] generic: 6.6: backport pending fix for Aquantia PHY LEDs

LEDE Commits lede-commits at lists.infradead.org
Tue Sep 17 11:09:56 PDT 2024


dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/5b4131dfe866e0e8e4ef27b4dd16d218b1790dbf

commit 5b4131dfe866e0e8e4ef27b4dd16d218b1790dbf
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Tue Sep 17 17:29:20 2024 +0100

    generic: 6.6: backport pending fix for Aquantia PHY LEDs
    
    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 <daniel at makrotopia.org>
---
 ...net-phy-aquantia-enable-AQR112-and-AQR412.patch |  4 +-
 ...-aquantia-add-PHY_IDs-for-AQR112-variants.patch |  4 +-
 ...t-phy-aquantia-fix-setting-active_low-bit.patch | 55 +++++++++++++++++
 ...a-fix-applying-active_low-bit-after-reset.patch | 72 ++++++++++++++++++++++
 4 files changed, 131 insertions(+), 4 deletions(-)

diff --git a/target/linux/generic/hack-6.6/722-net-phy-aquantia-enable-AQR112-and-AQR412.patch b/target/linux/generic/hack-6.6/722-net-phy-aquantia-enable-AQR112-and-AQR412.patch
index dee901fbe3..cba05f4bbc 100644
--- a/target/linux/generic/hack-6.6/722-net-phy-aquantia-enable-AQR112-and-AQR412.patch
+++ b/target/linux/generic/hack-6.6/722-net-phy-aquantia-enable-AQR112-and-AQR412.patch
@@ -97,7 +97,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean at nxp.com>
  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,
@@ -106,7 +106,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean at nxp.com>
  	.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,
diff --git a/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch b/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch
index 075b0fc8e2..78ba501145 100644
--- a/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch
+++ b/target/linux/generic/hack-6.6/725-net-phy-aquantia-add-PHY_IDs-for-AQR112-variants.patch
@@ -21,7 +21,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  #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,
  },
@@ -52,7 +52,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  };
  
  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) },
diff --git a/target/linux/generic/pending-6.6/750-net-phy-aquantia-fix-setting-active_low-bit.patch b/target/linux/generic/pending-6.6/750-net-phy-aquantia-fix-setting-active_low-bit.patch
new file mode 100644
index 0000000000..6072e02fd4
--- /dev/null
+++ b/target/linux/generic/pending-6.6/750-net-phy-aquantia-fix-setting-active_low-bit.patch
@@ -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 <daniel at makrotopia.org>
+X-Patchwork-Id: 13806176
+X-Patchwork-Delegate: kuba at kernel.org
+Date: Tue, 17 Sep 2024 14:49:40 +0100
+From: Daniel Golle <daniel at makrotopia.org>
+To: Andrew Lunn <andrew at lunn.ch>, Heiner Kallweit <hkallweit1 at gmail.com>,
+	Russell King <linux at armlinux.org.uk>,
+	"David S. Miller" <davem at davemloft.net>,
+	Eric Dumazet <edumazet at google.com>,
+	Jakub Kicinski <kuba at kernel.org>, Paolo Abeni <pabeni at redhat.com>,
+	Daniel Golle <daniel at makrotopia.org>,
+	Christian Marangi <ansuelsmth at gmail.com>,
+	Bartosz Golaszewski <bartosz.golaszewski at linaro.org>,
+	Robert Marko <robimarko at gmail.com>,
+	Russell King <rmk+kernel at armlinux.org.uk>, netdev at vger.kernel.org,
+	linux-kernel at vger.kernel.org
+Subject: [PATCH net 1/2] net: phy: aquantia: fix setting active_low bit
+Message-ID: 
+ <ab963584b0a7e3b4dac39472a4b82ca264d79630.1726580902.git.daniel at makrotopia.org>
+Precedence: bulk
+X-Mailing-List: netdev at vger.kernel.org
+List-Id: <netdev.vger.kernel.org>
+List-Subscribe: <mailto:netdev+subscribe at vger.kernel.org>
+List-Unsubscribe: <mailto:netdev+unsubscribe at vger.kernel.org>
+MIME-Version: 1.0
+Content-Disposition: inline
+X-Patchwork-Delegate: kuba at kernel.org
+
+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 <daniel at makrotopia.org>
+Reviewed-by: Russell King (Oracle) <rmk+kernel at armlinux.org.uk>
+---
+ 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)
diff --git a/target/linux/generic/pending-6.6/751-net-phy-aquantia-fix-applying-active_low-bit-after-reset.patch b/target/linux/generic/pending-6.6/751-net-phy-aquantia-fix-applying-active_low-bit-after-reset.patch
new file mode 100644
index 0000000000..5c3494ae33
--- /dev/null
+++ b/target/linux/generic/pending-6.6/751-net-phy-aquantia-fix-applying-active_low-bit-after-reset.patch
@@ -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 <daniel at makrotopia.org>
+X-Patchwork-Id: 13806177
+X-Patchwork-Delegate: kuba at kernel.org
+Date: Tue, 17 Sep 2024 14:49:55 +0100
+From: Daniel Golle <daniel at makrotopia.org>
+To: Andrew Lunn <andrew at lunn.ch>, Heiner Kallweit <hkallweit1 at gmail.com>,
+	Russell King <linux at armlinux.org.uk>,
+	"David S. Miller" <davem at davemloft.net>,
+	Eric Dumazet <edumazet at google.com>,
+	Jakub Kicinski <kuba at kernel.org>, Paolo Abeni <pabeni at redhat.com>,
+	Daniel Golle <daniel at makrotopia.org>,
+	Christian Marangi <ansuelsmth at gmail.com>,
+	Bartosz Golaszewski <bartosz.golaszewski at linaro.org>,
+	Robert Marko <robimarko at gmail.com>,
+	Russell King <rmk+kernel at armlinux.org.uk>, netdev at vger.kernel.org,
+	linux-kernel at vger.kernel.org
+Subject: [PATCH net 2/2] net: phy: aquantia: fix applying active_low bit
+ after reset
+Message-ID: 
+ <9b1f0cd91f4cda54c8be56b4fe780480baf4aa0f.1726580902.git.daniel at makrotopia.org>
+References: 
+ <ab963584b0a7e3b4dac39472a4b82ca264d79630.1726580902.git.daniel at makrotopia.org>
+Precedence: bulk
+X-Mailing-List: netdev at vger.kernel.org
+List-Id: <netdev.vger.kernel.org>
+List-Subscribe: <mailto:netdev+subscribe at vger.kernel.org>
+List-Unsubscribe: <mailto:netdev+unsubscribe at vger.kernel.org>
+MIME-Version: 1.0
+Content-Disposition: inline
+In-Reply-To: 
+ <ab963584b0a7e3b4dac39472a4b82ca264d79630.1726580902.git.daniel at makrotopia.org>
+X-Patchwork-Delegate: kuba at kernel.org
+
+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 <daniel at makrotopia.org>
+Reviewed-by: Russell King (Oracle) <rmk+kernel at armlinux.org.uk>
+---
+ 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;




More information about the lede-commits mailing list