mbox series

[net-next,v6,0/5] net: phy: generic polarity + LED support for qca808x

Message ID 20240102183835.5332-1-ansuelsmth@gmail.com
Headers show
Series net: phy: generic polarity + LED support for qca808x | expand

Message

Christian Marangi Jan. 2, 2024, 6:38 p.m. UTC
This small series add LEDs support for qca808x.

QCA808x apply on PHY reset a strange polarity settings and require
some tweak to apply a more common configuration found on devices.
On adding support for it, it was pointed out that a similar
feature is also being implemented for a marvell PHY where
LED polarity is set per LED (and not global) and also have
a special mode where the LED is tristated.

The first 3 patch are to generalize this as we expect more PHY
in the future to have a similar configuration.

The implementation is extensible to support additional special
mode in the future with minimal changes and don't create regression
on already implemented PHY drivers.

(changelog present in single patch)

Christian Marangi (5):
  dt-bindings: net: phy: Make LED active-low property common
  dt-bindings: net: phy: Document LED inactive high impedance mode
  net: phy: add support for PHY LEDs polarity modes
  dt-bindings: net: Document QCA808x PHYs
  net: phy: at803x: add LED support for qca808x

 .../devicetree/bindings/leds/common.yaml      |  12 +
 .../bindings/leds/leds-bcm63138.yaml          |   4 -
 .../bindings/leds/leds-bcm6328.yaml           |   4 -
 .../devicetree/bindings/leds/leds-bcm6358.txt |   2 -
 .../bindings/leds/leds-pwm-multicolor.yaml    |   4 -
 .../devicetree/bindings/leds/leds-pwm.yaml    |   5 -
 .../devicetree/bindings/net/qca,qca808x.yaml  |  54 +++
 drivers/net/phy/at803x.c                      | 333 ++++++++++++++++++
 drivers/net/phy/phy_device.c                  |  12 +
 include/linux/phy.h                           |  22 ++
 10 files changed, 433 insertions(+), 19 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/net/qca,qca808x.yaml

Comments

Russell King (Oracle) Jan. 3, 2024, 4:59 p.m. UTC | #1
On Tue, Jan 02, 2024 at 07:38:34PM +0100, Christian Marangi wrote:
> +	if (active_low) {
> +		ret = phy_clear_bits_mmd(phydev, MDIO_MMD_AN,
> +					 QCA808X_MMD7_LED_POLARITY_CTRL,
> +					 QCA808X_LED_ACTIVE_HIGH);
> +	} else {
> +		ret = phy_set_bits_mmd(phydev, MDIO_MMD_AN,
> +				       QCA808X_MMD7_LED_POLARITY_CTRL,
> +				       QCA808X_LED_ACTIVE_HIGH);
> +	}

Maybe:

	return phy_modify_mmd(phydev, MDIO_MMD_AN,
			      QCA808X_MMD7_LED_POLARITY_CTRL,
			      active_low ? 0 : QCA808X_LED_ACTIVE_HIGH);