From: Christian Marangi <ansuelsmth@gmail.com>
To: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
Andy Gross <agross@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Andrew Lunn <andrew@lunn.ch>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Broadcom internal kernel review list
<bcm-kernel-feedback-list@broadcom.com>,
Daniel Golle <daniel@makrotopia.org>,
Qingfang Deng <dqfext@gmail.com>,
SkyLake Huang <SkyLake.Huang@mediatek.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Vladimir Oltean <olteanv@gmail.com>,
David Epping <david.epping@missinglinkelectronics.com>,
Harini Katakam <harini.katakam@amd.com>,
Christian Marangi <ansuelsmth@gmail.com>,
"Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>,
Robert Marko <robert.marko@sartura.hr>,
netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: [net-next RFC PATCH v2 07/11] net: phy: add support for PHY package MMD read/write
Date: Sat, 25 Nov 2023 01:11:23 +0100 [thread overview]
Message-ID: <20231125001127.5674-8-ansuelsmth@gmail.com> (raw)
In-Reply-To: <20231125001127.5674-1-ansuelsmth@gmail.com>
Some PHY in PHY package may require to read/write MMD regs to correctly
configure the PHY package.
Add support for these additional required function in both lock and no
lock variant.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
include/linux/phy.h | 72 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 0f3b21c90583..4c5856d9865d 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -2104,6 +2104,78 @@ static inline int __phy_package_write(struct phy_device *phydev,
return __mdiobus_write(phydev->mdio.bus, addr, regnum, val);
}
+static inline int phy_package_read_mmd(struct phy_device *phydev,
+ int global_phy_index, int devad, u32 regnum)
+{
+ struct phy_package_shared *shared = phydev->shared;
+ struct mii_bus *bus = phydev->mdio.bus;
+ int addr, val;
+
+ if (!shared || global_phy_index > shared->addrs_num - 1)
+ return -EIO;
+
+ addr = shared->addrs[global_phy_index];
+
+ phy_lock_mdio_bus(phydev);
+ mmd_phy_indirect(bus, addr, devad, regnum);
+ val = __mdiobus_read(bus, addr, MII_MMD_DATA);
+ phy_unlock_mdio_bus(phydev);
+
+ return val;
+}
+
+static inline int __phy_package_read_mmd(struct phy_device *phydev,
+ int global_phy_index, int devad, u32 regnum)
+{
+ struct phy_package_shared *shared = phydev->shared;
+ struct mii_bus *bus = phydev->mdio.bus;
+ int addr;
+
+ if (!shared || global_phy_index > shared->addrs_num - 1)
+ return -EIO;
+
+ addr = shared->addrs[global_phy_index];
+ mmd_phy_indirect(bus, addr, devad, regnum);
+ return __mdiobus_read(bus, addr, MII_MMD_DATA);
+}
+
+static inline int phy_package_write_mmd(struct phy_device *phydev,
+ int global_phy_index, int devad,
+ u32 regnum, u16 val)
+{
+ struct phy_package_shared *shared = phydev->shared;
+ struct mii_bus *bus = phydev->mdio.bus;
+ int addr, ret;
+
+ if (!shared || global_phy_index > shared->addrs_num - 1)
+ return -EIO;
+
+ addr = shared->addrs[global_phy_index];
+
+ phy_lock_mdio_bus(phydev);
+ mmd_phy_indirect(bus, addr, devad, regnum);
+ ret = __mdiobus_write(bus, addr, MII_MMD_DATA, val);
+ phy_unlock_mdio_bus(phydev);
+
+ return ret;
+}
+
+static inline int __phy_package_write_mmd(struct phy_device *phydev,
+ int global_phy_index, int devad,
+ u32 regnum, u16 val)
+{
+ struct phy_package_shared *shared = phydev->shared;
+ struct mii_bus *bus = phydev->mdio.bus;
+ int addr;
+
+ if (!shared || global_phy_index > shared->addrs_num - 1)
+ return -EIO;
+
+ addr = shared->addrs[global_phy_index];
+ mmd_phy_indirect(bus, addr, devad, regnum);
+ return __mdiobus_write(bus, addr, MII_MMD_DATA, val);
+}
+
static inline bool __phy_package_set_once(struct phy_device *phydev,
unsigned int b)
{
--
2.40.1
WARNING: multiple messages have this Message-ID (diff)
From: Christian Marangi <ansuelsmth@gmail.com>
To: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
Andy Gross <agross@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Andrew Lunn <andrew@lunn.ch>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Broadcom internal kernel review list
<bcm-kernel-feedback-list@broadcom.com>,
Daniel Golle <daniel@makrotopia.org>,
Qingfang Deng <dqfext@gmail.com>,
SkyLake Huang <SkyLake.Huang@mediatek.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Vladimir Oltean <olteanv@gmail.com>,
David Epping <david.epping@missinglinkelectronics.com>,
Harini Katakam <harini.katakam@amd.com>,
Christian Marangi <ansuelsmth@gmail.com>,
"Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>,
Robert Marko <robert.marko@sartura.hr>,
netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: [net-next RFC PATCH v2 07/11] net: phy: add support for PHY package MMD read/write
Date: Sat, 25 Nov 2023 01:11:23 +0100 [thread overview]
Message-ID: <20231125001127.5674-8-ansuelsmth@gmail.com> (raw)
In-Reply-To: <20231125001127.5674-1-ansuelsmth@gmail.com>
Some PHY in PHY package may require to read/write MMD regs to correctly
configure the PHY package.
Add support for these additional required function in both lock and no
lock variant.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
include/linux/phy.h | 72 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 0f3b21c90583..4c5856d9865d 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -2104,6 +2104,78 @@ static inline int __phy_package_write(struct phy_device *phydev,
return __mdiobus_write(phydev->mdio.bus, addr, regnum, val);
}
+static inline int phy_package_read_mmd(struct phy_device *phydev,
+ int global_phy_index, int devad, u32 regnum)
+{
+ struct phy_package_shared *shared = phydev->shared;
+ struct mii_bus *bus = phydev->mdio.bus;
+ int addr, val;
+
+ if (!shared || global_phy_index > shared->addrs_num - 1)
+ return -EIO;
+
+ addr = shared->addrs[global_phy_index];
+
+ phy_lock_mdio_bus(phydev);
+ mmd_phy_indirect(bus, addr, devad, regnum);
+ val = __mdiobus_read(bus, addr, MII_MMD_DATA);
+ phy_unlock_mdio_bus(phydev);
+
+ return val;
+}
+
+static inline int __phy_package_read_mmd(struct phy_device *phydev,
+ int global_phy_index, int devad, u32 regnum)
+{
+ struct phy_package_shared *shared = phydev->shared;
+ struct mii_bus *bus = phydev->mdio.bus;
+ int addr;
+
+ if (!shared || global_phy_index > shared->addrs_num - 1)
+ return -EIO;
+
+ addr = shared->addrs[global_phy_index];
+ mmd_phy_indirect(bus, addr, devad, regnum);
+ return __mdiobus_read(bus, addr, MII_MMD_DATA);
+}
+
+static inline int phy_package_write_mmd(struct phy_device *phydev,
+ int global_phy_index, int devad,
+ u32 regnum, u16 val)
+{
+ struct phy_package_shared *shared = phydev->shared;
+ struct mii_bus *bus = phydev->mdio.bus;
+ int addr, ret;
+
+ if (!shared || global_phy_index > shared->addrs_num - 1)
+ return -EIO;
+
+ addr = shared->addrs[global_phy_index];
+
+ phy_lock_mdio_bus(phydev);
+ mmd_phy_indirect(bus, addr, devad, regnum);
+ ret = __mdiobus_write(bus, addr, MII_MMD_DATA, val);
+ phy_unlock_mdio_bus(phydev);
+
+ return ret;
+}
+
+static inline int __phy_package_write_mmd(struct phy_device *phydev,
+ int global_phy_index, int devad,
+ u32 regnum, u16 val)
+{
+ struct phy_package_shared *shared = phydev->shared;
+ struct mii_bus *bus = phydev->mdio.bus;
+ int addr;
+
+ if (!shared || global_phy_index > shared->addrs_num - 1)
+ return -EIO;
+
+ addr = shared->addrs[global_phy_index];
+ mmd_phy_indirect(bus, addr, devad, regnum);
+ return __mdiobus_write(bus, addr, MII_MMD_DATA, val);
+}
+
static inline bool __phy_package_set_once(struct phy_device *phydev,
unsigned int b)
{
--
2.40.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-11-25 0:35 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-25 0:11 [net-next RFC PATCH v2 00/11] net: phy: Support DT PHY package Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 0:11 ` [net-next RFC PATCH v2 01/11] net: phy: extend PHY package API to support multiple global address Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 17:51 ` Andrew Lunn
2023-11-25 17:51 ` Andrew Lunn
2023-11-25 14:24 ` Christian Marangi
2023-11-25 14:24 ` Christian Marangi
2023-11-25 19:02 ` Andrew Lunn
2023-11-25 19:02 ` Andrew Lunn
2023-11-25 0:11 ` [net-next RFC PATCH v2 02/11] dt-bindings: net: document ethernet PHY package nodes Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 18:36 ` Andrew Lunn
2023-11-25 18:36 ` Andrew Lunn
2023-11-25 0:11 ` [net-next RFC PATCH v2 03/11] net: phy: add initial support for PHY package in DT Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 0:11 ` [net-next RFC PATCH v2 04/11] net: phy: add support for shared priv data size " Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 0:11 ` [net-next RFC PATCH v2 05/11] net: phy: add support for driver specific PHY package probe/config Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 0:11 ` [net-next RFC PATCH v2 06/11] net: phy: move mmd_phy_indirect to generic header Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 0:11 ` Christian Marangi [this message]
2023-11-25 0:11 ` [net-next RFC PATCH v2 07/11] net: phy: add support for PHY package MMD read/write Christian Marangi
2023-11-25 0:11 ` [net-next RFC PATCH v2 08/11] dt-bindings: net: add QCA807x PHY defines Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 0:11 ` [net-next RFC PATCH v2 09/11] dt-bindings: net: Document Qcom QCA807x PHY package Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 0:11 ` [net-next RFC PATCH v2 10/11] net: phy: add Qualcom QCA807x driver Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 0:11 ` [net-next RFC PATCH v2 11/11] net: phy: qca807x: Add support for configurable LED Christian Marangi
2023-11-25 0:11 ` Christian Marangi
2023-11-25 17:28 ` [net-next RFC PATCH v2 00/11] net: phy: Support DT PHY package Andrew Lunn
2023-11-25 17:28 ` Andrew Lunn
2023-11-25 13:50 ` Christian Marangi
2023-11-25 13:50 ` Christian Marangi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231125001127.5674-8-ansuelsmth@gmail.com \
--to=ansuelsmth@gmail.com \
--cc=SkyLake.Huang@mediatek.com \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=andrew@lunn.ch \
--cc=angelogioacchino.delregno@collabora.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=conor+dt@kernel.org \
--cc=daniel@makrotopia.org \
--cc=davem@davemloft.net \
--cc=david.epping@missinglinkelectronics.com \
--cc=devicetree@vger.kernel.org \
--cc=dqfext@gmail.com \
--cc=edumazet@google.com \
--cc=florian.fainelli@broadcom.com \
--cc=harini.katakam@amd.com \
--cc=hkallweit1@gmail.com \
--cc=konrad.dybcio@linaro.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=matthias.bgg@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=rmk+kernel@armlinux.org.uk \
--cc=robert.marko@sartura.hr \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.