All of lore.kernel.org
 help / color / mirror / Atom feed
From: Colin Foster <colin.foster@in-advantage.com>
To: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Vladimir Oltean <vladimir.oltean@nxp.com>,
	Claudiu Manoil <claudiu.manoil@nxp.com>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	UNGLinuxDriver@microchip.com, Andrew Lunn <andrew@lunn.ch>,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Ioana Ciornei <ioana.ciornei@nxp.com>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	Lars Povlsen <lars.povlsen@microchip.com>,
	Steen Hegelund <Steen.Hegelund@microchip.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: [RFC PATCH v4 net-next 16/23] pinctrl: microchip-sgpio: change device tree matches to use nodes instead of device
Date: Mon, 15 Nov 2021 22:23:21 -0800	[thread overview]
Message-ID: <20211116062328.1949151-17-colin.foster@in-advantage.com> (raw)
In-Reply-To: <20211116062328.1949151-1-colin.foster@in-advantage.com>

microchip-sgpio is being updated to support being a device of a device. As
such, standard devicetree parsing functions (device_property_count_u32) are
being changed to a lower level functions like fwnode_property_count_u32.

Signed-off-by: Colin Foster <colin.foster@in-advantage.com>
---
 drivers/pinctrl/pinctrl-microchip-sgpio.c | 72 +++++++++++++++--------
 1 file changed, 46 insertions(+), 26 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-microchip-sgpio.c b/drivers/pinctrl/pinctrl-microchip-sgpio.c
index 762611f76438..10736ef5c6ca 100644
--- a/drivers/pinctrl/pinctrl-microchip-sgpio.c
+++ b/drivers/pinctrl/pinctrl-microchip-sgpio.c
@@ -109,6 +109,7 @@ struct sgpio_bank {
 
 struct sgpio_priv {
 	struct device *dev;
+	struct device_node *dev_node;
 	struct sgpio_bank in;
 	struct sgpio_bank out;
 	u32 bitcount;
@@ -524,12 +525,16 @@ static int microchip_sgpio_of_xlate(struct gpio_chip *gc,
 static int microchip_sgpio_get_ports(struct sgpio_priv *priv)
 {
 	const char *range_property_name = "microchip,sgpio-port-ranges";
+	struct device_node *dev_node = priv->dev_node;
+	const struct fwnode_handle *fwnode_handle;
 	struct device *dev = priv->dev;
 	u32 range_params[64];
 	int i, nranges, ret;
 
+	fwnode_handle = of_fwnode_handle(dev_node);
+
 	/* Calculate port mask */
-	nranges = device_property_count_u32(dev, range_property_name);
+	nranges = fwnode_property_count_u32(fwnode_handle, range_property_name);
 	if (nranges < 2 || nranges % 2 || nranges > ARRAY_SIZE(range_params)) {
 		dev_err(dev, "%s port range: '%s' property\n",
 			nranges == -EINVAL ? "Missing" : "Invalid",
@@ -537,7 +542,7 @@ static int microchip_sgpio_get_ports(struct sgpio_priv *priv)
 		return -EINVAL;
 	}
 
-	ret = device_property_read_u32_array(dev, range_property_name,
+	ret = fwnode_property_read_u32_array(fwnode_handle, range_property_name,
 					     range_params, nranges);
 	if (ret) {
 		dev_err(dev, "failed to parse '%s' property: %d\n",
@@ -804,11 +809,38 @@ static int microchip_sgpio_register_bank(struct device *dev,
 	return ret;
 }
 
+static const struct of_device_id microchip_sgpio_gpio_of_match[] = {
+	{
+		.compatible = "microchip,sparx5-sgpio",
+		.data = &properties_sparx5,
+	}, {
+		.compatible = "mscc,luton-sgpio",
+		.data = &properties_luton,
+	}, {
+		.compatible = "mscc,ocelot-sgpio",
+		.data = &properties_ocelot,
+	}, {
+		/* sentinel */
+	}
+};
+
+static struct sgpio_properties
+*microchip_sgpio_match_from_node(struct device_node *node)
+{
+	const struct of_device_id *match;
+
+	match = of_match_node(of_match_ptr(microchip_sgpio_gpio_of_match), node);
+	if (match)
+		return (struct sgpio_properties *)match->data;
+	return NULL;
+}
+
 static int microchip_sgpio_probe(struct platform_device *pdev)
 {
 	int div_clock = 0, ret, port, i, nbanks;
 	struct device *dev = &pdev->dev;
-	struct fwnode_handle *fwnode;
+	struct device_node *node = dev_of_node(dev);
+	struct fwnode_handle *child, *fwnode;
 	struct reset_control *reset;
 	struct sgpio_priv *priv;
 	struct clk *clk;
@@ -825,18 +857,21 @@ static int microchip_sgpio_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	priv->dev = dev;
+	priv->dev_node = node;
+
+	fwnode = of_fwnode_handle(node);
 
-	reset = devm_reset_control_get_optional_shared(&pdev->dev, "switch");
+	reset = devm_reset_control_get_optional_shared(dev, "switch");
 	if (IS_ERR(reset))
 		return dev_err_probe(dev, PTR_ERR(reset), "Failed to get reset\n");
 	reset_control_reset(reset);
 
-	clk = devm_clk_get(dev, NULL);
+	clk = devm_get_clk_from_child(dev, node, NULL);
 	if (IS_ERR(clk))
 		return dev_err_probe(dev, PTR_ERR(clk), "Failed to get clock\n");
 
 	div_clock = clk_get_rate(clk);
-	if (device_property_read_u32(dev, "bus-frequency", &priv->clock))
+	if (fwnode_property_read_u32(fwnode, "bus-frequency", &priv->clock))
 		priv->clock = 12500000;
 	if (priv->clock == 0 || priv->clock > (div_clock / 2)) {
 		dev_err(dev, "Invalid frequency %d\n", priv->clock);
@@ -852,7 +887,7 @@ static int microchip_sgpio_probe(struct platform_device *pdev)
 		return PTR_ERR(priv->regs);
 
 	priv->regs_offset = 0;
-	priv->properties = device_get_match_data(dev);
+	priv->properties = microchip_sgpio_match_from_node(node);
 	priv->in.is_input = true;
 
 	/* Get rest of device properties */
@@ -860,17 +895,17 @@ static int microchip_sgpio_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	nbanks = device_get_child_node_count(dev);
+	nbanks = fwnode_get_child_node_count(fwnode);
 	if (nbanks != 2) {
 		dev_err(dev, "Must have 2 banks (have %d)\n", nbanks);
 		return -EINVAL;
 	}
 
 	i = 0;
-	device_for_each_child_node(dev, fwnode) {
-		ret = microchip_sgpio_register_bank(dev, priv, fwnode, i++);
+	fwnode_for_each_child_node(fwnode, child) {
+		ret = microchip_sgpio_register_bank(dev, priv, child, i++);
 		if (ret) {
-			fwnode_handle_put(fwnode);
+			fwnode_handle_put(child);
 			return ret;
 		}
 	}
@@ -892,21 +927,6 @@ static int microchip_sgpio_probe(struct platform_device *pdev)
 	return 0;
 }
 
-static const struct of_device_id microchip_sgpio_gpio_of_match[] = {
-	{
-		.compatible = "microchip,sparx5-sgpio",
-		.data = &properties_sparx5,
-	}, {
-		.compatible = "mscc,luton-sgpio",
-		.data = &properties_luton,
-	}, {
-		.compatible = "mscc,ocelot-sgpio",
-		.data = &properties_ocelot,
-	}, {
-		/* sentinel */
-	}
-};
-
 static struct platform_driver microchip_sgpio_pinctrl_driver = {
 	.driver = {
 		.name = "pinctrl-microchip-sgpio",
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: Colin Foster <colin.foster@in-advantage.com>
To: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Vladimir Oltean <vladimir.oltean@nxp.com>,
	Claudiu Manoil <claudiu.manoil@nxp.com>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	UNGLinuxDriver@microchip.com, Andrew Lunn <andrew@lunn.ch>,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Ioana Ciornei <ioana.ciornei@nxp.com>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	Lars Povlsen <lars.povlsen@microchip.com>,
	Steen Hegelund <Steen.Hegelund@microchip.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: [RFC PATCH v4 net-next 16/23] pinctrl: microchip-sgpio: change device tree matches to use nodes instead of device
Date: Mon, 15 Nov 2021 22:23:21 -0800	[thread overview]
Message-ID: <20211116062328.1949151-17-colin.foster@in-advantage.com> (raw)
In-Reply-To: <20211116062328.1949151-1-colin.foster@in-advantage.com>

microchip-sgpio is being updated to support being a device of a device. As
such, standard devicetree parsing functions (device_property_count_u32) are
being changed to a lower level functions like fwnode_property_count_u32.

Signed-off-by: Colin Foster <colin.foster@in-advantage.com>
---
 drivers/pinctrl/pinctrl-microchip-sgpio.c | 72 +++++++++++++++--------
 1 file changed, 46 insertions(+), 26 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-microchip-sgpio.c b/drivers/pinctrl/pinctrl-microchip-sgpio.c
index 762611f76438..10736ef5c6ca 100644
--- a/drivers/pinctrl/pinctrl-microchip-sgpio.c
+++ b/drivers/pinctrl/pinctrl-microchip-sgpio.c
@@ -109,6 +109,7 @@ struct sgpio_bank {
 
 struct sgpio_priv {
 	struct device *dev;
+	struct device_node *dev_node;
 	struct sgpio_bank in;
 	struct sgpio_bank out;
 	u32 bitcount;
@@ -524,12 +525,16 @@ static int microchip_sgpio_of_xlate(struct gpio_chip *gc,
 static int microchip_sgpio_get_ports(struct sgpio_priv *priv)
 {
 	const char *range_property_name = "microchip,sgpio-port-ranges";
+	struct device_node *dev_node = priv->dev_node;
+	const struct fwnode_handle *fwnode_handle;
 	struct device *dev = priv->dev;
 	u32 range_params[64];
 	int i, nranges, ret;
 
+	fwnode_handle = of_fwnode_handle(dev_node);
+
 	/* Calculate port mask */
-	nranges = device_property_count_u32(dev, range_property_name);
+	nranges = fwnode_property_count_u32(fwnode_handle, range_property_name);
 	if (nranges < 2 || nranges % 2 || nranges > ARRAY_SIZE(range_params)) {
 		dev_err(dev, "%s port range: '%s' property\n",
 			nranges == -EINVAL ? "Missing" : "Invalid",
@@ -537,7 +542,7 @@ static int microchip_sgpio_get_ports(struct sgpio_priv *priv)
 		return -EINVAL;
 	}
 
-	ret = device_property_read_u32_array(dev, range_property_name,
+	ret = fwnode_property_read_u32_array(fwnode_handle, range_property_name,
 					     range_params, nranges);
 	if (ret) {
 		dev_err(dev, "failed to parse '%s' property: %d\n",
@@ -804,11 +809,38 @@ static int microchip_sgpio_register_bank(struct device *dev,
 	return ret;
 }
 
+static const struct of_device_id microchip_sgpio_gpio_of_match[] = {
+	{
+		.compatible = "microchip,sparx5-sgpio",
+		.data = &properties_sparx5,
+	}, {
+		.compatible = "mscc,luton-sgpio",
+		.data = &properties_luton,
+	}, {
+		.compatible = "mscc,ocelot-sgpio",
+		.data = &properties_ocelot,
+	}, {
+		/* sentinel */
+	}
+};
+
+static struct sgpio_properties
+*microchip_sgpio_match_from_node(struct device_node *node)
+{
+	const struct of_device_id *match;
+
+	match = of_match_node(of_match_ptr(microchip_sgpio_gpio_of_match), node);
+	if (match)
+		return (struct sgpio_properties *)match->data;
+	return NULL;
+}
+
 static int microchip_sgpio_probe(struct platform_device *pdev)
 {
 	int div_clock = 0, ret, port, i, nbanks;
 	struct device *dev = &pdev->dev;
-	struct fwnode_handle *fwnode;
+	struct device_node *node = dev_of_node(dev);
+	struct fwnode_handle *child, *fwnode;
 	struct reset_control *reset;
 	struct sgpio_priv *priv;
 	struct clk *clk;
@@ -825,18 +857,21 @@ static int microchip_sgpio_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	priv->dev = dev;
+	priv->dev_node = node;
+
+	fwnode = of_fwnode_handle(node);
 
-	reset = devm_reset_control_get_optional_shared(&pdev->dev, "switch");
+	reset = devm_reset_control_get_optional_shared(dev, "switch");
 	if (IS_ERR(reset))
 		return dev_err_probe(dev, PTR_ERR(reset), "Failed to get reset\n");
 	reset_control_reset(reset);
 
-	clk = devm_clk_get(dev, NULL);
+	clk = devm_get_clk_from_child(dev, node, NULL);
 	if (IS_ERR(clk))
 		return dev_err_probe(dev, PTR_ERR(clk), "Failed to get clock\n");
 
 	div_clock = clk_get_rate(clk);
-	if (device_property_read_u32(dev, "bus-frequency", &priv->clock))
+	if (fwnode_property_read_u32(fwnode, "bus-frequency", &priv->clock))
 		priv->clock = 12500000;
 	if (priv->clock == 0 || priv->clock > (div_clock / 2)) {
 		dev_err(dev, "Invalid frequency %d\n", priv->clock);
@@ -852,7 +887,7 @@ static int microchip_sgpio_probe(struct platform_device *pdev)
 		return PTR_ERR(priv->regs);
 
 	priv->regs_offset = 0;
-	priv->properties = device_get_match_data(dev);
+	priv->properties = microchip_sgpio_match_from_node(node);
 	priv->in.is_input = true;
 
 	/* Get rest of device properties */
@@ -860,17 +895,17 @@ static int microchip_sgpio_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	nbanks = device_get_child_node_count(dev);
+	nbanks = fwnode_get_child_node_count(fwnode);
 	if (nbanks != 2) {
 		dev_err(dev, "Must have 2 banks (have %d)\n", nbanks);
 		return -EINVAL;
 	}
 
 	i = 0;
-	device_for_each_child_node(dev, fwnode) {
-		ret = microchip_sgpio_register_bank(dev, priv, fwnode, i++);
+	fwnode_for_each_child_node(fwnode, child) {
+		ret = microchip_sgpio_register_bank(dev, priv, child, i++);
 		if (ret) {
-			fwnode_handle_put(fwnode);
+			fwnode_handle_put(child);
 			return ret;
 		}
 	}
@@ -892,21 +927,6 @@ static int microchip_sgpio_probe(struct platform_device *pdev)
 	return 0;
 }
 
-static const struct of_device_id microchip_sgpio_gpio_of_match[] = {
-	{
-		.compatible = "microchip,sparx5-sgpio",
-		.data = &properties_sparx5,
-	}, {
-		.compatible = "mscc,luton-sgpio",
-		.data = &properties_luton,
-	}, {
-		.compatible = "mscc,ocelot-sgpio",
-		.data = &properties_ocelot,
-	}, {
-		/* sentinel */
-	}
-};
-
 static struct platform_driver microchip_sgpio_pinctrl_driver = {
 	.driver = {
 		.name = "pinctrl-microchip-sgpio",
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2021-11-16  6:28 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-16  6:23 [RFC PATCH v4 net-next 00/23] add support for VSC75XX control over SPI Colin Foster
2021-11-16  6:23 ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 01/23] net: dsa: ocelot: remove unnecessary pci_bar variables Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16 17:37   ` Florian Fainelli
2021-11-16 17:37     ` Florian Fainelli
2021-11-16  6:23 ` [RFC PATCH v4 net-next 02/23] net: mdio: mscc-miim: convert to a regmap implementation Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 03/23] net: dsa: ocelot: seville: utilize of_mdiobus_register Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16 11:21   ` Vladimir Oltean
2021-11-16 11:21     ` Vladimir Oltean
2021-11-16 23:51   ` Florian Fainelli
2021-11-16 23:51     ` Florian Fainelli
2021-11-16  6:23 ` [RFC PATCH v4 net-next 04/23] net: dsa: ocelot: felix: switch to mdio-mscc-miim driver for indirect mdio access Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 05/23] net: dsa: ocelot: felix: Remove requirement for PCS in felix devices Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 06/23] net: dsa: ocelot: felix: add interface for custom regmaps Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 07/23] net: dsa: ocelot: felix: add per-device-per-port quirks Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 08/23] net: mscc: ocelot: split register definitions to a separate file Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 09/23] net: mscc: ocelot: expose ocelot wm functions Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 10/23] pinctrl: ocelot: combine get resource and ioremap into single call Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 11/23] pinctrl: ocelot: update pinctrl to automatic base address Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16 17:36   ` Alexandre Belloni
2021-11-16 17:36     ` Alexandre Belloni
2021-11-17 13:47     ` Clément Léger
2021-11-17 13:47       ` Clément Léger
2021-11-19  2:16       ` Colin Foster
2021-11-19  2:16         ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 12/23] pinctrl: ocelot: convert pinctrl to regmap Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 13/23] pinctrl: ocelot: expose ocelot_pinctrl_core_probe interface Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-18 18:36   ` kernel test robot
2021-11-16  6:23 ` [RFC PATCH v4 net-next 14/23] pinctrl: microchip-sgpio: update to support regmap Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 15/23] device property: add helper function fwnode_get_child_node_count Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  8:23   ` Heikki Krogerus
2021-11-16  8:23     ` Heikki Krogerus
2021-11-16  6:23 ` Colin Foster [this message]
2021-11-16  6:23   ` [RFC PATCH v4 net-next 16/23] pinctrl: microchip-sgpio: change device tree matches to use nodes instead of device Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 17/23] pinctrl: microchip-sgpio: expose microchip_sgpio_core_probe interface Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-17 22:21   ` kernel test robot
2021-11-18  1:59   ` kernel test robot
2021-11-16  6:23 ` [RFC PATCH v4 net-next 18/23] net: phy: lynx: refactor Lynx PCS module to use generic phylink_pcs Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 19/23] net: dsa: felix: name change for clarity from pcs to mdio_device Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 20/23] net: dsa: seville: " Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 21/23] net: ethernet: enetc: " Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 22/23] net: pcs: lynx: use a common naming scheme for all lynx_pcs variables Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16  6:23 ` [RFC PATCH v4 net-next 23/23] net: dsa: ocelot: felix: add support for VSC75XX control over SPI Colin Foster
2021-11-16  6:23   ` Colin Foster
2021-11-16 10:34 ` [RFC PATCH v4 net-next 00/23] " Andy Shevchenko
2021-11-16 10:34   ` Andy Shevchenko
2021-11-16 15:04   ` Colin Foster
2021-11-16 15:04     ` Colin Foster
2021-11-16 17:05     ` Andy Shevchenko
2021-11-16 17:05       ` Andy Shevchenko
2021-11-16 11:10 ` Vladimir Oltean
2021-11-16 11:10   ` Vladimir Oltean
2021-11-16 15:32   ` Colin Foster
2021-11-16 15:32     ` Colin Foster
2021-11-16 17:41     ` Vladimir Oltean
2021-11-16 17:41       ` Vladimir Oltean
2021-11-16 22:56 ` Vladimir Oltean
2021-11-16 22:56   ` Vladimir Oltean
2021-11-16 23:44   ` Colin Foster
2021-11-16 23:44     ` Colin Foster
2021-11-16 23:47     ` Vladimir Oltean
2021-11-16 23:47       ` Vladimir Oltean
2021-11-19  1:58 ` Linus Walleij
2021-11-19  1:58   ` Linus Walleij
2021-11-19  2:14   ` Colin Foster
2021-11-19  2:14     ` Colin Foster
2021-11-21 23:59     ` Linus Walleij
2021-11-21 23:59       ` Linus Walleij
2021-11-19  9:32 [RFC PATCH v4 net-next 04/23] net: dsa: ocelot: felix: switch to mdio-mscc-miim driver for indirect mdio access kernel test robot
2021-11-22 10:20 ` Dan Carpenter

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=20211116062328.1949151-17-colin.foster@in-advantage.com \
    --to=colin.foster@in-advantage.com \
    --cc=Steen.Hegelund@microchip.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=andrew@lunn.ch \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=claudiu.manoil@nxp.com \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=hkallweit1@gmail.com \
    --cc=ioana.ciornei@nxp.com \
    --cc=kuba@kernel.org \
    --cc=lars.povlsen@microchip.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=rafael@kernel.org \
    --cc=vivien.didelot@gmail.com \
    --cc=vladimir.oltean@nxp.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.