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
next prev 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: linkBe 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.