forked from Openwrt/openwrt
7e0a7bf21d
Backport LED fixes for qca808x PHY to restore correct functionality. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
From f203c8c77c7616c099647636f4c67d59a45fe8a2 Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Thu, 1 Feb 2024 14:46:01 +0100
|
|
Subject: [PATCH 2/2] net: phy: qcom: qca808x: default to LED active High if
|
|
not set
|
|
|
|
qca808x PHY provide support for the led_polarity_set OP to configure
|
|
and apply the active-low property but on PHY reset, the Active High bit
|
|
is not set resulting in the LED driven as active-low.
|
|
|
|
To fix this, check if active-low is not set in DT and enable Active High
|
|
polarity by default to restore correct funcionality of the LED.
|
|
|
|
Fixes: 7196062b64ee ("net: phy: at803x: add LED support for qca808x")
|
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/phy/qcom/qca808x.c | 10 ++++++++++
|
|
1 file changed, 10 insertions(+)
|
|
|
|
--- a/drivers/net/phy/qcom/qca808x.c
|
|
+++ b/drivers/net/phy/qcom/qca808x.c
|
|
@@ -290,8 +290,18 @@ static int qca808x_probe(struct phy_devi
|
|
|
|
static int qca808x_config_init(struct phy_device *phydev)
|
|
{
|
|
+ struct qca808x_priv *priv = phydev->priv;
|
|
int ret;
|
|
|
|
+ /* Default to LED Active High if active-low not in DT */
|
|
+ if (priv->led_polarity_mode == -1) {
|
|
+ ret = phy_set_bits_mmd(phydev, MDIO_MMD_AN,
|
|
+ QCA808X_MMD7_LED_POLARITY_CTRL,
|
|
+ QCA808X_LED_ACTIVE_HIGH);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+ }
|
|
+
|
|
/* Active adc&vga on 802.3az for the link 1000M and 100M */
|
|
ret = phy_modify_mmd(phydev, MDIO_MMD_PCS, QCA808X_PHY_MMD3_ADDR_CLD_CTRL7,
|
|
QCA808X_8023AZ_AFE_CTRL_MASK, QCA808X_8023AZ_AFE_EN);
|