All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Eric Anholt <eric@anholt.net>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
	devicetree@vger.kernel.org, Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Wim Van Sebroeck <wim@linux-watchdog.org>,
	linux-watchdog@vger.kernel.org,
	linux-rpi-kernel@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Stefan Wahren <stefan.wahren@i2se.com>,
	bcm-kernel-feedback-list@broadcom.com
Subject: Re: [PATCH v3 2/5] bcm2835-pm: Move bcm2835-watchdog's DT probe to an MFD.
Date: Fri, 30 Nov 2018 14:10:44 -0800	[thread overview]
Message-ID: <20181130221044.GA15333@roeck-us.net> (raw)
In-Reply-To: <20181130202743.20585-3-eric@anholt.net>

On Fri, Nov 30, 2018 at 12:27:40PM -0800, Eric Anholt wrote:
> The PM block that the wdt driver was binding to actually has multiple
> features we want to expose (power domains, reset, watchdog).  Move the
> DT attachment to a MFD driver and make WDT probe against MFD.
> 
> Signed-off-by: Eric Anholt <eric@anholt.net>

For watchdog:

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
> 
> v3: don't reset bcm2835_power_off_wdt on remove, drop pm driver's
>     empty remove, sort includes, add a "static".
> 
>  arch/arm/mach-bcm/Kconfig      |  1 +
>  drivers/mfd/Makefile           |  1 +
>  drivers/mfd/bcm2835-pm.c       | 64 ++++++++++++++++++++++++++++++++++
>  drivers/watchdog/bcm2835_wdt.c | 26 +++++---------
>  include/linux/mfd/bcm2835-pm.h | 13 +++++++
>  5 files changed, 88 insertions(+), 17 deletions(-)
>  create mode 100644 drivers/mfd/bcm2835-pm.c
>  create mode 100644 include/linux/mfd/bcm2835-pm.h
> 
> diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
> index 25aac6ee2ab1..95242c2162a2 100644
> --- a/arch/arm/mach-bcm/Kconfig
> +++ b/arch/arm/mach-bcm/Kconfig
> @@ -167,6 +167,7 @@ config ARCH_BCM2835
>  	select BCM2835_TIMER
>  	select PINCTRL
>  	select PINCTRL_BCM2835
> +	select MFD_CORE
>  	help
>  	  This enables support for the Broadcom BCM2835 and BCM2836 SoCs.
>  	  This SoC is used in the Raspberry Pi and Roku 2 devices.
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 12980a4ad460..ee6fb6af655e 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -10,6 +10,7 @@ obj-$(CONFIG_MFD_88PM805)	+= 88pm805.o 88pm80x.o
>  obj-$(CONFIG_MFD_ACT8945A)	+= act8945a.o
>  obj-$(CONFIG_MFD_SM501)		+= sm501.o
>  obj-$(CONFIG_MFD_ASIC3)		+= asic3.o tmio_core.o
> +obj-$(CONFIG_ARCH_BCM2835)	+= bcm2835-pm.o
>  obj-$(CONFIG_MFD_BCM590XX)	+= bcm590xx.o
>  obj-$(CONFIG_MFD_BD9571MWV)	+= bd9571mwv.o
>  cros_ec_core-objs		:= cros_ec.o
> diff --git a/drivers/mfd/bcm2835-pm.c b/drivers/mfd/bcm2835-pm.c
> new file mode 100644
> index 000000000000..53839e6a81e7
> --- /dev/null
> +++ b/drivers/mfd/bcm2835-pm.c
> @@ -0,0 +1,64 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * PM MFD driver for Broadcom BCM2835
> + *
> + * This driver binds to the PM block and creates the MFD device for
> + * the WDT driver.
> + */
> +
> +#include <linux/delay.h>
> +#include <linux/io.h>
> +#include <linux/mfd/bcm2835-pm.h>
> +#include <linux/mfd/core.h>
> +#include <linux/module.h>
> +#include <linux/of_address.h>
> +#include <linux/of_platform.h>
> +#include <linux/platform_device.h>
> +#include <linux/types.h>
> +#include <linux/watchdog.h>
> +
> +static const struct mfd_cell bcm2835_pm_devs[] = {
> +	{ .name = "bcm2835-wdt" },
> +};
> +
> +static int bcm2835_pm_probe(struct platform_device *pdev)
> +{
> +	struct resource *res;
> +	struct device *dev = &pdev->dev;
> +	struct bcm2835_pm *pm;
> +
> +	pm = devm_kzalloc(dev, sizeof(*pm), GFP_KERNEL);
> +	if (!pm)
> +		return -ENOMEM;
> +	platform_set_drvdata(pdev, pm);
> +
> +	pm->dev = dev;
> +
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	pm->base = devm_ioremap_resource(dev, res);
> +	if (IS_ERR(pm->base))
> +		return PTR_ERR(pm->base);
> +
> +	return devm_mfd_add_devices(dev, -1,
> +				    bcm2835_pm_devs, ARRAY_SIZE(bcm2835_pm_devs),
> +				    NULL, 0, NULL);
> +}
> +
> +static const struct of_device_id bcm2835_pm_of_match[] = {
> +	{ .compatible = "brcm,bcm2835-pm-wdt", },
> +	{},
> +};
> +MODULE_DEVICE_TABLE(of, bcm2835_pm_of_match);
> +
> +static struct platform_driver bcm2835_pm_driver = {
> +	.probe		= bcm2835_pm_probe,
> +	.driver = {
> +		.name =	"bcm2835-pm",
> +		.of_match_table = bcm2835_pm_of_match,
> +	},
> +};
> +module_platform_driver(bcm2835_pm_driver);
> +
> +MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
> +MODULE_DESCRIPTION("Driver for Broadcom BCM2835 PM MFD");
> +MODULE_LICENSE("GPL");
> diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c
> index ed05514cc2dc..1834524ae373 100644
> --- a/drivers/watchdog/bcm2835_wdt.c
> +++ b/drivers/watchdog/bcm2835_wdt.c
> @@ -12,6 +12,7 @@
>  
>  #include <linux/delay.h>
>  #include <linux/types.h>
> +#include <linux/mfd/bcm2835-pm.h>
>  #include <linux/module.h>
>  #include <linux/io.h>
>  #include <linux/watchdog.h>
> @@ -47,6 +48,8 @@ struct bcm2835_wdt {
>  	spinlock_t		lock;
>  };
>  
> +static struct bcm2835_wdt *bcm2835_power_off_wdt;
> +
>  static unsigned int heartbeat;
>  static bool nowayout = WATCHDOG_NOWAYOUT;
>  
> @@ -148,10 +151,7 @@ static struct watchdog_device bcm2835_wdt_wdd = {
>   */
>  static void bcm2835_power_off(void)
>  {
> -	struct device_node *np =
> -		of_find_compatible_node(NULL, NULL, "brcm,bcm2835-pm-wdt");
> -	struct platform_device *pdev = of_find_device_by_node(np);
> -	struct bcm2835_wdt *wdt = platform_get_drvdata(pdev);
> +	struct bcm2835_wdt *wdt = bcm2835_power_off_wdt;
>  	u32 val;
>  
>  	/*
> @@ -169,7 +169,7 @@ static void bcm2835_power_off(void)
>  
>  static int bcm2835_wdt_probe(struct platform_device *pdev)
>  {
> -	struct resource *res;
> +	struct bcm2835_pm *pm = dev_get_drvdata(pdev->dev.parent);
>  	struct device *dev = &pdev->dev;
>  	struct bcm2835_wdt *wdt;
>  	int err;
> @@ -181,10 +181,7 @@ static int bcm2835_wdt_probe(struct platform_device *pdev)
>  
>  	spin_lock_init(&wdt->lock);
>  
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	wdt->base = devm_ioremap_resource(dev, res);
> -	if (IS_ERR(wdt->base))
> -		return PTR_ERR(wdt->base);
> +	wdt->base = pm->base;
>  
>  	watchdog_set_drvdata(&bcm2835_wdt_wdd, wdt);
>  	watchdog_init_timeout(&bcm2835_wdt_wdd, heartbeat, dev);
> @@ -211,8 +208,10 @@ static int bcm2835_wdt_probe(struct platform_device *pdev)
>  		return err;
>  	}
>  
> -	if (pm_power_off == NULL)
> +	if (pm_power_off == NULL) {
>  		pm_power_off = bcm2835_power_off;
> +		bcm2835_power_off_wdt = wdt;
> +	}
>  
>  	dev_info(dev, "Broadcom BCM2835 watchdog timer");
>  	return 0;
> @@ -226,18 +225,11 @@ static int bcm2835_wdt_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -static const struct of_device_id bcm2835_wdt_of_match[] = {
> -	{ .compatible = "brcm,bcm2835-pm-wdt", },
> -	{},
> -};
> -MODULE_DEVICE_TABLE(of, bcm2835_wdt_of_match);
> -
>  static struct platform_driver bcm2835_wdt_driver = {
>  	.probe		= bcm2835_wdt_probe,
>  	.remove		= bcm2835_wdt_remove,
>  	.driver = {
>  		.name =		"bcm2835-wdt",
> -		.of_match_table = bcm2835_wdt_of_match,
>  	},
>  };
>  module_platform_driver(bcm2835_wdt_driver);
> diff --git a/include/linux/mfd/bcm2835-pm.h b/include/linux/mfd/bcm2835-pm.h
> new file mode 100644
> index 000000000000..b7d0ee1feffa
> --- /dev/null
> +++ b/include/linux/mfd/bcm2835-pm.h
> @@ -0,0 +1,13 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +
> +#ifndef BCM2835_MFD_PM_H
> +#define BCM2835_MFD_PM_H
> +
> +#include <linux/regmap.h>
> +
> +struct bcm2835_pm {
> +	struct device *dev;
> +	void __iomem *base;
> +};
> +
> +#endif /* BCM2835_MFD_PM_H */
> -- 
> 2.20.0.rc1
> 

WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: Eric Anholt <eric@anholt.net>
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org,
	Florian Fainelli <f.fainelli@gmail.com>,
	linux-watchdog@vger.kernel.org,
	Stefan Wahren <stefan.wahren@i2se.com>,
	linux-kernel@vger.kernel.org, Rob Herring <robh+dt@kernel.org>,
	bcm-kernel-feedback-list@broadcom.com,
	linux-rpi-kernel@lists.infradead.org,
	Wim Van Sebroeck <wim@linux-watchdog.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 2/5] bcm2835-pm: Move bcm2835-watchdog's DT probe to an MFD.
Date: Fri, 30 Nov 2018 14:10:44 -0800	[thread overview]
Message-ID: <20181130221044.GA15333@roeck-us.net> (raw)
In-Reply-To: <20181130202743.20585-3-eric@anholt.net>

On Fri, Nov 30, 2018 at 12:27:40PM -0800, Eric Anholt wrote:
> The PM block that the wdt driver was binding to actually has multiple
> features we want to expose (power domains, reset, watchdog).  Move the
> DT attachment to a MFD driver and make WDT probe against MFD.
> 
> Signed-off-by: Eric Anholt <eric@anholt.net>

For watchdog:

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
> 
> v3: don't reset bcm2835_power_off_wdt on remove, drop pm driver's
>     empty remove, sort includes, add a "static".
> 
>  arch/arm/mach-bcm/Kconfig      |  1 +
>  drivers/mfd/Makefile           |  1 +
>  drivers/mfd/bcm2835-pm.c       | 64 ++++++++++++++++++++++++++++++++++
>  drivers/watchdog/bcm2835_wdt.c | 26 +++++---------
>  include/linux/mfd/bcm2835-pm.h | 13 +++++++
>  5 files changed, 88 insertions(+), 17 deletions(-)
>  create mode 100644 drivers/mfd/bcm2835-pm.c
>  create mode 100644 include/linux/mfd/bcm2835-pm.h
> 
> diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
> index 25aac6ee2ab1..95242c2162a2 100644
> --- a/arch/arm/mach-bcm/Kconfig
> +++ b/arch/arm/mach-bcm/Kconfig
> @@ -167,6 +167,7 @@ config ARCH_BCM2835
>  	select BCM2835_TIMER
>  	select PINCTRL
>  	select PINCTRL_BCM2835
> +	select MFD_CORE
>  	help
>  	  This enables support for the Broadcom BCM2835 and BCM2836 SoCs.
>  	  This SoC is used in the Raspberry Pi and Roku 2 devices.
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 12980a4ad460..ee6fb6af655e 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -10,6 +10,7 @@ obj-$(CONFIG_MFD_88PM805)	+= 88pm805.o 88pm80x.o
>  obj-$(CONFIG_MFD_ACT8945A)	+= act8945a.o
>  obj-$(CONFIG_MFD_SM501)		+= sm501.o
>  obj-$(CONFIG_MFD_ASIC3)		+= asic3.o tmio_core.o
> +obj-$(CONFIG_ARCH_BCM2835)	+= bcm2835-pm.o
>  obj-$(CONFIG_MFD_BCM590XX)	+= bcm590xx.o
>  obj-$(CONFIG_MFD_BD9571MWV)	+= bd9571mwv.o
>  cros_ec_core-objs		:= cros_ec.o
> diff --git a/drivers/mfd/bcm2835-pm.c b/drivers/mfd/bcm2835-pm.c
> new file mode 100644
> index 000000000000..53839e6a81e7
> --- /dev/null
> +++ b/drivers/mfd/bcm2835-pm.c
> @@ -0,0 +1,64 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * PM MFD driver for Broadcom BCM2835
> + *
> + * This driver binds to the PM block and creates the MFD device for
> + * the WDT driver.
> + */
> +
> +#include <linux/delay.h>
> +#include <linux/io.h>
> +#include <linux/mfd/bcm2835-pm.h>
> +#include <linux/mfd/core.h>
> +#include <linux/module.h>
> +#include <linux/of_address.h>
> +#include <linux/of_platform.h>
> +#include <linux/platform_device.h>
> +#include <linux/types.h>
> +#include <linux/watchdog.h>
> +
> +static const struct mfd_cell bcm2835_pm_devs[] = {
> +	{ .name = "bcm2835-wdt" },
> +};
> +
> +static int bcm2835_pm_probe(struct platform_device *pdev)
> +{
> +	struct resource *res;
> +	struct device *dev = &pdev->dev;
> +	struct bcm2835_pm *pm;
> +
> +	pm = devm_kzalloc(dev, sizeof(*pm), GFP_KERNEL);
> +	if (!pm)
> +		return -ENOMEM;
> +	platform_set_drvdata(pdev, pm);
> +
> +	pm->dev = dev;
> +
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	pm->base = devm_ioremap_resource(dev, res);
> +	if (IS_ERR(pm->base))
> +		return PTR_ERR(pm->base);
> +
> +	return devm_mfd_add_devices(dev, -1,
> +				    bcm2835_pm_devs, ARRAY_SIZE(bcm2835_pm_devs),
> +				    NULL, 0, NULL);
> +}
> +
> +static const struct of_device_id bcm2835_pm_of_match[] = {
> +	{ .compatible = "brcm,bcm2835-pm-wdt", },
> +	{},
> +};
> +MODULE_DEVICE_TABLE(of, bcm2835_pm_of_match);
> +
> +static struct platform_driver bcm2835_pm_driver = {
> +	.probe		= bcm2835_pm_probe,
> +	.driver = {
> +		.name =	"bcm2835-pm",
> +		.of_match_table = bcm2835_pm_of_match,
> +	},
> +};
> +module_platform_driver(bcm2835_pm_driver);
> +
> +MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
> +MODULE_DESCRIPTION("Driver for Broadcom BCM2835 PM MFD");
> +MODULE_LICENSE("GPL");
> diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c
> index ed05514cc2dc..1834524ae373 100644
> --- a/drivers/watchdog/bcm2835_wdt.c
> +++ b/drivers/watchdog/bcm2835_wdt.c
> @@ -12,6 +12,7 @@
>  
>  #include <linux/delay.h>
>  #include <linux/types.h>
> +#include <linux/mfd/bcm2835-pm.h>
>  #include <linux/module.h>
>  #include <linux/io.h>
>  #include <linux/watchdog.h>
> @@ -47,6 +48,8 @@ struct bcm2835_wdt {
>  	spinlock_t		lock;
>  };
>  
> +static struct bcm2835_wdt *bcm2835_power_off_wdt;
> +
>  static unsigned int heartbeat;
>  static bool nowayout = WATCHDOG_NOWAYOUT;
>  
> @@ -148,10 +151,7 @@ static struct watchdog_device bcm2835_wdt_wdd = {
>   */
>  static void bcm2835_power_off(void)
>  {
> -	struct device_node *np =
> -		of_find_compatible_node(NULL, NULL, "brcm,bcm2835-pm-wdt");
> -	struct platform_device *pdev = of_find_device_by_node(np);
> -	struct bcm2835_wdt *wdt = platform_get_drvdata(pdev);
> +	struct bcm2835_wdt *wdt = bcm2835_power_off_wdt;
>  	u32 val;
>  
>  	/*
> @@ -169,7 +169,7 @@ static void bcm2835_power_off(void)
>  
>  static int bcm2835_wdt_probe(struct platform_device *pdev)
>  {
> -	struct resource *res;
> +	struct bcm2835_pm *pm = dev_get_drvdata(pdev->dev.parent);
>  	struct device *dev = &pdev->dev;
>  	struct bcm2835_wdt *wdt;
>  	int err;
> @@ -181,10 +181,7 @@ static int bcm2835_wdt_probe(struct platform_device *pdev)
>  
>  	spin_lock_init(&wdt->lock);
>  
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	wdt->base = devm_ioremap_resource(dev, res);
> -	if (IS_ERR(wdt->base))
> -		return PTR_ERR(wdt->base);
> +	wdt->base = pm->base;
>  
>  	watchdog_set_drvdata(&bcm2835_wdt_wdd, wdt);
>  	watchdog_init_timeout(&bcm2835_wdt_wdd, heartbeat, dev);
> @@ -211,8 +208,10 @@ static int bcm2835_wdt_probe(struct platform_device *pdev)
>  		return err;
>  	}
>  
> -	if (pm_power_off == NULL)
> +	if (pm_power_off == NULL) {
>  		pm_power_off = bcm2835_power_off;
> +		bcm2835_power_off_wdt = wdt;
> +	}
>  
>  	dev_info(dev, "Broadcom BCM2835 watchdog timer");
>  	return 0;
> @@ -226,18 +225,11 @@ static int bcm2835_wdt_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -static const struct of_device_id bcm2835_wdt_of_match[] = {
> -	{ .compatible = "brcm,bcm2835-pm-wdt", },
> -	{},
> -};
> -MODULE_DEVICE_TABLE(of, bcm2835_wdt_of_match);
> -
>  static struct platform_driver bcm2835_wdt_driver = {
>  	.probe		= bcm2835_wdt_probe,
>  	.remove		= bcm2835_wdt_remove,
>  	.driver = {
>  		.name =		"bcm2835-wdt",
> -		.of_match_table = bcm2835_wdt_of_match,
>  	},
>  };
>  module_platform_driver(bcm2835_wdt_driver);
> diff --git a/include/linux/mfd/bcm2835-pm.h b/include/linux/mfd/bcm2835-pm.h
> new file mode 100644
> index 000000000000..b7d0ee1feffa
> --- /dev/null
> +++ b/include/linux/mfd/bcm2835-pm.h
> @@ -0,0 +1,13 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +
> +#ifndef BCM2835_MFD_PM_H
> +#define BCM2835_MFD_PM_H
> +
> +#include <linux/regmap.h>
> +
> +struct bcm2835_pm {
> +	struct device *dev;
> +	void __iomem *base;
> +};
> +
> +#endif /* BCM2835_MFD_PM_H */
> -- 
> 2.20.0.rc1
> 

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

  reply	other threads:[~2018-12-01  9:21 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-30 20:27 [PATCH v3 0/5] BCM2835 PM driver (MFD version respin) Eric Anholt
2018-11-30 20:27 ` Eric Anholt
2018-11-30 20:27 ` Eric Anholt
2018-11-30 20:27 ` [PATCH v3 1/5] dt-bindings: soc: Add a new binding for the BCM2835 PM node Eric Anholt
2018-11-30 20:27   ` Eric Anholt
2018-12-07 23:48   ` Rob Herring
2018-12-07 23:48     ` Rob Herring
2018-12-07 23:48     ` Rob Herring
2018-12-09 12:14   ` Stefan Wahren
2018-12-09 12:14     ` Stefan Wahren
2018-12-09 12:14     ` Stefan Wahren
2018-11-30 20:27 ` [PATCH v3 2/5] bcm2835-pm: Move bcm2835-watchdog's DT probe to an MFD Eric Anholt
2018-11-30 20:27   ` Eric Anholt
2018-11-30 22:10   ` Guenter Roeck [this message]
2018-11-30 22:10     ` Guenter Roeck
2018-11-30 20:27 ` [PATCH v3 3/5] soc: bcm: bcm2835-pm: Add support for power domains under a new binding Eric Anholt
2018-11-30 20:27   ` Eric Anholt
2018-12-07 23:49   ` Rob Herring
2018-12-07 23:49     ` Rob Herring
2018-11-30 20:27 ` [PATCH v3 4/5] ARM: bcm283x: Extend the WDT DT node out to cover the whole PM block Eric Anholt
2018-11-30 20:27   ` Eric Anholt
2018-11-30 20:27 ` [PATCH v3 5/5] ARM: bcm283x: Switch V3D over to using the PM driver instead of firmware Eric Anholt
2018-11-30 20:27   ` Eric Anholt

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=20181130221044.GA15333@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=devicetree@vger.kernel.org \
    --cc=eric@anholt.net \
    --cc=f.fainelli@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=stefan.wahren@i2se.com \
    --cc=wim@linux-watchdog.org \
    /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.