[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220420124053.853891-3-kai.heng.feng@canonical.com>
Date: Wed, 20 Apr 2022 20:40:49 +0800
From: Kai-Heng Feng <kai.heng.feng@...onical.com>
To: andrew@...n.ch, hkallweit1@...il.com, linux@...linux.org.uk,
peppe.cavallaro@...com, alexandre.torgue@...s.st.com,
joabreu@...opsys.com, davem@...emloft.net, kuba@...nel.org,
pabeni@...hat.com
Cc: Kai-Heng Feng <kai.heng.feng@...onical.com>,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH 2/5] net: mdio: Add "use-firmware-led" firmware property
Some system may prefer preset PHY LED setting instead of the one
hardcoded in the PHY driver, so adding a new firmware
property, "use-firmware-led", to cope with that.
On ACPI based system the ASL looks like this:
Scope (_SB.PC00.OTN0)
{
Device (PHY0)
{
Name (_ADR, One) // _ADR: Address
Name (_DSD, Package (0x02) // _DSD: Device-Specific Data
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301") /* Device Properties for _DSD */,
Package (0x01)
{
Package (0x02)
{
"use-firmware-led",
One
}
}
})
}
Name (_DSD, Package (0x02) // _DSD: Device-Specific Data
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301") /* Device Properties for _DSD */,
Package (0x01)
{
Package (0x02)
{
"phy-handle",
PHY0
}
}
})
}
Basically use the "phy-handle" reference to read the "use-firmware-led"
boolean.
Signed-off-by: Kai-Heng Feng <kai.heng.feng@...onical.com>
---
drivers/net/mdio/fwnode_mdio.c | 4 ++++
include/linux/phy.h | 1 +
2 files changed, 5 insertions(+)
diff --git a/drivers/net/mdio/fwnode_mdio.c b/drivers/net/mdio/fwnode_mdio.c
index 1c1584fca6327..bfca67b42164b 100644
--- a/drivers/net/mdio/fwnode_mdio.c
+++ b/drivers/net/mdio/fwnode_mdio.c
@@ -144,6 +144,10 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
*/
if (mii_ts)
phy->mii_ts = mii_ts;
+
+ phy->use_firmware_led =
+ fwnode_property_read_bool(child, "use-firmware-led");
+
return 0;
}
EXPORT_SYMBOL(fwnode_mdiobus_register_phy);
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 36ca2b5c22533..53e693b3430ec 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -656,6 +656,7 @@ struct phy_device {
/* Energy efficient ethernet modes which should be prohibited */
u32 eee_broken_modes;
+ bool use_firmware_led;
#ifdef CONFIG_LED_TRIGGER_PHY
struct phy_led_trigger *phy_led_triggers;
unsigned int phy_num_led_triggers;
--
2.34.1
Powered by blists - more mailing lists