From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
To: Andrew Lunn <andrew@lunn.ch>, Heiner Kallweit <hkallweit1@gmail.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
"Ar__n__ __NAL" <arinc.unal@arinc9.com>,
Claudiu Manoil <claudiu.manoil@nxp.com>,
Daniel Golle <daniel@makrotopia.org>,
"David S. Miller" <davem@davemloft.net>,
DENG Qingfang <dqfext@gmail.com>,
Eric Dumazet <edumazet@google.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Jakub Kicinski <kuba@kernel.org>,
Landen Chao <Landen.Chao@mediatek.com>,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org,
Matthias Brugger <matthias.bgg@gmail.com>,
netdev@vger.kernel.org, Paolo Abeni <pabeni@redhat.com>,
Sean Wang <sean.wang@mediatek.com>,
UNGLinuxDriver@microchip.com, Vladimir Oltean <olteanv@gmail.com>
Subject: [PATCH RFC net-next 02/14] net: phylink: add pcs_pre_config()/pcs_post_config() methods
Date: Fri, 23 Jun 2023 15:16:59 +0100 [thread overview]
Message-ID: <E1qChat-00FmrW-5i@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <ZJWpGCtIZ06jiBsO@shell.armlinux.org.uk>
Add hooks that are called before and after the mac_config() call,
which will be needed to deal with errata workarounds for the
Marvell 88e639x DSA switches.
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/phy/phylink.c | 24 ++++++++++++++++++++++++
include/linux/phylink.h | 6 ++++++
2 files changed, 30 insertions(+)
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 748c62efceb8..9840a2952309 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -998,6 +998,24 @@ static void phylink_resolve_an_pause(struct phylink_link_state *state)
}
}
+static void phylink_pcs_pre_config(struct phylink_pcs *pcs,
+ phy_interface_t interface)
+{
+ if (pcs && pcs->ops->pcs_pre_config)
+ pcs->ops->pcs_pre_config(pcs, interface);
+}
+
+static int phylink_pcs_post_config(struct phylink_pcs *pcs,
+ phy_interface_t interface)
+{
+ int err = 0;
+
+ if (pcs && pcs->ops->pcs_post_config)
+ err = pcs->ops->pcs_post_config(pcs, interface);
+
+ return err;
+}
+
static void phylink_pcs_disable(struct phylink_pcs *pcs)
{
if (pcs && pcs->ops->pcs_disable)
@@ -1122,8 +1140,14 @@ static void phylink_major_config(struct phylink *pl, bool restart,
pl->pcs = pcs;
}
+ if (pl->pcs)
+ phylink_pcs_pre_config(pl->pcs, state->interface);
+
phylink_mac_config(pl, state);
+ if (pl->pcs)
+ phylink_pcs_post_config(pl->pcs, state->interface);
+
if (pl->pcs_state == PCS_STATE_STARTING || pcs_changed)
phylink_pcs_enable(pl->pcs);
diff --git a/include/linux/phylink.h b/include/linux/phylink.h
index c08ab8ed80aa..e609b208fa3d 100644
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
@@ -535,6 +535,8 @@ struct phylink_pcs {
* @pcs_validate: validate the link configuration.
* @pcs_enable: enable the PCS.
* @pcs_disable: disable the PCS.
+ * @pcs_pre_config: pre-mac_config method (for errata)
+ * @pcs_post_config: post-mac_config method (for arrata)
* @pcs_get_state: read the current MAC PCS link state from the hardware.
* @pcs_config: configure the MAC PCS for the selected mode and state.
* @pcs_an_restart: restart 802.3z BaseX autonegotiation.
@@ -546,6 +548,10 @@ struct phylink_pcs_ops {
const struct phylink_link_state *state);
int (*pcs_enable)(struct phylink_pcs *pcs);
void (*pcs_disable)(struct phylink_pcs *pcs);
+ void (*pcs_pre_config)(struct phylink_pcs *pcs,
+ phy_interface_t interface);
+ int (*pcs_post_config)(struct phylink_pcs *pcs,
+ phy_interface_t interface);
void (*pcs_get_state)(struct phylink_pcs *pcs,
struct phylink_link_state *state);
int (*pcs_config)(struct phylink_pcs *pcs, unsigned int neg_mode,
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
To: Andrew Lunn <andrew@lunn.ch>, Heiner Kallweit <hkallweit1@gmail.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
"Ar__n__ __NAL" <arinc.unal@arinc9.com>,
Claudiu Manoil <claudiu.manoil@nxp.com>,
Daniel Golle <daniel@makrotopia.org>,
"David S. Miller" <davem@davemloft.net>,
DENG Qingfang <dqfext@gmail.com>,
Eric Dumazet <edumazet@google.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Jakub Kicinski <kuba@kernel.org>,
Landen Chao <Landen.Chao@mediatek.com>,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org,
Matthias Brugger <matthias.bgg@gmail.com>,
netdev@vger.kernel.org, Paolo Abeni <pabeni@redhat.com>,
Sean Wang <sean.wang@mediatek.com>,
UNGLinuxDriver@microchip.com, Vladimir Oltean <olteanv@gmail.com>
Subject: [PATCH RFC net-next 02/14] net: phylink: add pcs_pre_config()/pcs_post_config() methods
Date: Fri, 23 Jun 2023 15:16:59 +0100 [thread overview]
Message-ID: <E1qChat-00FmrW-5i@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <ZJWpGCtIZ06jiBsO@shell.armlinux.org.uk>
Add hooks that are called before and after the mac_config() call,
which will be needed to deal with errata workarounds for the
Marvell 88e639x DSA switches.
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
drivers/net/phy/phylink.c | 24 ++++++++++++++++++++++++
include/linux/phylink.h | 6 ++++++
2 files changed, 30 insertions(+)
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 748c62efceb8..9840a2952309 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -998,6 +998,24 @@ static void phylink_resolve_an_pause(struct phylink_link_state *state)
}
}
+static void phylink_pcs_pre_config(struct phylink_pcs *pcs,
+ phy_interface_t interface)
+{
+ if (pcs && pcs->ops->pcs_pre_config)
+ pcs->ops->pcs_pre_config(pcs, interface);
+}
+
+static int phylink_pcs_post_config(struct phylink_pcs *pcs,
+ phy_interface_t interface)
+{
+ int err = 0;
+
+ if (pcs && pcs->ops->pcs_post_config)
+ err = pcs->ops->pcs_post_config(pcs, interface);
+
+ return err;
+}
+
static void phylink_pcs_disable(struct phylink_pcs *pcs)
{
if (pcs && pcs->ops->pcs_disable)
@@ -1122,8 +1140,14 @@ static void phylink_major_config(struct phylink *pl, bool restart,
pl->pcs = pcs;
}
+ if (pl->pcs)
+ phylink_pcs_pre_config(pl->pcs, state->interface);
+
phylink_mac_config(pl, state);
+ if (pl->pcs)
+ phylink_pcs_post_config(pl->pcs, state->interface);
+
if (pl->pcs_state == PCS_STATE_STARTING || pcs_changed)
phylink_pcs_enable(pl->pcs);
diff --git a/include/linux/phylink.h b/include/linux/phylink.h
index c08ab8ed80aa..e609b208fa3d 100644
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
@@ -535,6 +535,8 @@ struct phylink_pcs {
* @pcs_validate: validate the link configuration.
* @pcs_enable: enable the PCS.
* @pcs_disable: disable the PCS.
+ * @pcs_pre_config: pre-mac_config method (for errata)
+ * @pcs_post_config: post-mac_config method (for arrata)
* @pcs_get_state: read the current MAC PCS link state from the hardware.
* @pcs_config: configure the MAC PCS for the selected mode and state.
* @pcs_an_restart: restart 802.3z BaseX autonegotiation.
@@ -546,6 +548,10 @@ struct phylink_pcs_ops {
const struct phylink_link_state *state);
int (*pcs_enable)(struct phylink_pcs *pcs);
void (*pcs_disable)(struct phylink_pcs *pcs);
+ void (*pcs_pre_config)(struct phylink_pcs *pcs,
+ phy_interface_t interface);
+ int (*pcs_post_config)(struct phylink_pcs *pcs,
+ phy_interface_t interface);
void (*pcs_get_state)(struct phylink_pcs *pcs,
struct phylink_link_state *state);
int (*pcs_config)(struct phylink_pcs *pcs, unsigned int neg_mode,
--
2.30.2
next prev parent reply other threads:[~2023-06-23 14:19 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-23 14:15 [PATCH RFC net-next 00/14] dsa/88e6xxx/phylink changes after the next merge window Russell King (Oracle)
2023-06-23 14:15 ` Russell King (Oracle)
2023-06-23 14:16 ` [PATCH RFC net-next 01/14] net: phylink: add pcs_enable()/pcs_disable() methods Russell King (Oracle)
2023-06-23 14:16 ` Russell King (Oracle)
2023-06-23 14:16 ` Russell King (Oracle) [this message]
2023-06-23 14:16 ` [PATCH RFC net-next 02/14] net: phylink: add pcs_pre_config()/pcs_post_config() methods Russell King (Oracle)
2023-06-23 14:17 ` [PATCH RFC net-next 03/14] net: phylink: add support for PCS link change notifications Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2024-01-23 19:46 ` Sean Anderson
2024-01-23 19:46 ` Sean Anderson
2024-01-23 20:07 ` Russell King (Oracle)
2024-01-23 20:07 ` Russell King (Oracle)
2024-01-23 20:33 ` Sean Anderson
2024-01-23 20:33 ` Sean Anderson
2024-01-23 21:05 ` Russell King (Oracle)
2024-01-23 21:05 ` Russell King (Oracle)
2024-01-23 21:09 ` Sean Anderson
2024-01-23 21:09 ` Sean Anderson
2023-06-23 14:17 ` [PATCH RFC net-next 04/14] net: mdio: add unlocked mdiobus and mdiodev bus accessors Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2023-06-23 14:17 ` [PATCH RFC net-next 05/14] net: dsa: mv88e6xxx: remove handling for DSA and CPU ports Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2023-06-23 14:17 ` [PATCH RFC net-next 06/14] net: dsa: mv88e6xxx: add infrastructure for phylink_pcs Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2023-06-23 14:17 ` [PATCH RFC net-next 07/14] net: dsa: mv88e6xxx: export mv88e6xxx_pcs_decode_state() Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2023-06-23 14:17 ` [PATCH RFC net-next 08/14] net: dsa: mv88e6xxx: convert 88e6185 to phylink_pcs Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2023-06-23 14:17 ` [PATCH RFC net-next 09/14] net: dsa: mv88e6xxx: convert 88e6352 " Russell King
2023-06-23 14:17 ` Russell King
2023-06-23 14:17 ` [PATCH RFC net-next 10/14] net: dsa: mv88e6xxx: convert 88e639x " Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2023-06-23 14:17 ` [PATCH RFC net-next 11/14] net: dsa: mv88e6xxx: cleanup after phylink_pcs conversion Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2023-06-23 14:17 ` [PATCH RFC net-next 12/14] net: dsa: remove legacy_pre_march2020 detection Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2023-06-23 14:17 ` [PATCH RFC net-next 13/14] net: dsa: remove legacy_pre_march2020 from drivers Russell King (Oracle)
2023-06-23 14:17 ` Russell King (Oracle)
2023-06-23 14:18 ` [PATCH RFC net-next 14/14] net: phylink: remove legacy mac_an_restart() method Russell King (Oracle)
2023-06-23 14:18 ` Russell King (Oracle)
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=E1qChat-00FmrW-5i@rmk-PC.armlinux.org.uk \
--to=rmk+kernel@armlinux.org.uk \
--cc=Landen.Chao@mediatek.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andrew@lunn.ch \
--cc=angelogioacchino.delregno@collabora.com \
--cc=arinc.unal@arinc9.com \
--cc=claudiu.manoil@nxp.com \
--cc=daniel@makrotopia.org \
--cc=davem@davemloft.net \
--cc=dqfext@gmail.com \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=sean.wang@mediatek.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.