[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20231120135041.15259-8-ansuelsmth@gmail.com>
Date: Mon, 20 Nov 2023 14:50:34 +0100
From: Christian Marangi <ansuelsmth@...il.com>
To: "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Conor Dooley <conor+dt@...nel.org>,
Andy Gross <agross@...nel.org>,
Bjorn Andersson <andersson@...nel.org>,
Konrad Dybcio <konrad.dybcio@...aro.org>,
Andrew Lunn <andrew@...n.ch>,
Heiner Kallweit <hkallweit1@...il.com>,
Russell King <linux@...linux.org.uk>,
Florian Fainelli <florian.fainelli@...adcom.com>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@...adcom.com>,
Daniel Golle <daniel@...rotopia.org>,
Qingfang Deng <dqfext@...il.com>,
SkyLake Huang <SkyLake.Huang@...iatek.com>,
Matthias Brugger <matthias.bgg@...il.com>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
David Epping <david.epping@...singlinkelectronics.com>,
Vladimir Oltean <olteanv@...il.com>,
Christian Marangi <ansuelsmth@...il.com>,
"Russell King (Oracle)" <rmk+kernel@...linux.org.uk>,
Harini Katakam <harini.katakam@....com>,
Simon Horman <horms@...nel.org>,
Robert Marko <robert.marko@...tura.hr>,
netdev@...r.kernel.org,
devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org,
linux-arm-msm@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org,
linux-mediatek@...ts.infradead.org
Subject: [net-next RFC PATCH 07/14] net: phy: add support for driver specific PHY package probe/config
Add PHY driver specific function to probe and configure PHY package.
These function are run only once before the PHY probe and config_init.
They are used in conjunction with DT PHY package define for basic PHY
package implementation to setup and probe PHY package with simple
functions directly defined in the PHY driver struct.
Signed-off-by: Christian Marangi <ansuelsmth@...il.com>
---
drivers/net/phy/phy_device.c | 14 ++++++++++++++
include/linux/phy.h | 21 +++++++++++++++++++++
2 files changed, 35 insertions(+)
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 91d17129b774..0b7ba6995929 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1246,6 +1246,13 @@ int phy_init_hw(struct phy_device *phydev)
if (ret < 0)
return ret;
+ if (phydev->drv->phy_package_config_init_once &&
+ phy_package_init_once(phydev)) {
+ ret = phydev->drv->phy_package_config_init_once(phydev);
+ if (ret < 0)
+ return ret;
+ }
+
if (phydev->drv->config_init) {
ret = phydev->drv->config_init(phydev);
if (ret < 0)
@@ -3386,6 +3393,13 @@ static int phy_probe(struct device *dev)
/* Deassert the reset signal */
phy_device_reset(phydev, 0);
+ if (phydev->drv->phy_package_probe_once &&
+ phy_package_probe_once(phydev)) {
+ err = phydev->drv->phy_package_probe_once(phydev);
+ if (err)
+ goto out;
+ }
+
if (phydev->drv->probe) {
err = phydev->drv->probe(phydev);
if (err)
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 7c47c12cffa0..1849fc637196 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -924,12 +924,33 @@ struct phy_driver {
*/
int (*soft_reset)(struct phy_device *phydev);
+ /**
+ * @phy_package_config_init_once: Driver specific PHY package
+ * config init call
+ * @def: PHY device to use to probe PHY package
+ *
+ * Called to initialize the PHY package, including after
+ * a reset.
+ * Called BEFORE PHY config_init.
+ */
+ int (*phy_package_config_init_once)(struct phy_device *dev);
+
/**
* @config_init: Called to initialize the PHY,
* including after a reset
*/
int (*config_init)(struct phy_device *phydev);
+ /**
+ * @phy_package_probe_once: Driver specific PHY package probe
+ * @def: PHY device to use to probe PHY package
+ *
+ * Called during discovery once per PHY package. Used to set
+ * up device-specific PHY package structures, if any.
+ * Called BEFORE PHY probe.
+ */
+ int (*phy_package_probe_once)(struct phy_device *dev);
+
/**
* @probe: Called during discovery. Used to set
* up device-specific structures, if any
--
2.40.1
Powered by blists - more mailing lists