All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Oltean <vladimir.oltean@nxp.com>
To: Joe Hershberger <joe.hershberger@ni.com>,
	Ramon Fried <rfried.dev@gmail.com>,
	u-boot@lists.denx.de
Cc: Claudiu Manoil <claudiu.manoil@nxp.com>,
	Michael Walle <michael@walle.cc>,
	Priyanka Jain <priyanka.jain@nxp.com>
Subject: [PATCH v2 4/6] net: dsa: introduce a .port_probe() method in struct dsa_ops
Date: Tue, 24 Aug 2021 15:00:41 +0300	[thread overview]
Message-ID: <20210824120043.3823931-5-vladimir.oltean@nxp.com> (raw)
In-Reply-To: <20210824120043.3823931-1-vladimir.oltean@nxp.com>

Some drivers might want to execute code for each port at probe time, as
opposed to executing code just-in-time for the port selected for
networking.

To cater to that use case, introduce a .port_probe() callback method
into the DSA switch operations which is called for each available port,
at the end of dsa_port_probe().

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Tested-by: Michael Walle <michael@walle.cc>
---
 include/net/dsa.h | 5 ++++-
 net/dsa-uclass.c  | 8 ++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/include/net/dsa.h b/include/net/dsa.h
index 0f31a908c9d1..ab2a9dfbea2d 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -57,7 +57,8 @@
 /**
  * struct dsa_ops - DSA operations
  *
- * @port_enable:  Initialize a switch port for I/O.
+ * @port_probe:   Initialize a switch port.
+ * @port_enable:  Enable I/O for a port.
  * @port_disable: Disable I/O for a port.
  * @xmit:         Insert the DSA tag for transmission.
  *                DSA drivers receive a copy of the packet with headroom and
@@ -69,6 +70,8 @@
  *                master including any additional headers.
  */
 struct dsa_ops {
+	int (*port_probe)(struct udevice *dev, int port,
+			  struct phy_device *phy);
 	int (*port_enable)(struct udevice *dev, int port,
 			   struct phy_device *phy);
 	void (*port_disable)(struct udevice *dev, int port,
diff --git a/net/dsa-uclass.c b/net/dsa-uclass.c
index dbd8558b6486..9b8ae1e82b92 100644
--- a/net/dsa-uclass.c
+++ b/net/dsa-uclass.c
@@ -270,6 +270,7 @@ static void dsa_port_set_hwaddr(struct udevice *pdev, struct udevice *master)
 static int dsa_port_probe(struct udevice *pdev)
 {
 	struct udevice *dev = dev_get_parent(pdev);
+	struct dsa_ops *ops = dsa_get_ops(dev);
 	struct dsa_port_pdata *port_pdata;
 	struct dsa_priv *dsa_priv;
 	struct udevice *master;
@@ -299,6 +300,13 @@ static int dsa_port_probe(struct udevice *pdev)
 
 	dsa_port_set_hwaddr(pdev, master);
 
+	if (ops->port_probe) {
+		err = ops->port_probe(dev, port_pdata->index,
+				      port_pdata->phy);
+		if (err)
+			return err;
+	}
+
 	return 0;
 }
 
-- 
2.25.1


  parent reply	other threads:[~2021-08-24 12:02 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-24 12:00 [PATCH v2 0/6] Call phy_config at port probe time for the Felix DSA driver Vladimir Oltean
2021-08-24 12:00 ` [PATCH v2 1/6] net: dsa: felix: felix_init() can be static Vladimir Oltean
2021-09-14  9:23   ` Ramon Fried
2021-08-24 12:00 ` [PATCH v2 2/6] net: dsa: use "err" instead of "ret" in dsa_port_probe Vladimir Oltean
2021-09-14  9:23   ` Ramon Fried
2021-08-24 12:00 ` [PATCH v2 3/6] net: dsa: refactor the code to set the port MAC address into a dedicated function Vladimir Oltean
2021-09-14  9:23   ` Ramon Fried
2021-08-24 12:00 ` Vladimir Oltean [this message]
2021-09-14  9:24   ` [PATCH v2 4/6] net: dsa: introduce a .port_probe() method in struct dsa_ops Ramon Fried
2021-08-24 12:00 ` [PATCH v2 5/6] net: dsa: felix: call phy_config at .port_probe() time Vladimir Oltean
2021-08-24 12:00 ` [PATCH v2 6/6] net: dsa: felix: propagate the error code from phy_startup() Vladimir Oltean
2021-09-14  9:24   ` Ramon Fried
2021-08-25 11:08 ` [PATCH v2 0/6] Call phy_config at port probe time for the Felix DSA driver Vladimir Oltean

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=20210824120043.3823931-5-vladimir.oltean@nxp.com \
    --to=vladimir.oltean@nxp.com \
    --cc=claudiu.manoil@nxp.com \
    --cc=joe.hershberger@ni.com \
    --cc=michael@walle.cc \
    --cc=priyanka.jain@nxp.com \
    --cc=rfried.dev@gmail.com \
    --cc=u-boot@lists.denx.de \
    /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.