From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
To: Andrew Lunn <andrew@lunn.ch>, Heiner Kallweit <hkallweit1@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org
Subject: [PATCH net-next 07/13] net: phy: add phy_config_inband()
Date: Tue, 03 Dec 2024 15:31:18 +0000 [thread overview]
Message-ID: <E1tIUru-006IUI-08@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <Z08kCwxdkU4n2V6x@shell.armlinux.org.uk>
Add a method to configure the PHY's in-band mode.
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/phy/phy.c | 32 ++++++++++++++++++++++++++++++++
include/linux/phy.h | 6 ++++++
2 files changed, 38 insertions(+)
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index f42cd6584841..0c228aa18019 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -1026,6 +1026,38 @@ unsigned int phy_inband_caps(struct phy_device *phydev,
}
EXPORT_SYMBOL_GPL(phy_inband_caps);
+/**
+ * phy_config_inband - configure the desired PHY in-band mode
+ * @phydev: the phy_device struct
+ * @modes: in-band modes to configure
+ *
+ * Description: disables, enables or enables-with-bypass in-band signalling
+ * between the PHY and host system.
+ *
+ * Returns: zero on success, or negative errno value.
+ */
+int phy_config_inband(struct phy_device *phydev, unsigned int modes)
+{
+ int err;
+
+ if (!!(modes & LINK_INBAND_DISABLE) +
+ !!(modes & LINK_INBAND_ENABLE) +
+ !!(modes & LINK_INBAND_BYPASS) != 1)
+ return -EINVAL;
+
+ mutex_lock(&phydev->lock);
+ if (!phydev->drv)
+ err = -EIO;
+ else if (!phydev->drv->config_inband)
+ err = -EOPNOTSUPP;
+ else
+ err = phydev->drv->config_inband(phydev, modes);
+ mutex_unlock(&phydev->lock);
+
+ return err;
+}
+EXPORT_SYMBOL(phy_config_inband);
+
/**
* _phy_start_aneg - start auto-negotiation for this PHY device
* @phydev: the phy_device struct
diff --git a/include/linux/phy.h b/include/linux/phy.h
index ccb93d892da9..61a1bc81f597 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -982,6 +982,11 @@ struct phy_driver {
unsigned int (*inband_caps)(struct phy_device *phydev,
phy_interface_t interface);
+ /**
+ * @config_inband: configure in-band mode for the PHY
+ */
+ int (*config_inband)(struct phy_device *phydev, unsigned int modes);
+
/**
* @get_rate_matching: Get the supported type of rate matching for a
* particular phy interface. This is used by phy consumers to determine
@@ -1846,6 +1851,7 @@ int phy_start_aneg(struct phy_device *phydev);
int phy_aneg_done(struct phy_device *phydev);
unsigned int phy_inband_caps(struct phy_device *phydev,
phy_interface_t interface);
+int phy_config_inband(struct phy_device *phydev, unsigned int modes);
int phy_speed_down(struct phy_device *phydev, bool sync);
int phy_speed_up(struct phy_device *phydev);
bool phy_check_valid(int speed, int duplex, unsigned long *features);
--
2.30.2
next prev parent reply other threads:[~2024-12-03 15:31 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-03 15:30 [PATCH net-next 00/13] net: add negotiation of in-band capabilities Russell King (Oracle)
2024-12-03 15:30 ` [PATCH net-next 01/13] net: phylink: pass phylink and pcs into phylink_pcs_neg_mode() Russell King (Oracle)
2024-12-03 15:30 ` [PATCH net-next 02/13] net: phylink: split cur_link_an_mode into requested and active Russell King (Oracle)
2024-12-03 15:30 ` [PATCH net-next 03/13] net: phylink: add debug for phylink_major_config() Russell King (Oracle)
2024-12-03 15:31 ` [PATCH net-next 04/13] net: phy: add phy_inband_caps() Russell King (Oracle)
2024-12-03 15:31 ` [PATCH net-next 05/13] net: phy: bcm84881: implement phy_inband_caps() method Russell King (Oracle)
2024-12-03 16:45 ` Florian Fainelli
2024-12-03 15:31 ` [PATCH net-next 06/13] net: phy: marvell: " Russell King (Oracle)
2024-12-03 15:31 ` Russell King (Oracle) [this message]
2024-12-03 15:31 ` [PATCH net-next 08/13] net: phy: marvell: implement config_inband() method Russell King (Oracle)
2024-12-03 15:31 ` [PATCH net-next 09/13] net: phylink: add pcs_inband_caps() method Russell King (Oracle)
2024-12-03 15:31 ` [PATCH net-next 10/13] net: mvneta: implement " Russell King (Oracle)
2024-12-03 15:31 ` [PATCH net-next 11/13] net: mvpp2: " Russell King (Oracle)
2024-12-03 15:31 ` [PATCH net-next 12/13] net: phylink: add negotiation of in-band capabilities Russell King (Oracle)
2024-12-03 15:31 ` [PATCH net-next 13/13] net: phylink: remove phylink_phy_no_inband() Russell King (Oracle)
2024-12-05 3:30 ` [PATCH net-next 00/13] net: add negotiation of in-band capabilities patchwork-bot+netdevbpf
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=E1tIUru-006IUI-08@rmk-PC.armlinux.org.uk \
--to=rmk+kernel@armlinux.org.uk \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/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.