All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/4] Add watchdog support for STM32MP1
@ 2019-04-29  9:23 Patrice Chotard
  2019-04-29  9:23 ` [U-Boot] [PATCH 1/4] watchdog: Kconfig: Sort entry alphabetically Patrice Chotard
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Patrice Chotard @ 2019-04-29  9:23 UTC (permalink / raw)
  To: u-boot


This series:
  - sorts Kconfig entries in alphabetical order
  - enable watchdog support in SPL for STM32MP1
  - adds watchdog support to STM32MP1 boards



Patrice Chotard (4):
  watchdog: Kconfig: Sort entry alphabetically
  ARM: dts: stm32mp: Add iwdg2 support for stm32mp157c
  watchdog: stm32mp: Add watchdog driver
  configs: stm32mp15: Enable WDT flags

 MAINTAINERS                         |   1 +
 arch/arm/dts/stm32mp157-u-boot.dtsi |   4 ++
 arch/arm/mach-stm32mp/Kconfig       |   1 +
 configs/stm32mp15_basic_defconfig   |   2 +
 configs/stm32mp15_trusted_defconfig |   2 +
 drivers/watchdog/Kconfig            |  91 +++++++++++++-----------
 drivers/watchdog/Makefile           |   1 +
 drivers/watchdog/stm32mp_wdt.c      | 135 ++++++++++++++++++++++++++++++++++++
 8 files changed, 196 insertions(+), 41 deletions(-)
 create mode 100644 drivers/watchdog/stm32mp_wdt.c

-- 
1.9.1

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 1/4] watchdog: Kconfig: Sort entry alphabetically
  2019-04-29  9:23 [U-Boot] [PATCH 0/4] Add watchdog support for STM32MP1 Patrice Chotard
@ 2019-04-29  9:23 ` Patrice Chotard
  2019-04-29  9:40   ` Stefan Roese
  2019-04-29  9:23 ` [U-Boot] [PATCH 2/4] ARM: dts: stm32mp: Add iwdg2 support for stm32mp157c Patrice Chotard
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: Patrice Chotard @ 2019-04-29  9:23 UTC (permalink / raw)
  To: u-boot

To make adding new entry easier, sort Kconfig entries in
alphabetical order.

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---

 drivers/watchdog/Kconfig | 87 ++++++++++++++++++++++++------------------------
 1 file changed, 44 insertions(+), 43 deletions(-)

diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 3bce0aa..4a3ff7a 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -26,6 +26,13 @@ config BCM2835_WDT
 	  This provides basic infrastructure to support BCM2835/2836 watchdog
 	  hardware, with a max timeout of ~15secs.
 
+config IMX_WATCHDOG
+	bool "Enable Watchdog Timer support for IMX and LSCH2 of NXP"
+	select HW_WATCHDOG
+	help
+	   Select this to enable the IMX and LSCH2 of Layerscape watchdog
+	   driver.
+
 config OMAP_WATCHDOG
 	bool "TI OMAP watchdog driver"
 	depends on ARCH_OMAP2PLUS
@@ -59,14 +66,6 @@ config WDT
 	  What exactly happens when the timer expires is up to a particular
 	  device/driver.
 
-config WDT_SANDBOX
-	bool "Enable Watchdog Timer support for Sandbox"
-	depends on SANDBOX && WDT
-	help
-	  Enable Watchdog Timer support in Sandbox. This is a dummy device that
-	  can be probed and supports all of the methods of WDT, but does not
-	  really do anything.
-
 config WDT_ARMADA_37XX
 	bool "Marvell Armada 37xx watchdog timer support"
 	depends on WDT && ARMADA_3700
@@ -87,6 +86,13 @@ config WDT_ASPEED
 	  It currently does not support Boot Flash Addressing Mode Detection or
 	  Second Boot.
 
+config WDT_AT91
+	bool "AT91 watchdog timer support"
+	depends on WDT
+	help
+	   Select this to enable Microchip watchdog timer, which can be found on
+	   some AT91 devices.
+
 config WDT_BCM6345
 	bool "BCM6345 watchdog timer support"
 	depends on WDT && (ARCH_BMIPS || ARCH_BCM6858 || ARCH_BCM63158)
@@ -95,14 +101,6 @@ config WDT_BCM6345
 	  The watchdog timer is stopped when initialized.
 	  It performs full SoC reset.
 
-config WDT_ORION
-	bool "Orion watchdog timer support"
-	depends on WDT
-	select CLK
-	help
-	   Select this to enable Orion watchdog timer, which can be found on some
-	   Marvell Armada chips.
-
 config WDT_CDNS
 	bool "Cadence watchdog timer support"
 	depends on WDT
@@ -111,6 +109,20 @@ config WDT_CDNS
 	   Select this to enable Cadence watchdog timer, which can be found on some
 	   Xilinx Microzed Platform.
 
+config WDT_MPC8xx
+	bool "MPC8xx watchdog timer support"
+	depends on WDT && MPC8xx
+	select CONFIG_MPC8xx_WATCHDOG
+	help
+	   Select this to enable mpc8xx watchdog timer
+
+config WDT_MT7621
+	bool "MediaTek MT7621 watchdog timer support"
+	depends on WDT && ARCH_MT7620
+	help
+	   Select this to enable Ralink / Mediatek watchdog timer,
+	   which can be found on some MediaTek chips.
+
 config WDT_MTK
 	bool "MediaTek watchdog timer support"
 	depends on WDT && ARCH_MEDIATEK
@@ -119,39 +131,28 @@ config WDT_MTK
 	  The watchdog timer is stopped when initialized.
 	  It performs full SoC reset.
 
-config XILINX_TB_WATCHDOG
-	bool "Xilinx Axi watchdog timer support"
+config WDT_ORION
+	bool "Orion watchdog timer support"
 	depends on WDT
-	imply WATCHDOG
+	select CLK
 	help
-	   Select this to enable Xilinx Axi watchdog timer, which can be found on some
-	   Xilinx Microblaze Platforms.
+	   Select this to enable Orion watchdog timer, which can be found on some
+	   Marvell Armada chips.
 
-config IMX_WATCHDOG
-	bool "Enable Watchdog Timer support for IMX and LSCH2 of NXP"
-	select HW_WATCHDOG
+config WDT_SANDBOX
+	bool "Enable Watchdog Timer support for Sandbox"
+	depends on SANDBOX && WDT
 	help
-	   Select this to enable the IMX and LSCH2 of Layerscape watchdog
-	   driver.
+	  Enable Watchdog Timer support in Sandbox. This is a dummy device that
+	  can be probed and supports all of the methods of WDT, but does not
+	  really do anything.
 
-config WDT_AT91
-	bool "AT91 watchdog timer support"
+config XILINX_TB_WATCHDOG
+	bool "Xilinx Axi watchdog timer support"
 	depends on WDT
+	imply WATCHDOG
 	help
-	   Select this to enable Microchip watchdog timer, which can be found on
-	   some AT91 devices.
-
-config WDT_MT7621
-	bool "MediaTek MT7621 watchdog timer support"
-	depends on WDT && ARCH_MT7620
-	help
-	   Select this to enable Ralink / Mediatek watchdog timer,
-	   which can be found on some MediaTek chips.
-
-config WDT_MPC8xx
-	bool "MPC8xx watchdog timer support"
-	depends on WDT && MPC8xx
-	help
-	   Select this to enable mpc8xx watchdog timer
+	   Select this to enable Xilinx Axi watchdog timer, which can be found on some
+	   Xilinx Microblaze Platforms.
 
 endmenu
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 2/4] ARM: dts: stm32mp: Add iwdg2 support for stm32mp157c
  2019-04-29  9:23 [U-Boot] [PATCH 0/4] Add watchdog support for STM32MP1 Patrice Chotard
  2019-04-29  9:23 ` [U-Boot] [PATCH 1/4] watchdog: Kconfig: Sort entry alphabetically Patrice Chotard
@ 2019-04-29  9:23 ` Patrice Chotard
  2019-05-09  3:54   ` Simon Glass
  2019-04-29  9:23 ` [U-Boot] [PATCH 3/4] watchdog: stm32mp: Add watchdog driver Patrice Chotard
  2019-04-29  9:23 ` [U-Boot] [PATCH 4/4] configs: stm32mp15: Enable WDT flags Patrice Chotard
  3 siblings, 1 reply; 9+ messages in thread
From: Patrice Chotard @ 2019-04-29  9:23 UTC (permalink / raw)
  To: u-boot

This patch adds independent watchdog support for stm32mp157c
in SPL.

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---

 arch/arm/dts/stm32mp157-u-boot.dtsi | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/dts/stm32mp157-u-boot.dtsi b/arch/arm/dts/stm32mp157-u-boot.dtsi
index ab6f673..09560e2 100644
--- a/arch/arm/dts/stm32mp157-u-boot.dtsi
+++ b/arch/arm/dts/stm32mp157-u-boot.dtsi
@@ -140,3 +140,7 @@
 	compatible = "st,stm32-gpio";
 	u-boot,dm-pre-reloc;
 };
+
+&iwdg2 {
+	u-boot,dm-pre-reloc;
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/4] watchdog: stm32mp: Add watchdog driver
  2019-04-29  9:23 [U-Boot] [PATCH 0/4] Add watchdog support for STM32MP1 Patrice Chotard
  2019-04-29  9:23 ` [U-Boot] [PATCH 1/4] watchdog: Kconfig: Sort entry alphabetically Patrice Chotard
  2019-04-29  9:23 ` [U-Boot] [PATCH 2/4] ARM: dts: stm32mp: Add iwdg2 support for stm32mp157c Patrice Chotard
@ 2019-04-29  9:23 ` Patrice Chotard
  2019-04-29  9:43   ` Stefan Roese
  2019-04-29  9:23 ` [U-Boot] [PATCH 4/4] configs: stm32mp15: Enable WDT flags Patrice Chotard
  3 siblings, 1 reply; 9+ messages in thread
From: Patrice Chotard @ 2019-04-29  9:23 UTC (permalink / raw)
  To: u-boot

This patch adds IWDG (Independent WatchDoG) support for
STM32MP platform.

Signed-off-by: Christophe Kerello <christophe.kerello@st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---

 MAINTAINERS                    |   1 +
 arch/arm/mach-stm32mp/Kconfig  |   1 +
 drivers/watchdog/Kconfig       |   8 +++
 drivers/watchdog/Makefile      |   1 +
 drivers/watchdog/stm32mp_wdt.c | 135 +++++++++++++++++++++++++++++++++++++++++
 5 files changed, 146 insertions(+)
 create mode 100644 drivers/watchdog/stm32mp_wdt.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 09f31cd..eec2603 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -311,6 +311,7 @@ F:	drivers/ram/stm32mp1/
 F:	drivers/misc/stm32_rcc.c
 F:	drivers/reset/stm32-reset.c
 F:	drivers/spi/stm32_qspi.c
+F:	drivers/watchdog/stm32mp_wdt.c
 
 ARM STM STV0991
 M:	Vikas Manocha <vikas.manocha@st.com>
diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig
index 73aa382..4e7cc2e 100644
--- a/arch/arm/mach-stm32mp/Kconfig
+++ b/arch/arm/mach-stm32mp/Kconfig
@@ -17,6 +17,7 @@ config SPL
 	select SPL_DM_RESET
 	select SPL_SERIAL_SUPPORT
 	select SPL_SYSCON
+	select SPL_WATCHDOG_SUPPORT
 	imply SPL_DISPLAY_PRINT
 	imply SPL_LIBDISK_SUPPORT
 
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 4a3ff7a..d582abe 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -147,6 +147,14 @@ config WDT_SANDBOX
 	  can be probed and supports all of the methods of WDT, but does not
 	  really do anything.
 
+config WDT_STM32MP
+	bool "IWDG watchdog driver for STM32 MP's family"
+	depends on WDT
+	imply WATCHDOG
+	help
+	  Enable the STM32 watchdog (IWDG) driver. Enable support to
+	  configure STM32's on-SoC watchdog.
+
 config XILINX_TB_WATCHDOG
 	bool "Xilinx Axi watchdog timer support"
 	depends on WDT
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index 40b2f4b..a3ebff8 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -27,3 +27,4 @@ obj-$(CONFIG_WDT_CDNS) += cdns_wdt.o
 obj-$(CONFIG_WDT_MPC8xx) += mpc8xx_wdt.o
 obj-$(CONFIG_WDT_MT7621) += mt7621_wdt.o
 obj-$(CONFIG_WDT_MTK) += mtk_wdt.o
+obj-$(CONFIG_WDT_STM32MP) += stm32mp_wdt.o
diff --git a/drivers/watchdog/stm32mp_wdt.c b/drivers/watchdog/stm32mp_wdt.c
new file mode 100644
index 0000000..82db2c6
--- /dev/null
+++ b/drivers/watchdog/stm32mp_wdt.c
@@ -0,0 +1,135 @@
+// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
+/*
+ * Copyright (C) 2019, STMicroelectronics - All Rights Reserved
+ */
+
+#include <common.h>
+#include <clk.h>
+#include <dm.h>
+#include <syscon.h>
+#include <wdt.h>
+#include <asm/io.h>
+#include <linux/iopoll.h>
+
+/* IWDG registers */
+#define IWDG_KR		0x00	/* Key register */
+#define IWDG_PR		0x04	/* Prescaler Register */
+#define IWDG_RLR	0x08	/* ReLoad Register */
+#define IWDG_SR		0x0C	/* Status Register */
+
+/* IWDG_KR register bit mask */
+#define KR_KEY_RELOAD	0xAAAA	/* Reload counter enable */
+#define KR_KEY_ENABLE	0xCCCC	/* Peripheral enable */
+#define KR_KEY_EWA	0x5555	/* Write access enable */
+
+/* IWDG_PR register bit values */
+#define PR_256		0x06	/* Prescaler set to 256 */
+
+/* IWDG_RLR register values */
+#define RLR_MAX		0xFFF	/* Max value supported by reload register */
+
+/* IWDG_SR register bit values */
+#define SR_PVU		BIT(0)	/* Watchdog prescaler value update */
+#define SR_RVU		BIT(1)	/* Watchdog counter reload value update */
+
+struct stm32mp_wdt_priv {
+	fdt_addr_t base;		/* registers addr in physical memory */
+	unsigned long wdt_clk_rate;	/* Watchdog dedicated clock rate */
+};
+
+static int stm32mp_wdt_reset(struct udevice *dev)
+{
+	struct stm32mp_wdt_priv *priv = dev_get_priv(dev);
+
+	writel(KR_KEY_RELOAD, priv->base + IWDG_KR);
+
+	return 0;
+}
+
+static int stm32mp_wdt_start(struct udevice *dev, u64 timeout, ulong flags)
+{
+	struct stm32mp_wdt_priv *priv = dev_get_priv(dev);
+	int reload;
+	u32 val;
+	int ret;
+
+	/* Prescaler fixed to 256 */
+	reload = timeout * priv->wdt_clk_rate / 256;
+	if (reload > RLR_MAX + 1)
+		/* Force to max watchdog counter reload value */
+		reload = RLR_MAX + 1;
+	else if (!reload)
+		/* Force to min watchdog counter reload value */
+		reload = priv->wdt_clk_rate / 256;
+
+	/* Set prescaler & reload registers */
+	writel(KR_KEY_EWA, priv->base + IWDG_KR);
+	writel(PR_256, priv->base + IWDG_PR);
+	writel(reload - 1, priv->base + IWDG_RLR);
+
+	/* Enable watchdog */
+	writel(KR_KEY_ENABLE, priv->base + IWDG_KR);
+
+	/* Wait for the registers to be updated */
+	ret = readl_poll_timeout(priv->base + IWDG_SR, val,
+				 val & (SR_PVU | SR_RVU), CONFIG_SYS_HZ);
+
+	if (ret < 0) {
+		pr_err("Updating IWDG registers timeout");
+		return -ETIMEDOUT;
+	}
+
+	return 0;
+}
+
+static int stm32mp_wdt_probe(struct udevice *dev)
+{
+	struct stm32mp_wdt_priv *priv = dev_get_priv(dev);
+	struct clk clk;
+	int ret;
+
+	debug("IWDG init\n");
+
+	priv->base = devfdt_get_addr(dev);
+	if (priv->base == FDT_ADDR_T_NONE)
+		return -EINVAL;
+
+	/* Enable clock */
+	ret = clk_get_by_name(dev, "pclk", &clk);
+	if (ret)
+		return ret;
+
+	ret = clk_enable(&clk);
+	if (ret)
+		return ret;
+
+	/* Get LSI clock */
+	ret = clk_get_by_name(dev, "lsi", &clk);
+	if (ret)
+		return ret;
+
+	priv->wdt_clk_rate = clk_get_rate(&clk);
+
+	debug("IWDG init done\n");
+
+	return 0;
+}
+
+static const struct wdt_ops stm32mp_wdt_ops = {
+	.start = stm32mp_wdt_start,
+	.reset = stm32mp_wdt_reset,
+};
+
+static const struct udevice_id stm32mp_wdt_match[] = {
+	{ .compatible = "st,stm32mp1-iwdg" },
+	{ /* sentinel */ }
+};
+
+U_BOOT_DRIVER(stm32mp_wdt) = {
+	.name = "stm32mp-wdt",
+	.id = UCLASS_WDT,
+	.of_match = stm32mp_wdt_match,
+	.priv_auto_alloc_size = sizeof(struct stm32mp_wdt_priv),
+	.probe = stm32mp_wdt_probe,
+	.ops = &stm32mp_wdt_ops,
+};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 4/4] configs: stm32mp15: Enable WDT flags
  2019-04-29  9:23 [U-Boot] [PATCH 0/4] Add watchdog support for STM32MP1 Patrice Chotard
                   ` (2 preceding siblings ...)
  2019-04-29  9:23 ` [U-Boot] [PATCH 3/4] watchdog: stm32mp: Add watchdog driver Patrice Chotard
@ 2019-04-29  9:23 ` Patrice Chotard
  3 siblings, 0 replies; 9+ messages in thread
From: Patrice Chotard @ 2019-04-29  9:23 UTC (permalink / raw)
  To: u-boot

This allows to enable WATCHDOG and WDT flags to
be able to reset the watchdog and to support watchdog driver
model.

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---

 configs/stm32mp15_basic_defconfig   | 2 ++
 configs/stm32mp15_trusted_defconfig | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/configs/stm32mp15_basic_defconfig b/configs/stm32mp15_basic_defconfig
index fd164fa..7252c14 100644
--- a/configs/stm32mp15_basic_defconfig
+++ b/configs/stm32mp15_basic_defconfig
@@ -77,3 +77,5 @@ CONFIG_USB_GADGET_MANUFACTURER="STMicroelectronics"
 CONFIG_USB_GADGET_VENDOR_NUM=0x0483
 CONFIG_USB_GADGET_PRODUCT_NUM=0x5720
 CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_WDT=y
+CONFIG_WDT_STM32MP=y
diff --git a/configs/stm32mp15_trusted_defconfig b/configs/stm32mp15_trusted_defconfig
index f82b770..52ee280 100644
--- a/configs/stm32mp15_trusted_defconfig
+++ b/configs/stm32mp15_trusted_defconfig
@@ -68,3 +68,5 @@ CONFIG_USB_GADGET_MANUFACTURER="STMicroelectronics"
 CONFIG_USB_GADGET_VENDOR_NUM=0x0483
 CONFIG_USB_GADGET_PRODUCT_NUM=0x5720
 CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_WDT=y
+CONFIG_WDT_STM32MP=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 1/4] watchdog: Kconfig: Sort entry alphabetically
  2019-04-29  9:23 ` [U-Boot] [PATCH 1/4] watchdog: Kconfig: Sort entry alphabetically Patrice Chotard
@ 2019-04-29  9:40   ` Stefan Roese
  0 siblings, 0 replies; 9+ messages in thread
From: Stefan Roese @ 2019-04-29  9:40 UTC (permalink / raw)
  To: u-boot

On 29.04.19 11:23, Patrice Chotard wrote:
> To make adding new entry easier, sort Kconfig entries in
> alphabetical order.
> 
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
> 
>   drivers/watchdog/Kconfig | 87 ++++++++++++++++++++++++------------------------
>   1 file changed, 44 insertions(+), 43 deletions(-)
> 
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index 3bce0aa..4a3ff7a 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -26,6 +26,13 @@ config BCM2835_WDT
>   	  This provides basic infrastructure to support BCM2835/2836 watchdog
>   	  hardware, with a max timeout of ~15secs.
>   
> +config IMX_WATCHDOG
> +	bool "Enable Watchdog Timer support for IMX and LSCH2 of NXP"
> +	select HW_WATCHDOG
> +	help
> +	   Select this to enable the IMX and LSCH2 of Layerscape watchdog
> +	   driver.
> +
>   config OMAP_WATCHDOG
>   	bool "TI OMAP watchdog driver"
>   	depends on ARCH_OMAP2PLUS
> @@ -59,14 +66,6 @@ config WDT
>   	  What exactly happens when the timer expires is up to a particular
>   	  device/driver.
>   
> -config WDT_SANDBOX
> -	bool "Enable Watchdog Timer support for Sandbox"
> -	depends on SANDBOX && WDT
> -	help
> -	  Enable Watchdog Timer support in Sandbox. This is a dummy device that
> -	  can be probed and supports all of the methods of WDT, but does not
> -	  really do anything.
> -
>   config WDT_ARMADA_37XX
>   	bool "Marvell Armada 37xx watchdog timer support"
>   	depends on WDT && ARMADA_3700
> @@ -87,6 +86,13 @@ config WDT_ASPEED
>   	  It currently does not support Boot Flash Addressing Mode Detection or
>   	  Second Boot.
>   
> +config WDT_AT91
> +	bool "AT91 watchdog timer support"
> +	depends on WDT
> +	help
> +	   Select this to enable Microchip watchdog timer, which can be found on
> +	   some AT91 devices.
> +
>   config WDT_BCM6345
>   	bool "BCM6345 watchdog timer support"
>   	depends on WDT && (ARCH_BMIPS || ARCH_BCM6858 || ARCH_BCM63158)
> @@ -95,14 +101,6 @@ config WDT_BCM6345
>   	  The watchdog timer is stopped when initialized.
>   	  It performs full SoC reset.
>   
> -config WDT_ORION
> -	bool "Orion watchdog timer support"
> -	depends on WDT
> -	select CLK
> -	help
> -	   Select this to enable Orion watchdog timer, which can be found on some
> -	   Marvell Armada chips.
> -
>   config WDT_CDNS
>   	bool "Cadence watchdog timer support"
>   	depends on WDT
> @@ -111,6 +109,20 @@ config WDT_CDNS
>   	   Select this to enable Cadence watchdog timer, which can be found on some
>   	   Xilinx Microzed Platform.
>   
> +config WDT_MPC8xx
> +	bool "MPC8xx watchdog timer support"
> +	depends on WDT && MPC8xx
> +	select CONFIG_MPC8xx_WATCHDOG
> +	help
> +	   Select this to enable mpc8xx watchdog timer
> +
> +config WDT_MT7621
> +	bool "MediaTek MT7621 watchdog timer support"
> +	depends on WDT && ARCH_MT7620
> +	help
> +	   Select this to enable Ralink / Mediatek watchdog timer,
> +	   which can be found on some MediaTek chips.
> +
>   config WDT_MTK
>   	bool "MediaTek watchdog timer support"
>   	depends on WDT && ARCH_MEDIATEK
> @@ -119,39 +131,28 @@ config WDT_MTK
>   	  The watchdog timer is stopped when initialized.
>   	  It performs full SoC reset.
>   
> -config XILINX_TB_WATCHDOG
> -	bool "Xilinx Axi watchdog timer support"
> +config WDT_ORION
> +	bool "Orion watchdog timer support"
>   	depends on WDT
> -	imply WATCHDOG
> +	select CLK
>   	help
> -	   Select this to enable Xilinx Axi watchdog timer, which can be found on some
> -	   Xilinx Microblaze Platforms.
> +	   Select this to enable Orion watchdog timer, which can be found on some
> +	   Marvell Armada chips.
>   
> -config IMX_WATCHDOG
> -	bool "Enable Watchdog Timer support for IMX and LSCH2 of NXP"
> -	select HW_WATCHDOG
> +config WDT_SANDBOX
> +	bool "Enable Watchdog Timer support for Sandbox"
> +	depends on SANDBOX && WDT
>   	help
> -	   Select this to enable the IMX and LSCH2 of Layerscape watchdog
> -	   driver.
> +	  Enable Watchdog Timer support in Sandbox. This is a dummy device that
> +	  can be probed and supports all of the methods of WDT, but does not
> +	  really do anything.
>   
> -config WDT_AT91
> -	bool "AT91 watchdog timer support"
> +config XILINX_TB_WATCHDOG
> +	bool "Xilinx Axi watchdog timer support"
>   	depends on WDT
> +	imply WATCHDOG
>   	help
> -	   Select this to enable Microchip watchdog timer, which can be found on
> -	   some AT91 devices.
> -
> -config WDT_MT7621
> -	bool "MediaTek MT7621 watchdog timer support"
> -	depends on WDT && ARCH_MT7620
> -	help
> -	   Select this to enable Ralink / Mediatek watchdog timer,
> -	   which can be found on some MediaTek chips.
> -
> -config WDT_MPC8xx
> -	bool "MPC8xx watchdog timer support"
> -	depends on WDT && MPC8xx
> -	help
> -	   Select this to enable mpc8xx watchdog timer
> +	   Select this to enable Xilinx Axi watchdog timer, which can be found on some
> +	   Xilinx Microblaze Platforms.
>   
>   endmenu
> 

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/4] watchdog: stm32mp: Add watchdog driver
  2019-04-29  9:23 ` [U-Boot] [PATCH 3/4] watchdog: stm32mp: Add watchdog driver Patrice Chotard
@ 2019-04-29  9:43   ` Stefan Roese
  2019-04-29 12:54     ` Patrice CHOTARD
  0 siblings, 1 reply; 9+ messages in thread
From: Stefan Roese @ 2019-04-29  9:43 UTC (permalink / raw)
  To: u-boot

On 29.04.19 11:23, Patrice Chotard wrote:
> This patch adds IWDG (Independent WatchDoG) support for
> STM32MP platform.
> 
> Signed-off-by: Christophe Kerello <christophe.kerello@st.com>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
> 
>   MAINTAINERS                    |   1 +
>   arch/arm/mach-stm32mp/Kconfig  |   1 +
>   drivers/watchdog/Kconfig       |   8 +++
>   drivers/watchdog/Makefile      |   1 +
>   drivers/watchdog/stm32mp_wdt.c | 135 +++++++++++++++++++++++++++++++++++++++++
>   5 files changed, 146 insertions(+)
>   create mode 100644 drivers/watchdog/stm32mp_wdt.c
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 09f31cd..eec2603 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -311,6 +311,7 @@ F:	drivers/ram/stm32mp1/
>   F:	drivers/misc/stm32_rcc.c
>   F:	drivers/reset/stm32-reset.c
>   F:	drivers/spi/stm32_qspi.c
> +F:	drivers/watchdog/stm32mp_wdt.c
>   
>   ARM STM STV0991
>   M:	Vikas Manocha <vikas.manocha@st.com>
> diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig
> index 73aa382..4e7cc2e 100644
> --- a/arch/arm/mach-stm32mp/Kconfig
> +++ b/arch/arm/mach-stm32mp/Kconfig
> @@ -17,6 +17,7 @@ config SPL
>   	select SPL_DM_RESET
>   	select SPL_SERIAL_SUPPORT
>   	select SPL_SYSCON
> +	select SPL_WATCHDOG_SUPPORT
>   	imply SPL_DISPLAY_PRINT
>   	imply SPL_LIBDISK_SUPPORT
>   
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index 4a3ff7a..d582abe 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -147,6 +147,14 @@ config WDT_SANDBOX
>   	  can be probed and supports all of the methods of WDT, but does not
>   	  really do anything.
>   
> +config WDT_STM32MP
> +	bool "IWDG watchdog driver for STM32 MP's family"
> +	depends on WDT
> +	imply WATCHDOG
> +	help
> +	  Enable the STM32 watchdog (IWDG) driver. Enable support to
> +	  configure STM32's on-SoC watchdog.
> +
>   config XILINX_TB_WATCHDOG
>   	bool "Xilinx Axi watchdog timer support"
>   	depends on WDT
> diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
> index 40b2f4b..a3ebff8 100644
> --- a/drivers/watchdog/Makefile
> +++ b/drivers/watchdog/Makefile
> @@ -27,3 +27,4 @@ obj-$(CONFIG_WDT_CDNS) += cdns_wdt.o
>   obj-$(CONFIG_WDT_MPC8xx) += mpc8xx_wdt.o
>   obj-$(CONFIG_WDT_MT7621) += mt7621_wdt.o
>   obj-$(CONFIG_WDT_MTK) += mtk_wdt.o
> +obj-$(CONFIG_WDT_STM32MP) += stm32mp_wdt.o
> diff --git a/drivers/watchdog/stm32mp_wdt.c b/drivers/watchdog/stm32mp_wdt.c
> new file mode 100644
> index 0000000..82db2c6
> --- /dev/null
> +++ b/drivers/watchdog/stm32mp_wdt.c
> @@ -0,0 +1,135 @@
> +// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
> +/*
> + * Copyright (C) 2019, STMicroelectronics - All Rights Reserved
> + */
> +
> +#include <common.h>
> +#include <clk.h>
> +#include <dm.h>
> +#include <syscon.h>
> +#include <wdt.h>
> +#include <asm/io.h>
> +#include <linux/iopoll.h>
> +
> +/* IWDG registers */
> +#define IWDG_KR		0x00	/* Key register */
> +#define IWDG_PR		0x04	/* Prescaler Register */
> +#define IWDG_RLR	0x08	/* ReLoad Register */
> +#define IWDG_SR		0x0C	/* Status Register */
> +
> +/* IWDG_KR register bit mask */
> +#define KR_KEY_RELOAD	0xAAAA	/* Reload counter enable */
> +#define KR_KEY_ENABLE	0xCCCC	/* Peripheral enable */
> +#define KR_KEY_EWA	0x5555	/* Write access enable */
> +
> +/* IWDG_PR register bit values */
> +#define PR_256		0x06	/* Prescaler set to 256 */
> +
> +/* IWDG_RLR register values */
> +#define RLR_MAX		0xFFF	/* Max value supported by reload register */
> +
> +/* IWDG_SR register bit values */
> +#define SR_PVU		BIT(0)	/* Watchdog prescaler value update */
> +#define SR_RVU		BIT(1)	/* Watchdog counter reload value update */
> +
> +struct stm32mp_wdt_priv {
> +	fdt_addr_t base;		/* registers addr in physical memory */
> +	unsigned long wdt_clk_rate;	/* Watchdog dedicated clock rate */
> +};
> +
> +static int stm32mp_wdt_reset(struct udevice *dev)
> +{
> +	struct stm32mp_wdt_priv *priv = dev_get_priv(dev);
> +
> +	writel(KR_KEY_RELOAD, priv->base + IWDG_KR);
> +
> +	return 0;
> +}
> +
> +static int stm32mp_wdt_start(struct udevice *dev, u64 timeout, ulong flags)

s/timeout/timeout_ms (see below).

> +{
> +	struct stm32mp_wdt_priv *priv = dev_get_priv(dev);
> +	int reload;
> +	u32 val;
> +	int ret;
> +
> +	/* Prescaler fixed to 256 */
> +	reload = timeout * priv->wdt_clk_rate / 256;

Just checking, if this takes into account that timeout is passed in
ms (milli-seconds) to the DM wdt_start() function. That's why I prefer
to see timeout explicitly named to "timeout_ms" instead.

Thanks,
Stefan

> +	if (reload > RLR_MAX + 1)
> +		/* Force to max watchdog counter reload value */
> +		reload = RLR_MAX + 1;
> +	else if (!reload)
> +		/* Force to min watchdog counter reload value */
> +		reload = priv->wdt_clk_rate / 256;
> +
> +	/* Set prescaler & reload registers */
> +	writel(KR_KEY_EWA, priv->base + IWDG_KR);
> +	writel(PR_256, priv->base + IWDG_PR);
> +	writel(reload - 1, priv->base + IWDG_RLR);
> +
> +	/* Enable watchdog */
> +	writel(KR_KEY_ENABLE, priv->base + IWDG_KR);
> +
> +	/* Wait for the registers to be updated */
> +	ret = readl_poll_timeout(priv->base + IWDG_SR, val,
> +				 val & (SR_PVU | SR_RVU), CONFIG_SYS_HZ);
> +
> +	if (ret < 0) {
> +		pr_err("Updating IWDG registers timeout");
> +		return -ETIMEDOUT;
> +	}
> +
> +	return 0;
> +}
> +
> +static int stm32mp_wdt_probe(struct udevice *dev)
> +{
> +	struct stm32mp_wdt_priv *priv = dev_get_priv(dev);
> +	struct clk clk;
> +	int ret;
> +
> +	debug("IWDG init\n");
> +
> +	priv->base = devfdt_get_addr(dev);
> +	if (priv->base == FDT_ADDR_T_NONE)
> +		return -EINVAL;
> +
> +	/* Enable clock */
> +	ret = clk_get_by_name(dev, "pclk", &clk);
> +	if (ret)
> +		return ret;
> +
> +	ret = clk_enable(&clk);
> +	if (ret)
> +		return ret;
> +
> +	/* Get LSI clock */
> +	ret = clk_get_by_name(dev, "lsi", &clk);
> +	if (ret)
> +		return ret;
> +
> +	priv->wdt_clk_rate = clk_get_rate(&clk);
> +
> +	debug("IWDG init done\n");
> +
> +	return 0;
> +}
> +
> +static const struct wdt_ops stm32mp_wdt_ops = {
> +	.start = stm32mp_wdt_start,
> +	.reset = stm32mp_wdt_reset,
> +};
> +
> +static const struct udevice_id stm32mp_wdt_match[] = {
> +	{ .compatible = "st,stm32mp1-iwdg" },
> +	{ /* sentinel */ }
> +};
> +
> +U_BOOT_DRIVER(stm32mp_wdt) = {
> +	.name = "stm32mp-wdt",
> +	.id = UCLASS_WDT,
> +	.of_match = stm32mp_wdt_match,
> +	.priv_auto_alloc_size = sizeof(struct stm32mp_wdt_priv),
> +	.probe = stm32mp_wdt_probe,
> +	.ops = &stm32mp_wdt_ops,
> +};
> 

Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/4] watchdog: stm32mp: Add watchdog driver
  2019-04-29  9:43   ` Stefan Roese
@ 2019-04-29 12:54     ` Patrice CHOTARD
  0 siblings, 0 replies; 9+ messages in thread
From: Patrice CHOTARD @ 2019-04-29 12:54 UTC (permalink / raw)
  To: u-boot

Hi Stefan

On 4/29/19 11:43 AM, Stefan Roese wrote:
> On 29.04.19 11:23, Patrice Chotard wrote:
>> This patch adds IWDG (Independent WatchDoG) support for
>> STM32MP platform.
>>
>> Signed-off-by: Christophe Kerello <christophe.kerello@st.com>
>> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
>> ---
>>
>>   MAINTAINERS                    |   1 +
>>   arch/arm/mach-stm32mp/Kconfig  |   1 +
>>   drivers/watchdog/Kconfig       |   8 +++
>>   drivers/watchdog/Makefile      |   1 +
>>   drivers/watchdog/stm32mp_wdt.c | 135
>> +++++++++++++++++++++++++++++++++++++++++
>>   5 files changed, 146 insertions(+)
>>   create mode 100644 drivers/watchdog/stm32mp_wdt.c
>>
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 09f31cd..eec2603 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -311,6 +311,7 @@ F:    drivers/ram/stm32mp1/
>>   F:    drivers/misc/stm32_rcc.c
>>   F:    drivers/reset/stm32-reset.c
>>   F:    drivers/spi/stm32_qspi.c
>> +F:    drivers/watchdog/stm32mp_wdt.c
>>     ARM STM STV0991
>>   M:    Vikas Manocha <vikas.manocha@st.com>
>> diff --git a/arch/arm/mach-stm32mp/Kconfig
>> b/arch/arm/mach-stm32mp/Kconfig
>> index 73aa382..4e7cc2e 100644
>> --- a/arch/arm/mach-stm32mp/Kconfig
>> +++ b/arch/arm/mach-stm32mp/Kconfig
>> @@ -17,6 +17,7 @@ config SPL
>>       select SPL_DM_RESET
>>       select SPL_SERIAL_SUPPORT
>>       select SPL_SYSCON
>> +    select SPL_WATCHDOG_SUPPORT
>>       imply SPL_DISPLAY_PRINT
>>       imply SPL_LIBDISK_SUPPORT
>>   diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>> index 4a3ff7a..d582abe 100644
>> --- a/drivers/watchdog/Kconfig
>> +++ b/drivers/watchdog/Kconfig
>> @@ -147,6 +147,14 @@ config WDT_SANDBOX
>>         can be probed and supports all of the methods of WDT, but does
>> not
>>         really do anything.
>>   +config WDT_STM32MP
>> +    bool "IWDG watchdog driver for STM32 MP's family"
>> +    depends on WDT
>> +    imply WATCHDOG
>> +    help
>> +      Enable the STM32 watchdog (IWDG) driver. Enable support to
>> +      configure STM32's on-SoC watchdog.
>> +
>>   config XILINX_TB_WATCHDOG
>>       bool "Xilinx Axi watchdog timer support"
>>       depends on WDT
>> diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
>> index 40b2f4b..a3ebff8 100644
>> --- a/drivers/watchdog/Makefile
>> +++ b/drivers/watchdog/Makefile
>> @@ -27,3 +27,4 @@ obj-$(CONFIG_WDT_CDNS) += cdns_wdt.o
>>   obj-$(CONFIG_WDT_MPC8xx) += mpc8xx_wdt.o
>>   obj-$(CONFIG_WDT_MT7621) += mt7621_wdt.o
>>   obj-$(CONFIG_WDT_MTK) += mtk_wdt.o
>> +obj-$(CONFIG_WDT_STM32MP) += stm32mp_wdt.o
>> diff --git a/drivers/watchdog/stm32mp_wdt.c
>> b/drivers/watchdog/stm32mp_wdt.c
>> new file mode 100644
>> index 0000000..82db2c6
>> --- /dev/null
>> +++ b/drivers/watchdog/stm32mp_wdt.c
>> @@ -0,0 +1,135 @@
>> +// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
>> +/*
>> + * Copyright (C) 2019, STMicroelectronics - All Rights Reserved
>> + */
>> +
>> +#include <common.h>
>> +#include <clk.h>
>> +#include <dm.h>
>> +#include <syscon.h>
>> +#include <wdt.h>
>> +#include <asm/io.h>
>> +#include <linux/iopoll.h>
>> +
>> +/* IWDG registers */
>> +#define IWDG_KR        0x00    /* Key register */
>> +#define IWDG_PR        0x04    /* Prescaler Register */
>> +#define IWDG_RLR    0x08    /* ReLoad Register */
>> +#define IWDG_SR        0x0C    /* Status Register */
>> +
>> +/* IWDG_KR register bit mask */
>> +#define KR_KEY_RELOAD    0xAAAA    /* Reload counter enable */
>> +#define KR_KEY_ENABLE    0xCCCC    /* Peripheral enable */
>> +#define KR_KEY_EWA    0x5555    /* Write access enable */
>> +
>> +/* IWDG_PR register bit values */
>> +#define PR_256        0x06    /* Prescaler set to 256 */
>> +
>> +/* IWDG_RLR register values */
>> +#define RLR_MAX        0xFFF    /* Max value supported by reload
>> register */
>> +
>> +/* IWDG_SR register bit values */
>> +#define SR_PVU        BIT(0)    /* Watchdog prescaler value update */
>> +#define SR_RVU        BIT(1)    /* Watchdog counter reload value
>> update */
>> +
>> +struct stm32mp_wdt_priv {
>> +    fdt_addr_t base;        /* registers addr in physical memory */
>> +    unsigned long wdt_clk_rate;    /* Watchdog dedicated clock rate */
>> +};
>> +
>> +static int stm32mp_wdt_reset(struct udevice *dev)
>> +{
>> +    struct stm32mp_wdt_priv *priv = dev_get_priv(dev);
>> +
>> +    writel(KR_KEY_RELOAD, priv->base + IWDG_KR);
>> +
>> +    return 0;
>> +}
>> +
>> +static int stm32mp_wdt_start(struct udevice *dev, u64 timeout, ulong
>> flags)
> 
> s/timeout/timeout_ms (see below).
> 
>> +{
>> +    struct stm32mp_wdt_priv *priv = dev_get_priv(dev);
>> +    int reload;
>> +    u32 val;
>> +    int ret;
>> +
>> +    /* Prescaler fixed to 256 */
>> +    reload = timeout * priv->wdt_clk_rate / 256;
> 
> Just checking, if this takes into account that timeout is passed in
> ms (milli-seconds) to the DM wdt_start() function. That's why I prefer
> to see timeout explicitly named to "timeout_ms" instead.

Ok, no problem, i will update and re-spin this series.

Thanks

> 
> Thanks,
> Stefan
> 
>> +    if (reload > RLR_MAX + 1)
>> +        /* Force to max watchdog counter reload value */
>> +        reload = RLR_MAX + 1;
>> +    else if (!reload)
>> +        /* Force to min watchdog counter reload value */
>> +        reload = priv->wdt_clk_rate / 256;
>> +
>> +    /* Set prescaler & reload registers */
>> +    writel(KR_KEY_EWA, priv->base + IWDG_KR);
>> +    writel(PR_256, priv->base + IWDG_PR);
>> +    writel(reload - 1, priv->base + IWDG_RLR);
>> +
>> +    /* Enable watchdog */
>> +    writel(KR_KEY_ENABLE, priv->base + IWDG_KR);
>> +
>> +    /* Wait for the registers to be updated */
>> +    ret = readl_poll_timeout(priv->base + IWDG_SR, val,
>> +                 val & (SR_PVU | SR_RVU), CONFIG_SYS_HZ);
>> +
>> +    if (ret < 0) {
>> +        pr_err("Updating IWDG registers timeout");
>> +        return -ETIMEDOUT;
>> +    }
>> +
>> +    return 0;
>> +}
>> +
>> +static int stm32mp_wdt_probe(struct udevice *dev)
>> +{
>> +    struct stm32mp_wdt_priv *priv = dev_get_priv(dev);
>> +    struct clk clk;
>> +    int ret;
>> +
>> +    debug("IWDG init\n");
>> +
>> +    priv->base = devfdt_get_addr(dev);
>> +    if (priv->base == FDT_ADDR_T_NONE)
>> +        return -EINVAL;
>> +
>> +    /* Enable clock */
>> +    ret = clk_get_by_name(dev, "pclk", &clk);
>> +    if (ret)
>> +        return ret;
>> +
>> +    ret = clk_enable(&clk);
>> +    if (ret)
>> +        return ret;
>> +
>> +    /* Get LSI clock */
>> +    ret = clk_get_by_name(dev, "lsi", &clk);
>> +    if (ret)
>> +        return ret;
>> +
>> +    priv->wdt_clk_rate = clk_get_rate(&clk);
>> +
>> +    debug("IWDG init done\n");
>> +
>> +    return 0;
>> +}
>> +
>> +static const struct wdt_ops stm32mp_wdt_ops = {
>> +    .start = stm32mp_wdt_start,
>> +    .reset = stm32mp_wdt_reset,
>> +};
>> +
>> +static const struct udevice_id stm32mp_wdt_match[] = {
>> +    { .compatible = "st,stm32mp1-iwdg" },
>> +    { /* sentinel */ }
>> +};
>> +
>> +U_BOOT_DRIVER(stm32mp_wdt) = {
>> +    .name = "stm32mp-wdt",
>> +    .id = UCLASS_WDT,
>> +    .of_match = stm32mp_wdt_match,
>> +    .priv_auto_alloc_size = sizeof(struct stm32mp_wdt_priv),
>> +    .probe = stm32mp_wdt_probe,
>> +    .ops = &stm32mp_wdt_ops,
>> +};
>>
> 
> Viele Grüße,
> Stefan
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 2/4] ARM: dts: stm32mp: Add iwdg2 support for stm32mp157c
  2019-04-29  9:23 ` [U-Boot] [PATCH 2/4] ARM: dts: stm32mp: Add iwdg2 support for stm32mp157c Patrice Chotard
@ 2019-05-09  3:54   ` Simon Glass
  0 siblings, 0 replies; 9+ messages in thread
From: Simon Glass @ 2019-05-09  3:54 UTC (permalink / raw)
  To: u-boot

On Mon, 29 Apr 2019 at 03:23, Patrice Chotard <patrice.chotard@st.com> wrote:
>
> This patch adds independent watchdog support for stm32mp157c
> in SPL.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>
>  arch/arm/dts/stm32mp157-u-boot.dtsi | 4 ++++
>  1 file changed, 4 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-05-09  3:54 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-29  9:23 [U-Boot] [PATCH 0/4] Add watchdog support for STM32MP1 Patrice Chotard
2019-04-29  9:23 ` [U-Boot] [PATCH 1/4] watchdog: Kconfig: Sort entry alphabetically Patrice Chotard
2019-04-29  9:40   ` Stefan Roese
2019-04-29  9:23 ` [U-Boot] [PATCH 2/4] ARM: dts: stm32mp: Add iwdg2 support for stm32mp157c Patrice Chotard
2019-05-09  3:54   ` Simon Glass
2019-04-29  9:23 ` [U-Boot] [PATCH 3/4] watchdog: stm32mp: Add watchdog driver Patrice Chotard
2019-04-29  9:43   ` Stefan Roese
2019-04-29 12:54     ` Patrice CHOTARD
2019-04-29  9:23 ` [U-Boot] [PATCH 4/4] configs: stm32mp15: Enable WDT flags Patrice Chotard

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.