[U-Boot] [PATCH 1/2] watchdog: Split WDT from SPL_WDT

Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without DM, while the full U-Boot can use rich DM/DT WDT driver.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de --- common/board_r.c | 2 +- common/spl/spl.c | 2 +- drivers/watchdog/Makefile | 2 +- include/asm-generic/global_data.h | 2 +- include/wdt.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/common/board_r.c b/common/board_r.c index 150e8cd424..988e40abb2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_DM initr_dm, #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) initr_watchdog, #endif #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_board_init(); #endif
-#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && CONFIG_IS_ENABLED(WDT) initr_watchdog(); #endif
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o -obj-$(CONFIG_WDT) += wdt-uclass.o +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 02a3ed6838..7c2220643b 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ typedef struct global_data { #if defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t translation_offset; /* optional translation offset */ #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) struct udevice *watchdog_dev; #endif } gd_t; diff --git a/include/wdt.h b/include/wdt.h index aa77d3e9b4..5bcff24ab3 100644 --- a/include/wdt.h +++ b/include/wdt.h @@ -106,7 +106,7 @@ struct wdt_ops { int (*expire_now)(struct udevice *dev, ulong flags); };
-#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) #endif

Add DM and DT probing support to iMX watchdog driver. This should allow boards to move over to this driver, enable SYSRESET_WATCHDOG to handle cpu_reset() if required.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de --- drivers/watchdog/Kconfig | 2 +- drivers/watchdog/imx_watchdog.c | 119 +++++++++++++++++++++++++++----- 2 files changed, 104 insertions(+), 17 deletions(-)
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index f909d40f45..b2ebe528ab 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -129,7 +129,7 @@ config XILINX_TB_WATCHDOG
config IMX_WATCHDOG bool "Enable Watchdog Timer support for IMX and LSCH2 of NXP" - select HW_WATCHDOG + select HW_WATCHDOG if !WDT help Select this to enable the IMX and LSCH2 of Layerscape watchdog driver. diff --git a/drivers/watchdog/imx_watchdog.c b/drivers/watchdog/imx_watchdog.c index 14cc618074..53a3e9f5c7 100644 --- a/drivers/watchdog/imx_watchdog.c +++ b/drivers/watchdog/imx_watchdog.c @@ -5,7 +5,9 @@ */
#include <common.h> +#include <dm.h> #include <asm/io.h> +#include <wdt.h> #include <watchdog.h> #include <asm/arch/imx-regs.h> #ifdef CONFIG_FSL_LSCH2 @@ -13,20 +15,40 @@ #endif #include <fsl_wdog.h>
-#ifdef CONFIG_IMX_WATCHDOG -void hw_watchdog_reset(void) +static void imx_watchdog_expire_now(struct watchdog_regs *wdog) +{ + clrsetbits_le16(&wdog->wcr, WCR_WT_MSK, WCR_WDE); + + writew(0x5555, &wdog->wsr); + writew(0xaaaa, &wdog->wsr); /* load minimum 1/2 second timeout */ + while (1) { + /* + * spin for .5 seconds before reset + */ + } +} + +#if !defined(CONFIG_IMX_WATCHDOG) || \ + (defined(CONFIG_IMX_WATCHDOG) && !CONFIG_IS_ENABLED(WDT)) +void __attribute__((weak)) reset_cpu(ulong addr) { -#ifndef CONFIG_WATCHDOG_RESET_DISABLE struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
+ imx_watchdog_expire_now(wdog); +} +#endif + +#if defined(CONFIG_IMX_WATCHDOG) +static void imx_watchdog_reset(struct watchdog_regs *wdog) +{ +#ifndef CONFIG_WATCHDOG_RESET_DISABLE writew(0x5555, &wdog->wsr); writew(0xaaaa, &wdog->wsr); #endif /* CONFIG_WATCHDOG_RESET_DISABLE*/ }
-void hw_watchdog_init(void) +static void imx_watchdog_init(struct watchdog_regs *wdog) { - struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR; u16 timeout;
/* @@ -44,21 +66,86 @@ void hw_watchdog_init(void) writew(WCR_WDZST | WCR_WDBG | WCR_WDE | WCR_WDT | WCR_SRS | WCR_WDA | SET_WCR_WT(timeout), &wdog->wcr); #endif /* CONFIG_FSL_LSCH2*/ - hw_watchdog_reset(); + imx_watchdog_reset(wdog); } -#endif
-void __attribute__((weak)) reset_cpu(ulong addr) +#if !CONFIG_IS_ENABLED(WDT) +void hw_watchdog_reset(void) { struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
- clrsetbits_le16(&wdog->wcr, WCR_WT_MSK, WCR_WDE); + imx_watchdog_reset(wdog); +}
- writew(0x5555, &wdog->wsr); - writew(0xaaaa, &wdog->wsr); /* load minimum 1/2 second timeout */ - while (1) { - /* - * spin for .5 seconds before reset - */ - } +void hw_watchdog_init(void) +{ + struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR; + + imx_watchdog_init(wdog); +} +#else +struct imx_wdt_priv { + void __iomem *base; +}; + +static int imx_wdt_reset(struct udevice *dev) +{ + struct imx_wdt_priv *priv = dev_get_priv(dev); + + imx_watchdog_reset(priv->base); + + return 0; +} + +static int imx_wdt_expire_now(struct udevice *dev, ulong flags) +{ + struct imx_wdt_priv *priv = dev_get_priv(dev); + + imx_watchdog_expire_now(priv->base); + hang(); + + return 0; +} + +static int imx_wdt_start(struct udevice *dev, u64 timeout, ulong flags) +{ + struct imx_wdt_priv *priv = dev_get_priv(dev); + + imx_watchdog_init(priv->base); + + return 0; +} + +static int imx_wdt_probe(struct udevice *dev) +{ + struct imx_wdt_priv *priv = dev_get_priv(dev); + + priv->base = dev_read_addr_ptr(dev); + if (!priv->base) + return -ENOENT; + + return 0; } + +static const struct wdt_ops imx_wdt_ops = { + .start = imx_wdt_start, + .reset = imx_wdt_reset, + .expire_now = imx_wdt_expire_now, +}; + +static const struct udevice_id imx_wdt_ids[] = { + { .compatible = "fsl,imx21-wdt" }, + {} +}; + +U_BOOT_DRIVER(imx_wdt) = { + .name = "imx_wdt", + .id = UCLASS_WDT, + .of_match = imx_wdt_ids, + .probe = imx_wdt_probe, + .ops = &imx_wdt_ops, + .priv_auto_alloc_size = sizeof(struct imx_wdt_priv), + .flags = DM_FLAG_PRE_RELOC, +}; +#endif +#endif

Subject: [U-Boot] [PATCH 2/2] watchdog: imx: Add DM support
Add DM and DT probing support to iMX watchdog driver. This should allow boards to move over to this driver, enable SYSRESET_WATCHDOG to handle cpu_reset() if required.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de
drivers/watchdog/Kconfig | 2 +- drivers/watchdog/imx_watchdog.c | 119 +++++++++++++++++++++++++++----- 2 files changed, 104 insertions(+), 17 deletions(-)
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index f909d40f45..b2ebe528ab 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -129,7 +129,7 @@ config XILINX_TB_WATCHDOG
config IMX_WATCHDOG bool "Enable Watchdog Timer support for IMX and LSCH2 of NXP"
- select HW_WATCHDOG
- select HW_WATCHDOG if !WDT help Select this to enable the IMX and LSCH2 of Layerscape watchdog driver.
diff --git a/drivers/watchdog/imx_watchdog.c b/drivers/watchdog/imx_watchdog.c index 14cc618074..53a3e9f5c7 100644 --- a/drivers/watchdog/imx_watchdog.c +++ b/drivers/watchdog/imx_watchdog.c @@ -5,7 +5,9 @@ */
#include <common.h> +#include <dm.h> #include <asm/io.h> +#include <wdt.h> #include <watchdog.h> #include <asm/arch/imx-regs.h> #ifdef CONFIG_FSL_LSCH2 @@ -13,20 +15,40 @@ #endif #include <fsl_wdog.h>
-#ifdef CONFIG_IMX_WATCHDOG -void hw_watchdog_reset(void) +static void imx_watchdog_expire_now(struct watchdog_regs *wdog) {
- clrsetbits_le16(&wdog->wcr, WCR_WT_MSK, WCR_WDE);
- writew(0x5555, &wdog->wsr);
- writew(0xaaaa, &wdog->wsr); /* load minimum 1/2 second timeout
*/
- while (1) {
/*
* spin for .5 seconds before reset
*/
- }
+}
+#if !defined(CONFIG_IMX_WATCHDOG) || \
- (defined(CONFIG_IMX_WATCHDOG) && !CONFIG_IS_ENABLED(WDT))
void +__attribute__((weak)) reset_cpu(ulong addr) { -#ifndef CONFIG_WATCHDOG_RESET_DISABLE struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
- imx_watchdog_expire_now(wdog);
+} +#endif
+#if defined(CONFIG_IMX_WATCHDOG) +static void imx_watchdog_reset(struct watchdog_regs *wdog) { #ifndef +CONFIG_WATCHDOG_RESET_DISABLE writew(0x5555, &wdog->wsr); writew(0xaaaa, &wdog->wsr); #endif /* CONFIG_WATCHDOG_RESET_DISABLE*/ }
-void hw_watchdog_init(void) +static void imx_watchdog_init(struct watchdog_regs *wdog) {
- struct watchdog_regs *wdog = (struct watchdog_regs
*)WDOG1_BASE_ADDR; u16 timeout;
/* @@ -44,21 +66,86 @@ void hw_watchdog_init(void) writew(WCR_WDZST | WCR_WDBG | WCR_WDE | WCR_WDT | WCR_SRS | WCR_WDA | SET_WCR_WT(timeout), &wdog->wcr); #endif /* CONFIG_FSL_LSCH2*/
- hw_watchdog_reset();
- imx_watchdog_reset(wdog);
} -#endif
-void __attribute__((weak)) reset_cpu(ulong addr) +#if !CONFIG_IS_ENABLED(WDT) +void hw_watchdog_reset(void) { struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
- clrsetbits_le16(&wdog->wcr, WCR_WT_MSK, WCR_WDE);
- imx_watchdog_reset(wdog);
+}
- writew(0x5555, &wdog->wsr);
- writew(0xaaaa, &wdog->wsr); /* load minimum 1/2 second timeout
*/
- while (1) {
/*
* spin for .5 seconds before reset
*/
- }
+void hw_watchdog_init(void) +{
- struct watchdog_regs *wdog = (struct watchdog_regs
*)WDOG1_BASE_ADDR;
- imx_watchdog_init(wdog);
+} +#else +struct imx_wdt_priv {
- void __iomem *base;
+};
+static int imx_wdt_reset(struct udevice *dev) {
- struct imx_wdt_priv *priv = dev_get_priv(dev);
- imx_watchdog_reset(priv->base);
- return 0;
+}
+static int imx_wdt_expire_now(struct udevice *dev, ulong flags) {
- struct imx_wdt_priv *priv = dev_get_priv(dev);
- imx_watchdog_expire_now(priv->base);
- hang();
- return 0;
+}
+static int imx_wdt_start(struct udevice *dev, u64 timeout, ulong flags) +{
- struct imx_wdt_priv *priv = dev_get_priv(dev);
- imx_watchdog_init(priv->base);
- return 0;
+}
+static int imx_wdt_probe(struct udevice *dev) {
- struct imx_wdt_priv *priv = dev_get_priv(dev);
- priv->base = dev_read_addr_ptr(dev);
- if (!priv->base)
return -ENOENT;
- return 0;
}
+static const struct wdt_ops imx_wdt_ops = {
- .start = imx_wdt_start,
- .reset = imx_wdt_reset,
- .expire_now = imx_wdt_expire_now,
+};
+static const struct udevice_id imx_wdt_ids[] = {
- { .compatible = "fsl,imx21-wdt" },
- {}
+};
+U_BOOT_DRIVER(imx_wdt) = {
- .name = "imx_wdt",
- .id = UCLASS_WDT,
- .of_match = imx_wdt_ids,
- .probe = imx_wdt_probe,
- .ops = &imx_wdt_ops,
- .priv_auto_alloc_size = sizeof(struct imx_wdt_priv),
- .flags = DM_FLAG_PRE_RELOC,
+}; +#endif +#endif
Reviewed-by: Peng Fan peng.fan@nxp.com
-- 2.20.1
U-Boot mailing list U-Boot@lists.denx.de https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.d enx.de%2Flistinfo%2Fu-boot&data=02%7C01%7CPeng.Fan%40nxp.com %7C3104426ece13427d689008d6d721d25b%7C686ea1d3bc2b4c6fa92cd99c 5c301635%7C0%7C0%7C636932937614272001&sdata=l54tJxZN03iuNL XrqPvykahvk2YF0vduEbDU9tPFqXo%3D&reserved=0

On Sun, 12 May 2019 23:34:53 +0200 Marek Vasut marex@denx.de wrote:
Add DM and DT probing support to iMX watchdog driver. This should allow boards to move over to this driver, enable SYSRESET_WATCHDOG to handle cpu_reset() if required.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de
drivers/watchdog/Kconfig | 2 +- drivers/watchdog/imx_watchdog.c | 119 +++++++++++++++++++++++++++----- 2 files changed, 104 insertions(+), 17 deletions(-)
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index f909d40f45..b2ebe528ab 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -129,7 +129,7 @@ config XILINX_TB_WATCHDOG
config IMX_WATCHDOG bool "Enable Watchdog Timer support for IMX and LSCH2 of NXP"
- select HW_WATCHDOG
- select HW_WATCHDOG if !WDT help Select this to enable the IMX and LSCH2 of Layerscape
watchdog driver. diff --git a/drivers/watchdog/imx_watchdog.c b/drivers/watchdog/imx_watchdog.c index 14cc618074..53a3e9f5c7 100644 --- a/drivers/watchdog/imx_watchdog.c +++ b/drivers/watchdog/imx_watchdog.c @@ -5,7 +5,9 @@ */
#include <common.h> +#include <dm.h> #include <asm/io.h> +#include <wdt.h> #include <watchdog.h> #include <asm/arch/imx-regs.h> #ifdef CONFIG_FSL_LSCH2 @@ -13,20 +15,40 @@ #endif #include <fsl_wdog.h>
-#ifdef CONFIG_IMX_WATCHDOG -void hw_watchdog_reset(void) +static void imx_watchdog_expire_now(struct watchdog_regs *wdog) +{
- clrsetbits_le16(&wdog->wcr, WCR_WT_MSK, WCR_WDE);
- writew(0x5555, &wdog->wsr);
- writew(0xaaaa, &wdog->wsr); /* load minimum 1/2
second timeout */
- while (1) {
/*
* spin for .5 seconds before reset
*/
- }
+}
+#if !defined(CONFIG_IMX_WATCHDOG) || \
- (defined(CONFIG_IMX_WATCHDOG) && !CONFIG_IS_ENABLED(WDT))
+void __attribute__((weak)) reset_cpu(ulong addr) { -#ifndef CONFIG_WATCHDOG_RESET_DISABLE struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
- imx_watchdog_expire_now(wdog);
+} +#endif
+#if defined(CONFIG_IMX_WATCHDOG) +static void imx_watchdog_reset(struct watchdog_regs *wdog) +{ +#ifndef CONFIG_WATCHDOG_RESET_DISABLE writew(0x5555, &wdog->wsr); writew(0xaaaa, &wdog->wsr); #endif /* CONFIG_WATCHDOG_RESET_DISABLE*/ }
-void hw_watchdog_init(void) +static void imx_watchdog_init(struct watchdog_regs *wdog) {
- struct watchdog_regs *wdog = (struct watchdog_regs
*)WDOG1_BASE_ADDR; u16 timeout;
/* @@ -44,21 +66,86 @@ void hw_watchdog_init(void) writew(WCR_WDZST | WCR_WDBG | WCR_WDE | WCR_WDT | WCR_SRS | WCR_WDA | SET_WCR_WT(timeout), &wdog->wcr); #endif /* CONFIG_FSL_LSCH2*/
- hw_watchdog_reset();
- imx_watchdog_reset(wdog);
} -#endif
-void __attribute__((weak)) reset_cpu(ulong addr) +#if !CONFIG_IS_ENABLED(WDT) +void hw_watchdog_reset(void) { struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
- clrsetbits_le16(&wdog->wcr, WCR_WT_MSK, WCR_WDE);
- imx_watchdog_reset(wdog);
+}
- writew(0x5555, &wdog->wsr);
- writew(0xaaaa, &wdog->wsr); /* load minimum 1/2
second timeout */
- while (1) {
/*
* spin for .5 seconds before reset
*/
- }
+void hw_watchdog_init(void) +{
- struct watchdog_regs *wdog = (struct watchdog_regs
*)WDOG1_BASE_ADDR; +
- imx_watchdog_init(wdog);
+} +#else +struct imx_wdt_priv {
- void __iomem *base;
+};
+static int imx_wdt_reset(struct udevice *dev) +{
- struct imx_wdt_priv *priv = dev_get_priv(dev);
- imx_watchdog_reset(priv->base);
- return 0;
+}
+static int imx_wdt_expire_now(struct udevice *dev, ulong flags) +{
- struct imx_wdt_priv *priv = dev_get_priv(dev);
- imx_watchdog_expire_now(priv->base);
- hang();
- return 0;
+}
+static int imx_wdt_start(struct udevice *dev, u64 timeout, ulong flags) +{
- struct imx_wdt_priv *priv = dev_get_priv(dev);
- imx_watchdog_init(priv->base);
- return 0;
+}
+static int imx_wdt_probe(struct udevice *dev) +{
- struct imx_wdt_priv *priv = dev_get_priv(dev);
- priv->base = dev_read_addr_ptr(dev);
- if (!priv->base)
return -ENOENT;
- return 0;
}
+static const struct wdt_ops imx_wdt_ops = {
- .start = imx_wdt_start,
- .reset = imx_wdt_reset,
- .expire_now = imx_wdt_expire_now,
+};
+static const struct udevice_id imx_wdt_ids[] = {
- { .compatible = "fsl,imx21-wdt" },
- {}
+};
+U_BOOT_DRIVER(imx_wdt) = {
- .name = "imx_wdt",
- .id = UCLASS_WDT,
- .of_match = imx_wdt_ids,
- .probe = imx_wdt_probe,
- .ops = &imx_wdt_ops,
- .priv_auto_alloc_size = sizeof(struct imx_wdt_priv),
- .flags = DM_FLAG_PRE_RELOC,
+}; +#endif +#endif
Tested-by: Lukasz Majewski lukma@denx.de
Test-HW: i.MX6Q - display5
For the record - one needs to add following code to dts file:
+ wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdog1>; + };
@ _defconfig:
+CONFIG_SYSRESET=y +CONFIG_SYSRESET_WATCHDOG=y
@ include/<board_config>.h
+#if defined(CONFIG_SPL_BUILD) +#undef CONFIG_WDT +#undef CONFIG_WATCHDOG +#define CONFIG_HW_WATCHDOG +#endif
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

Subject: [U-Boot] [PATCH 1/2] watchdog: Split WDT from SPL_WDT
Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without DM, while the full U-Boot can use rich DM/DT WDT driver.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de
common/board_r.c | 2 +- common/spl/spl.c | 2 +- drivers/watchdog/Makefile | 2 +- include/asm-generic/global_data.h | 2 +- include/wdt.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/common/board_r.c b/common/board_r.c index 150e8cd424..988e40abb2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_DM initr_dm, #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) initr_watchdog, #endif #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_board_init(); #endif
-#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && CONFIG_IS_ENABLED(WDT) initr_watchdog(); #endif
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o -obj-$(CONFIG_WDT) += wdt-uclass.o +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 02a3ed6838..7c2220643b 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ typedef struct global_data { #if defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t translation_offset; /* optional translation offset */ #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) struct udevice *watchdog_dev; #endif } gd_t; diff --git a/include/wdt.h b/include/wdt.h index aa77d3e9b4..5bcff24ab3 100644 --- a/include/wdt.h +++ b/include/wdt.h @@ -106,7 +106,7 @@ struct wdt_ops { int (*expire_now)(struct udevice *dev, ulong flags); };
-#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) #endif
Reviewed-by: Peng Fan peng.fan@nxp.com
-- 2.20.1
U-Boot mailing list U-Boot@lists.denx.de https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.d enx.de%2Flistinfo%2Fu-boot&data=02%7C01%7CPeng.Fan%40nxp.com %7C80a98d74e79849cca5bd08d6d721cb41%7C686ea1d3bc2b4c6fa92cd99c 5c301635%7C0%7C0%7C636932937538649220&sdata=JB4foxgQVteQw MUJrefgqegLm6N%2ByFq%2BfLknDE89nfo%3D&reserved=0

On Sun, 12 May 2019 23:34:52 +0200 Marek Vasut marex@denx.de wrote:
Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without DM, while the full U-Boot can use rich DM/DT WDT driver.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de
common/board_r.c | 2 +- common/spl/spl.c | 2 +- drivers/watchdog/Makefile | 2 +- include/asm-generic/global_data.h | 2 +- include/wdt.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/common/board_r.c b/common/board_r.c index 150e8cd424..988e40abb2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_DM initr_dm, #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) initr_watchdog, #endif #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_board_init(); #endif
-#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && CONFIG_IS_ENABLED(WDT) initr_watchdog(); #endif
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o -obj-$(CONFIG_WDT) += wdt-uclass.o +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 02a3ed6838..7c2220643b 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ typedef struct global_data { #if defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t translation_offset; /* optional translation offset */ #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) struct udevice *watchdog_dev; #endif } gd_t; diff --git a/include/wdt.h b/include/wdt.h index aa77d3e9b4..5bcff24ab3 100644 --- a/include/wdt.h +++ b/include/wdt.h @@ -106,7 +106,7 @@ struct wdt_ops { int (*expire_now)(struct udevice *dev, ulong flags); };
-#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) #endif
Tested-by: Lukasz Majewski lukma@denx.de
Test HW: display5 i.MX6Q device
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

Hi Marek,
On Sun, 12 May 2019 23:34:52 +0200 Marek Vasut marex@denx.de wrote:
Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without DM, while the full U-Boot can use rich DM/DT WDT driver.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de
common/board_r.c | 2 +- common/spl/spl.c | 2 +- drivers/watchdog/Makefile | 2 +- include/asm-generic/global_data.h | 2 +- include/wdt.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/common/board_r.c b/common/board_r.c index 150e8cd424..988e40abb2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_DM initr_dm, #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) initr_watchdog, #endif #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_board_init(); #endif
-#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && CONFIG_IS_ENABLED(WDT) initr_watchdog(); #endif
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o -obj-$(CONFIG_WDT) += wdt-uclass.o +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 02a3ed6838..7c2220643b 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ typedef struct global_data { #if defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t translation_offset; /* optional translation offset */ #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) struct udevice *watchdog_dev; #endif } gd_t; diff --git a/include/wdt.h b/include/wdt.h index aa77d3e9b4..5bcff24ab3 100644 --- a/include/wdt.h +++ b/include/wdt.h @@ -106,7 +106,7 @@ struct wdt_ops { int (*expire_now)(struct udevice *dev, ulong flags); };
-#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) #endif
Tested-by: Lukasz Majewski lukma@denx.de
Test HW: display5 i.MX6Q device
Unfortunately this series causes build break when run on Travis-CI for some Atmel/Microchip:
arm: + picosam9g45 +lib/built-in.o: In function `udelay': +lib/time.c:167: undefined reference to `watchdog_reset' +drivers/built-in.o: In function `atmel_serial_getc': +drivers/serial/atmel_usart.c:103: undefined reference to `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 +make[1]: *** [spl/u-boot-spl] Error 2 +make: *** [sub-make] Error 2 14 38 1 /53 axm boards.cfg is up to date. Nothing to do. Summary of current source for 53 boards (2 threads, 1 job per thread)
u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

On Wed, 5 Jun 2019 18:24:11 +0200 Lukasz Majewski lukma@denx.de wrote:
Hi Marek,
On Sun, 12 May 2019 23:34:52 +0200 Marek Vasut marex@denx.de wrote:
Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without DM, while the full U-Boot can use rich DM/DT WDT driver.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de
common/board_r.c | 2 +- common/spl/spl.c | 2 +- drivers/watchdog/Makefile | 2 +- include/asm-generic/global_data.h | 2 +- include/wdt.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/common/board_r.c b/common/board_r.c index 150e8cd424..988e40abb2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_DM initr_dm, #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) initr_watchdog, #endif #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_board_init(); #endif
-#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && CONFIG_IS_ENABLED(WDT) initr_watchdog(); #endif
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o -obj-$(CONFIG_WDT) += wdt-uclass.o +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 02a3ed6838..7c2220643b 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ typedef struct global_data { #if defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t translation_offset; /* optional translation offset */ #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) struct udevice *watchdog_dev; #endif } gd_t; diff --git a/include/wdt.h b/include/wdt.h index aa77d3e9b4..5bcff24ab3 100644 --- a/include/wdt.h +++ b/include/wdt.h @@ -106,7 +106,7 @@ struct wdt_ops { int (*expire_now)(struct udevice *dev, ulong flags); };
-#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) #endif
Tested-by: Lukasz Majewski lukma@denx.de
Test HW: display5 i.MX6Q device
Unfortunately this series causes build break when run on Travis-CI for some Atmel/Microchip:
arm: + picosam9g45 +lib/built-in.o: In function `udelay': +lib/time.c:167: undefined reference to `watchdog_reset' +drivers/built-in.o: In function `atmel_serial_getc': +drivers/serial/atmel_usart.c:103: undefined reference to `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 +make[1]: *** [spl/u-boot-spl] Error 2 +make: *** [sub-make] Error 2 14 38 1 /53 axm boards.cfg is up to date. Nothing to do. Summary of current source for 53 boards (2 threads, 1 job per thread)
u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d
The fix is under Travis-CI testing: https://travis-ci.org/lmajewski/u-boot-dfu/builds/542118403
I will post patches when it finishes.
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

On 6/6/19 9:09 AM, Lukasz Majewski wrote:
On Wed, 5 Jun 2019 18:24:11 +0200 Lukasz Majewski lukma@denx.de wrote:
Hi Marek,
On Sun, 12 May 2019 23:34:52 +0200 Marek Vasut marex@denx.de wrote:
Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without DM, while the full U-Boot can use rich DM/DT WDT driver.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de
common/board_r.c | 2 +- common/spl/spl.c | 2 +- drivers/watchdog/Makefile | 2 +- include/asm-generic/global_data.h | 2 +- include/wdt.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/common/board_r.c b/common/board_r.c index 150e8cd424..988e40abb2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_DM initr_dm, #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) initr_watchdog, #endif #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_board_init(); #endif
-#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && CONFIG_IS_ENABLED(WDT) initr_watchdog(); #endif
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o -obj-$(CONFIG_WDT) += wdt-uclass.o +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 02a3ed6838..7c2220643b 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ typedef struct global_data { #if defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t translation_offset; /* optional translation offset */ #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) struct udevice *watchdog_dev; #endif } gd_t; diff --git a/include/wdt.h b/include/wdt.h index aa77d3e9b4..5bcff24ab3 100644 --- a/include/wdt.h +++ b/include/wdt.h @@ -106,7 +106,7 @@ struct wdt_ops { int (*expire_now)(struct udevice *dev, ulong flags); };
-#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) #endif
Tested-by: Lukasz Majewski lukma@denx.de
Test HW: display5 i.MX6Q device
Unfortunately this series causes build break when run on Travis-CI for some Atmel/Microchip:
arm: + picosam9g45 +lib/built-in.o: In function `udelay': +lib/time.c:167: undefined reference to `watchdog_reset' +drivers/built-in.o: In function `atmel_serial_getc': +drivers/serial/atmel_usart.c:103: undefined reference to `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 +make[1]: *** [spl/u-boot-spl] Error 2 +make: *** [sub-make] Error 2 14 38 1 /53 axm boards.cfg is up to date. Nothing to do. Summary of current source for 53 boards (2 threads, 1 job per thread)
u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d
The fix is under Travis-CI testing: https://travis-ci.org/lmajewski/u-boot-dfu/builds/542118403
I will post patches when it finishes.
What's the fix ?
I am testing this since yesterday: https://github.com/marex/u-boot-imx/commit/c8e1bff9f332a35859e1f4d44e114c3aa...

On Thu, 6 Jun 2019 09:26:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 9:09 AM, Lukasz Majewski wrote:
On Wed, 5 Jun 2019 18:24:11 +0200 Lukasz Majewski lukma@denx.de wrote:
Hi Marek,
On Sun, 12 May 2019 23:34:52 +0200 Marek Vasut marex@denx.de wrote:
Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without DM, while the full U-Boot can use rich DM/DT WDT driver.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de
common/board_r.c | 2 +- common/spl/spl.c | 2 +- drivers/watchdog/Makefile | 2 +- include/asm-generic/global_data.h | 2 +- include/wdt.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/common/board_r.c b/common/board_r.c index 150e8cd424..988e40abb2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_DM initr_dm, #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) initr_watchdog, #endif #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_board_init(); #endif
-#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && CONFIG_IS_ENABLED(WDT) initr_watchdog(); #endif
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o -obj-$(CONFIG_WDT) += wdt-uclass.o +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 02a3ed6838..7c2220643b 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ typedef struct global_data { #if defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t translation_offset; /* optional translation offset */ #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) struct udevice *watchdog_dev; #endif } gd_t; diff --git a/include/wdt.h b/include/wdt.h index aa77d3e9b4..5bcff24ab3 100644 --- a/include/wdt.h +++ b/include/wdt.h @@ -106,7 +106,7 @@ struct wdt_ops { int (*expire_now)(struct udevice *dev, ulong flags); };
-#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) #endif
Tested-by: Lukasz Majewski lukma@denx.de
Test HW: display5 i.MX6Q device
Unfortunately this series causes build break when run on Travis-CI for some Atmel/Microchip:
arm: + picosam9g45 +lib/built-in.o: In function `udelay': +lib/time.c:167: undefined reference to `watchdog_reset' +drivers/built-in.o: In function `atmel_serial_getc': +drivers/serial/atmel_usart.c:103: undefined reference to `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 +make[1]: *** [spl/u-boot-spl] Error 2 +make: *** [sub-make] Error 2 14 38 1 /53 axm boards.cfg is up to date. Nothing to do. Summary of current source for 53 boards (2 threads, 1 job per thread)
u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d
The fix is under Travis-CI testing: https://travis-ci.org/lmajewski/u-boot-dfu/builds/542118403
I will post patches when it finishes.
What's the fix ?
https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
I've explicitly enabled SPL_WDT=y for affected boards.
I am testing this since yesterday: https://github.com/marex/u-boot-imx/commit/c8e1bff9f332a35859e1f4d44e114c3aa...
However, if your version is building without any issues, it looks better than mine (IMHO imply is more elegant).
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

On 6/6/19 10:00 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 09:26:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 9:09 AM, Lukasz Majewski wrote:
On Wed, 5 Jun 2019 18:24:11 +0200 Lukasz Majewski lukma@denx.de wrote:
Hi Marek,
On Sun, 12 May 2019 23:34:52 +0200 Marek Vasut marex@denx.de wrote:
Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without DM, while the full U-Boot can use rich DM/DT WDT driver.
Signed-off-by: Marek Vasut marex@denx.de Cc: Peng Fan Peng.Fan@freescale.com Cc: Stefano Babic sbabic@denx.de
common/board_r.c | 2 +- common/spl/spl.c | 2 +- drivers/watchdog/Makefile | 2 +- include/asm-generic/global_data.h | 2 +- include/wdt.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/common/board_r.c b/common/board_r.c index 150e8cd424..988e40abb2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_DM initr_dm, #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) initr_watchdog, #endif #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) spl_board_init(); #endif
-#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && CONFIG_IS_ENABLED(WDT) initr_watchdog(); #endif
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o -obj-$(CONFIG_WDT) += wdt-uclass.o +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 02a3ed6838..7c2220643b 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ typedef struct global_data { #if defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t translation_offset; /* optional translation offset */ #endif -#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) struct udevice *watchdog_dev; #endif } gd_t; diff --git a/include/wdt.h b/include/wdt.h index aa77d3e9b4..5bcff24ab3 100644 --- a/include/wdt.h +++ b/include/wdt.h @@ -106,7 +106,7 @@ struct wdt_ops { int (*expire_now)(struct udevice *dev, ulong flags); };
-#if defined(CONFIG_WDT) +#if CONFIG_IS_ENABLED(WDT) #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) #endif
Tested-by: Lukasz Majewski lukma@denx.de
Test HW: display5 i.MX6Q device
Unfortunately this series causes build break when run on Travis-CI for some Atmel/Microchip:
arm: + picosam9g45 +lib/built-in.o: In function `udelay': +lib/time.c:167: undefined reference to `watchdog_reset' +drivers/built-in.o: In function `atmel_serial_getc': +drivers/serial/atmel_usart.c:103: undefined reference to `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 +make[1]: *** [spl/u-boot-spl] Error 2 +make: *** [sub-make] Error 2 14 38 1 /53 axm boards.cfg is up to date. Nothing to do. Summary of current source for 53 boards (2 threads, 1 job per thread)
u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d
The fix is under Travis-CI testing: https://travis-ci.org/lmajewski/u-boot-dfu/builds/542118403
I will post patches when it finishes.
What's the fix ?
https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
I've explicitly enabled SPL_WDT=y for affected boards.
I don't think that's the right approach, it should be possible to do without explicit board config modification. I'm building another take, since some boards still failed to build.

On Thu, 6 Jun 2019 10:08:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 10:00 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 09:26:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 9:09 AM, Lukasz Majewski wrote:
On Wed, 5 Jun 2019 18:24:11 +0200 Lukasz Majewski lukma@denx.de wrote:
Hi Marek,
On Sun, 12 May 2019 23:34:52 +0200 Marek Vasut marex@denx.de wrote:
> Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without > DM, while the full U-Boot can use rich DM/DT WDT driver. > > Signed-off-by: Marek Vasut marex@denx.de > Cc: Peng Fan Peng.Fan@freescale.com > Cc: Stefano Babic sbabic@denx.de > --- > common/board_r.c | 2 +- > common/spl/spl.c | 2 +- > drivers/watchdog/Makefile | 2 +- > include/asm-generic/global_data.h | 2 +- > include/wdt.h | 2 +- > 5 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/common/board_r.c b/common/board_r.c > index 150e8cd424..988e40abb2 100644 > --- a/common/board_r.c > +++ b/common/board_r.c > @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { > #ifdef CONFIG_DM > initr_dm, > #endif > -#if defined(CONFIG_WDT) > +#if CONFIG_IS_ENABLED(WDT) > initr_watchdog, > #endif > #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || > defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c > b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 > --- a/common/spl/spl.c > +++ b/common/spl/spl.c > @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong > dummy2) spl_board_init(); > #endif > > -#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && > defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) > && CONFIG_IS_ENABLED(WDT) initr_watchdog(); > #endif > > diff --git a/drivers/watchdog/Makefile > b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 > --- a/drivers/watchdog/Makefile > +++ b/drivers/watchdog/Makefile > @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o > obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o > obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o > obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o > -obj-$(CONFIG_WDT) += wdt-uclass.o > +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o > obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o > obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o > obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o > diff --git a/include/asm-generic/global_data.h > b/include/asm-generic/global_data.h index > 02a3ed6838..7c2220643b 100644 --- > a/include/asm-generic/global_data.h +++ > b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ > typedef struct global_data { #if > defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t > translation_offset; /* optional translation offset */ > #endif -#if defined(CONFIG_WDT) > +#if CONFIG_IS_ENABLED(WDT) > struct udevice *watchdog_dev; > #endif > } gd_t; > diff --git a/include/wdt.h b/include/wdt.h > index aa77d3e9b4..5bcff24ab3 100644 > --- a/include/wdt.h > +++ b/include/wdt.h > @@ -106,7 +106,7 @@ struct wdt_ops { > int (*expire_now)(struct udevice *dev, ulong flags); > }; > > -#if defined(CONFIG_WDT) > +#if CONFIG_IS_ENABLED(WDT) > #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS > #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) > #endif
Tested-by: Lukasz Majewski lukma@denx.de
Test HW: display5 i.MX6Q device
Unfortunately this series causes build break when run on Travis-CI for some Atmel/Microchip:
arm: + picosam9g45 +lib/built-in.o: In function `udelay': +lib/time.c:167: undefined reference to `watchdog_reset' +drivers/built-in.o: In function `atmel_serial_getc': +drivers/serial/atmel_usart.c:103: undefined reference to `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 +make[1]: *** [spl/u-boot-spl] Error 2 +make: *** [sub-make] Error 2 14 38 1 /53 axm boards.cfg is up to date. Nothing to do. Summary of current source for 53 boards (2 threads, 1 job per thread)
u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d
The fix is under Travis-CI testing: https://travis-ci.org/lmajewski/u-boot-dfu/builds/542118403
I will post patches when it finishes.
What's the fix ?
https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
I've explicitly enabled SPL_WDT=y for affected boards.
I don't think that's the right approach, it should be possible to do without explicit board config modification. I'm building another take, since some boards still failed to build.
Just to be clear - if it works with imply - I'm for this solution.
However, if it breaks, then we may need to find another solution (as for example shown here: https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109... - the number of affected boards is small - just 3 of them).
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

On 6/6/19 10:16 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 10:08:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 10:00 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 09:26:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 9:09 AM, Lukasz Majewski wrote:
On Wed, 5 Jun 2019 18:24:11 +0200 Lukasz Majewski lukma@denx.de wrote:
Hi Marek,
> On Sun, 12 May 2019 23:34:52 +0200 > Marek Vasut marex@denx.de wrote: > >> Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL without >> DM, while the full U-Boot can use rich DM/DT WDT driver. >> >> Signed-off-by: Marek Vasut marex@denx.de >> Cc: Peng Fan Peng.Fan@freescale.com >> Cc: Stefano Babic sbabic@denx.de >> --- >> common/board_r.c | 2 +- >> common/spl/spl.c | 2 +- >> drivers/watchdog/Makefile | 2 +- >> include/asm-generic/global_data.h | 2 +- >> include/wdt.h | 2 +- >> 5 files changed, 5 insertions(+), 5 deletions(-) >> >> diff --git a/common/board_r.c b/common/board_r.c >> index 150e8cd424..988e40abb2 100644 >> --- a/common/board_r.c >> +++ b/common/board_r.c >> @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { >> #ifdef CONFIG_DM >> initr_dm, >> #endif >> -#if defined(CONFIG_WDT) >> +#if CONFIG_IS_ENABLED(WDT) >> initr_watchdog, >> #endif >> #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || >> defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c >> b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 >> --- a/common/spl/spl.c >> +++ b/common/spl/spl.c >> @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong >> dummy2) spl_board_init(); >> #endif >> >> -#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && >> defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) >> && CONFIG_IS_ENABLED(WDT) initr_watchdog(); >> #endif >> >> diff --git a/drivers/watchdog/Makefile >> b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c 100644 >> --- a/drivers/watchdog/Makefile >> +++ b/drivers/watchdog/Makefile >> @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o >> obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o >> obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o >> obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o >> -obj-$(CONFIG_WDT) += wdt-uclass.o >> +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o >> obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o >> obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o >> obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o >> diff --git a/include/asm-generic/global_data.h >> b/include/asm-generic/global_data.h index >> 02a3ed6838..7c2220643b 100644 --- >> a/include/asm-generic/global_data.h +++ >> b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ >> typedef struct global_data { #if >> defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t >> translation_offset; /* optional translation offset */ >> #endif -#if defined(CONFIG_WDT) >> +#if CONFIG_IS_ENABLED(WDT) >> struct udevice *watchdog_dev; >> #endif >> } gd_t; >> diff --git a/include/wdt.h b/include/wdt.h >> index aa77d3e9b4..5bcff24ab3 100644 >> --- a/include/wdt.h >> +++ b/include/wdt.h >> @@ -106,7 +106,7 @@ struct wdt_ops { >> int (*expire_now)(struct udevice *dev, ulong flags); >> }; >> >> -#if defined(CONFIG_WDT) >> +#if CONFIG_IS_ENABLED(WDT) >> #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS >> #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) >> #endif > > Tested-by: Lukasz Majewski lukma@denx.de > > Test HW: display5 i.MX6Q device >
Unfortunately this series causes build break when run on Travis-CI for some Atmel/Microchip:
arm: + picosam9g45 +lib/built-in.o: In function `udelay': +lib/time.c:167: undefined reference to `watchdog_reset' +drivers/built-in.o: In function `atmel_serial_getc': +drivers/serial/atmel_usart.c:103: undefined reference to `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 +make[1]: *** [spl/u-boot-spl] Error 2 +make: *** [sub-make] Error 2 14 38 1 /53 axm boards.cfg is up to date. Nothing to do. Summary of current source for 53 boards (2 threads, 1 job per thread)
u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d
The fix is under Travis-CI testing: https://travis-ci.org/lmajewski/u-boot-dfu/builds/542118403
I will post patches when it finishes.
What's the fix ?
https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
I've explicitly enabled SPL_WDT=y for affected boards.
I don't think that's the right approach, it should be possible to do without explicit board config modification. I'm building another take, since some boards still failed to build.
Just to be clear - if it works with imply - I'm for this solution.
However, if it breaks, then we may need to find another solution (as for example shown here: https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
- the number of affected boards is small - just 3 of them).
I would very much prefer to make it work without defconfig modifications. This has to be possible, since it worked before the split.

On Thu, 6 Jun 2019 10:23:06 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 10:16 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 10:08:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 10:00 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 09:26:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 9:09 AM, Lukasz Majewski wrote:
On Wed, 5 Jun 2019 18:24:11 +0200 Lukasz Majewski lukma@denx.de wrote:
> Hi Marek, > >> On Sun, 12 May 2019 23:34:52 +0200 >> Marek Vasut marex@denx.de wrote: >> >>> Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL >>> without DM, while the full U-Boot can use rich DM/DT WDT >>> driver. >>> >>> Signed-off-by: Marek Vasut marex@denx.de >>> Cc: Peng Fan Peng.Fan@freescale.com >>> Cc: Stefano Babic sbabic@denx.de >>> --- >>> common/board_r.c | 2 +- >>> common/spl/spl.c | 2 +- >>> drivers/watchdog/Makefile | 2 +- >>> include/asm-generic/global_data.h | 2 +- >>> include/wdt.h | 2 +- >>> 5 files changed, 5 insertions(+), 5 deletions(-) >>> >>> diff --git a/common/board_r.c b/common/board_r.c >>> index 150e8cd424..988e40abb2 100644 >>> --- a/common/board_r.c >>> +++ b/common/board_r.c >>> @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { >>> #ifdef CONFIG_DM >>> initr_dm, >>> #endif >>> -#if defined(CONFIG_WDT) >>> +#if CONFIG_IS_ENABLED(WDT) >>> initr_watchdog, >>> #endif >>> #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || >>> defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c >>> b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 >>> --- a/common/spl/spl.c >>> +++ b/common/spl/spl.c >>> @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong >>> dummy2) spl_board_init(); >>> #endif >>> >>> -#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && >>> defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) >>> && CONFIG_IS_ENABLED(WDT) initr_watchdog(); >>> #endif >>> >>> diff --git a/drivers/watchdog/Makefile >>> b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c >>> 100644 --- a/drivers/watchdog/Makefile >>> +++ b/drivers/watchdog/Makefile >>> @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o >>> obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o >>> obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o >>> obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o >>> -obj-$(CONFIG_WDT) += wdt-uclass.o >>> +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o >>> obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o >>> obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o >>> obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o >>> diff --git a/include/asm-generic/global_data.h >>> b/include/asm-generic/global_data.h index >>> 02a3ed6838..7c2220643b 100644 --- >>> a/include/asm-generic/global_data.h +++ >>> b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ >>> typedef struct global_data { #if >>> defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t >>> translation_offset; /* optional translation offset */ >>> #endif -#if defined(CONFIG_WDT) >>> +#if CONFIG_IS_ENABLED(WDT) >>> struct udevice *watchdog_dev; >>> #endif >>> } gd_t; >>> diff --git a/include/wdt.h b/include/wdt.h >>> index aa77d3e9b4..5bcff24ab3 100644 >>> --- a/include/wdt.h >>> +++ b/include/wdt.h >>> @@ -106,7 +106,7 @@ struct wdt_ops { >>> int (*expire_now)(struct udevice *dev, ulong flags); >>> }; >>> >>> -#if defined(CONFIG_WDT) >>> +#if CONFIG_IS_ENABLED(WDT) >>> #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS >>> #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) >>> #endif >> >> Tested-by: Lukasz Majewski lukma@denx.de >> >> Test HW: display5 i.MX6Q device >> > > Unfortunately this series causes build break when run on > Travis-CI for some Atmel/Microchip: > > arm: + picosam9g45 > +lib/built-in.o: In function `udelay': > +lib/time.c:167: undefined reference to `watchdog_reset' > +drivers/built-in.o: In function `atmel_serial_getc': > +drivers/serial/atmel_usart.c:103: undefined reference to > `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 > +make[1]: *** [spl/u-boot-spl] Error 2 > +make: *** [sub-make] Error 2 > 14 38 1 /53 axm > boards.cfg is up to date. Nothing to do. > Summary of current source for 53 boards (2 threads, 1 job per > thread) > > > u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d >
The fix is under Travis-CI testing: https://travis-ci.org/lmajewski/u-boot-dfu/builds/542118403
I will post patches when it finishes.
What's the fix ?
https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
I've explicitly enabled SPL_WDT=y for affected boards.
I don't think that's the right approach, it should be possible to do without explicit board config modification. I'm building another take, since some boards still failed to build.
Just to be clear - if it works with imply - I'm for this solution.
However, if it breaks, then we may need to find another solution (as for example shown here: https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
- the number of affected boards is small - just 3 of them).
I would very much prefer to make it work without defconfig modifications. This has to be possible, since it worked before the split.
Ok.
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

Hi Marek,
On 6/6/19 10:16 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 10:08:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 10:00 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 09:26:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 9:09 AM, Lukasz Majewski wrote:
On Wed, 5 Jun 2019 18:24:11 +0200 Lukasz Majewski lukma@denx.de wrote:
> Hi Marek, > >> On Sun, 12 May 2019 23:34:52 +0200 >> Marek Vasut marex@denx.de wrote: >> >>> Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL >>> without DM, while the full U-Boot can use rich DM/DT WDT >>> driver. >>> >>> Signed-off-by: Marek Vasut marex@denx.de >>> Cc: Peng Fan Peng.Fan@freescale.com >>> Cc: Stefano Babic sbabic@denx.de >>> --- >>> common/board_r.c | 2 +- >>> common/spl/spl.c | 2 +- >>> drivers/watchdog/Makefile | 2 +- >>> include/asm-generic/global_data.h | 2 +- >>> include/wdt.h | 2 +- >>> 5 files changed, 5 insertions(+), 5 deletions(-) >>> >>> diff --git a/common/board_r.c b/common/board_r.c >>> index 150e8cd424..988e40abb2 100644 >>> --- a/common/board_r.c >>> +++ b/common/board_r.c >>> @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { >>> #ifdef CONFIG_DM >>> initr_dm, >>> #endif >>> -#if defined(CONFIG_WDT) >>> +#if CONFIG_IS_ENABLED(WDT) >>> initr_watchdog, >>> #endif >>> #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || >>> defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c >>> b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 >>> --- a/common/spl/spl.c >>> +++ b/common/spl/spl.c >>> @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong >>> dummy2) spl_board_init(); >>> #endif >>> >>> -#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && >>> defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) >>> && CONFIG_IS_ENABLED(WDT) initr_watchdog(); >>> #endif >>> >>> diff --git a/drivers/watchdog/Makefile >>> b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c >>> 100644 --- a/drivers/watchdog/Makefile >>> +++ b/drivers/watchdog/Makefile >>> @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o >>> obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o >>> obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o >>> obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o >>> -obj-$(CONFIG_WDT) += wdt-uclass.o >>> +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o >>> obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o >>> obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o >>> obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o >>> diff --git a/include/asm-generic/global_data.h >>> b/include/asm-generic/global_data.h index >>> 02a3ed6838..7c2220643b 100644 --- >>> a/include/asm-generic/global_data.h +++ >>> b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ >>> typedef struct global_data { #if >>> defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t >>> translation_offset; /* optional translation offset */ >>> #endif -#if defined(CONFIG_WDT) >>> +#if CONFIG_IS_ENABLED(WDT) >>> struct udevice *watchdog_dev; >>> #endif >>> } gd_t; >>> diff --git a/include/wdt.h b/include/wdt.h >>> index aa77d3e9b4..5bcff24ab3 100644 >>> --- a/include/wdt.h >>> +++ b/include/wdt.h >>> @@ -106,7 +106,7 @@ struct wdt_ops { >>> int (*expire_now)(struct udevice *dev, ulong flags); >>> }; >>> >>> -#if defined(CONFIG_WDT) >>> +#if CONFIG_IS_ENABLED(WDT) >>> #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS >>> #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) >>> #endif >> >> Tested-by: Lukasz Majewski lukma@denx.de >> >> Test HW: display5 i.MX6Q device >> > > Unfortunately this series causes build break when run on > Travis-CI for some Atmel/Microchip: > > arm: + picosam9g45 > +lib/built-in.o: In function `udelay': > +lib/time.c:167: undefined reference to `watchdog_reset' > +drivers/built-in.o: In function `atmel_serial_getc': > +drivers/serial/atmel_usart.c:103: undefined reference to > `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 > +make[1]: *** [spl/u-boot-spl] Error 2 > +make: *** [sub-make] Error 2 > 14 38 1 /53 axm > boards.cfg is up to date. Nothing to do. > Summary of current source for 53 boards (2 threads, 1 job per > thread) > > > u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d >
The fix is under Travis-CI testing: https://travis-ci.org/lmajewski/u-boot-dfu/builds/542118403
I will post patches when it finishes.
What's the fix ?
https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
I've explicitly enabled SPL_WDT=y for affected boards.
I don't think that's the right approach, it should be possible to do without explicit board config modification. I'm building another take, since some boards still failed to build.
Just to be clear - if it works with imply - I'm for this solution.
However, if it breaks, then we may need to find another solution (as for example shown here: https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
- the number of affected boards is small - just 3 of them).
I would very much prefer to make it work without defconfig modifications. This has to be possible, since it worked before the split.
Have you managed to fix the code? Will you post revised patches soon?
Best regards and thanks in advance,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

On 6/8/19 8:23 AM, Lukasz Majewski wrote:
Hi Marek,
On 6/6/19 10:16 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 10:08:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 10:00 AM, Lukasz Majewski wrote:
On Thu, 6 Jun 2019 09:26:04 +0200 Marek Vasut marex@denx.de wrote:
On 6/6/19 9:09 AM, Lukasz Majewski wrote: > On Wed, 5 Jun 2019 18:24:11 +0200 > Lukasz Majewski lukma@denx.de wrote: > >> Hi Marek, >> >>> On Sun, 12 May 2019 23:34:52 +0200 >>> Marek Vasut marex@denx.de wrote: >>> >>>> Use CONFIG_IS_ENABLED(WDT) to permit use of WDT in SPL >>>> without DM, while the full U-Boot can use rich DM/DT WDT >>>> driver. >>>> >>>> Signed-off-by: Marek Vasut marex@denx.de >>>> Cc: Peng Fan Peng.Fan@freescale.com >>>> Cc: Stefano Babic sbabic@denx.de >>>> --- >>>> common/board_r.c | 2 +- >>>> common/spl/spl.c | 2 +- >>>> drivers/watchdog/Makefile | 2 +- >>>> include/asm-generic/global_data.h | 2 +- >>>> include/wdt.h | 2 +- >>>> 5 files changed, 5 insertions(+), 5 deletions(-) >>>> >>>> diff --git a/common/board_r.c b/common/board_r.c >>>> index 150e8cd424..988e40abb2 100644 >>>> --- a/common/board_r.c >>>> +++ b/common/board_r.c >>>> @@ -678,7 +678,7 @@ static init_fnc_t init_sequence_r[] = { >>>> #ifdef CONFIG_DM >>>> initr_dm, >>>> #endif >>>> -#if defined(CONFIG_WDT) >>>> +#if CONFIG_IS_ENABLED(WDT) >>>> initr_watchdog, >>>> #endif >>>> #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || >>>> defined(CONFIG_RISCV) || \ diff --git a/common/spl/spl.c >>>> b/common/spl/spl.c index 0a6a47c202..f22f854718 100644 >>>> --- a/common/spl/spl.c >>>> +++ b/common/spl/spl.c >>>> @@ -601,7 +601,7 @@ void board_init_r(gd_t *dummy1, ulong >>>> dummy2) spl_board_init(); >>>> #endif >>>> >>>> -#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) && >>>> defined(CONFIG_WDT) +#if defined(CONFIG_SPL_WATCHDOG_SUPPORT) >>>> && CONFIG_IS_ENABLED(WDT) initr_watchdog(); >>>> #endif >>>> >>>> diff --git a/drivers/watchdog/Makefile >>>> b/drivers/watchdog/Makefile index 40b2f4bc66..4b94ae988c >>>> 100644 --- a/drivers/watchdog/Makefile >>>> +++ b/drivers/watchdog/Makefile >>>> @@ -16,7 +16,7 @@ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o >>>> obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o >>>> obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o >>>> obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o >>>> -obj-$(CONFIG_WDT) += wdt-uclass.o >>>> +obj-$(CONFIG_$(SPL_TPL_)WDT) += wdt-uclass.o >>>> obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o >>>> obj-$(CONFIG_WDT_ARMADA_37XX) += armada-37xx-wdt.o >>>> obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o >>>> diff --git a/include/asm-generic/global_data.h >>>> b/include/asm-generic/global_data.h index >>>> 02a3ed6838..7c2220643b 100644 --- >>>> a/include/asm-generic/global_data.h +++ >>>> b/include/asm-generic/global_data.h @@ -137,7 +137,7 @@ >>>> typedef struct global_data { #if >>>> defined(CONFIG_TRANSLATION_OFFSET) fdt_addr_t >>>> translation_offset; /* optional translation offset */ >>>> #endif -#if defined(CONFIG_WDT) >>>> +#if CONFIG_IS_ENABLED(WDT) >>>> struct udevice *watchdog_dev; >>>> #endif >>>> } gd_t; >>>> diff --git a/include/wdt.h b/include/wdt.h >>>> index aa77d3e9b4..5bcff24ab3 100644 >>>> --- a/include/wdt.h >>>> +++ b/include/wdt.h >>>> @@ -106,7 +106,7 @@ struct wdt_ops { >>>> int (*expire_now)(struct udevice *dev, ulong flags); >>>> }; >>>> >>>> -#if defined(CONFIG_WDT) >>>> +#if CONFIG_IS_ENABLED(WDT) >>>> #ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS >>>> #define CONFIG_WATCHDOG_TIMEOUT_MSECS (60 * 1000) >>>> #endif >>> >>> Tested-by: Lukasz Majewski lukma@denx.de >>> >>> Test HW: display5 i.MX6Q device >>> >> >> Unfortunately this series causes build break when run on >> Travis-CI for some Atmel/Microchip: >> >> arm: + picosam9g45 >> +lib/built-in.o: In function `udelay': >> +lib/time.c:167: undefined reference to `watchdog_reset' >> +drivers/built-in.o: In function `atmel_serial_getc': >> +drivers/serial/atmel_usart.c:103: undefined reference to >> `watchdog_reset' +make[2]: *** [spl/u-boot-spl] Error 1 >> +make[1]: *** [spl/u-boot-spl] Error 2 >> +make: *** [sub-make] Error 2 >> 14 38 1 /53 axm >> boards.cfg is up to date. Nothing to do. >> Summary of current source for 53 boards (2 threads, 1 job per >> thread) >> >> >> u-boot master SHA1: e1a2ed7180adeefb6164239a18249dca5701319d >> > > The fix is under Travis-CI testing: > https://travis-ci.org/lmajewski/u-boot-dfu/builds/542118403 > > I will post patches when it finishes.
What's the fix ?
https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
I've explicitly enabled SPL_WDT=y for affected boards.
I don't think that's the right approach, it should be possible to do without explicit board config modification. I'm building another take, since some boards still failed to build.
Just to be clear - if it works with imply - I'm for this solution.
However, if it breaks, then we may need to find another solution (as for example shown here: https://github.com/lmajewski/u-boot-dfu/commit/98c95790fee02296023a290681109...
- the number of affected boards is small - just 3 of them).
I would very much prefer to make it work without defconfig modifications. This has to be possible, since it worked before the split.
Have you managed to fix the code? Will you post revised patches soon?
Yes, when they are ready and tested.
participants (3)
-
Lukasz Majewski
-
Marek Vasut
-
Peng Fan