watchdog/denali: Adding DesignWare watchdog driver support
PATCH v5 1/2 watchdog/denali: Adding DesignWare watchdog driver support
To add the DesignWare watchdog driver support. It required information such as register base address and clock info from configuration header file within include/configs folder.
---
Changes for v5
- Updated to latest code branch
Changes for v4
- Added static for local function
Changes for v3
- Split to 2 series patch
Changes for v2
- Enable this driver at socfpga_cyclone5 board
--- drivers/watchdog/Makefile | 1 + drivers/watchdog/designware_wdt.c | 74 +++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 drivers/watchdog/designware_wdt.c
drivers/watchdog/Makefile +1 -0
@@ -15,3 +15,4 @@ obj-$(CONFIG_S5P) += s5p_wdt.o obj-$(CONFIG_XILINX_TB_WATCHDOG) += xilinx_tb_wdt.o obj-$(CONFIG_BFIN_WATCHDOG) += bfin_wdt.o obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o +obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o
drivers/watchdog/designware_wdt.c new file +74 -0
74 lines not on this page · raw message
Signature · 1 line
1.7.9.5
PATCH v5 1/2 watchdog/denali: Adding DesignWare watchdog driver support
Hi Chin,
Quoted 103 lines · Chin Liang See
To add the DesignWare watchdog driver support. It required information such as register base address and clock info from configuration header file within
include/configsfolder.Signed-off-by Chin Liang See <[email protected]>Cc Anatolij Gustschin <[email protected]>Cc Albert Aribaud <[email protected]>Cc Heiko Schocher <[email protected]>Cc Tom Rini <[email protected]>---
Changes for v5
- Updated to latest code branch
Changes for v4
- Added static for local function
Changes for v3
- Split to 2 series patch
Changes for v2
- Enable this driver atsocfpga_cyclone5board--- drivers/watchdog/Makefile | 1 + drivers/watchdog/designware_wdt.c | 74 +++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 drivers/watchdog/designware_wdt.cdrivers/watchdog/Makefile +1
-0@@ -15,3 +15,4 @@ obj-$(CONFIG_S5P) += s5p_wdt.o obj-$(CONFIG_XILINX_TB_WATCHDOG) += xilinx_tb_wdt.o obj-$(CONFIG_BFIN_WATCHDOG) += bfin_wdt.o obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o +obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.odrivers/watchdog/designware_wdt.c new file +64
-0@@ -0,0 +1,74 @@ +/* +* Copyright (C) 2013 Altera Corporation <www.altera.com> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> +#include <watchdog.h> +#include <asm/io.h> +#include <asm/utils.h> + +#define DW_WDT_CR 0x00 +#define DW_WDT_TORR 0x04 +#define DW_WDT_CRR 0x0C + +#define DW_WDT_CR_EN_OFFSET 0x00 +#define DW_WDT_CR_RMOD_OFFSET 0x01 +#define DW_WDT_CR_RMOD_VAL 0x00 +#define DW_WDT_CRR_RESTART_VAL 0x76 + +/* +* Set the watchdog time interval. +* Counter is 32 bit. +*/ +static int designware_wdt_settimeout (unsigned int timeout) +{ +signed int i; + +/* calculate the timeout range value */ + i = (log_2_n_round_up (timeout *CONFIG_DW_WDT_CLOCK_KHZ )) -16 ; +if (i >15 ) + i =15 ; +if (i <0 ) + i =0 ; + +writel ((i | (i <<4 )), (CONFIG_DW_WDT_BASE +DW_WDT_TORR )); +return 0 ; +} + +static void designware_wdt_enable (void ) +{ +writel (((DW_WDT_CR_RMOD_VAL <<DW_WDT_CR_RMOD_OFFSET ) | + (0x1 <<DW_WDT_CR_EN_OFFSET )), + (CONFIG_DW_WDT_BASE +DW_WDT_CR )); +} + +static unsigned int designware_wdt_is_enabled (void ) +{ +unsigned long val; + val =readl ((CONFIG_DW_WDT_BASE +DW_WDT_CR )); +return val &0x1 ; +} + +#if defined(CONFIG_HW_WATCHDOG ) +void hw_watchdog_reset (void ) +{ +if (designware_wdt_is_enabled ()) +/* restart the watchdog counter */ +writel (DW_WDT_CRR_RESTART_VAL , + (CONFIG_DW_WDT_BASE +DW_WDT_CRR )); +} + +void hw_watchdog_init (void ) +{
drivers/watchdog/designware_wdt.c line 74
Quoted 10 lines
drivers/watchdog/designware_wdt.c new file +10
-0+/* reset to disable the watchdog */ +hw_watchdog_reset (); +/* set timer in miliseconds */ +designware_wdt_settimeout (CONFIG_HW_WATCHDOG_TIMEOUT_MS ); +/* enable the watchdog */ +designware_wdt_enable (); +/* reset the watchdog */ + hw_watchdog_reset(); +} +#endif
Applied to u-boot-arm/master, thanks!
Amicalement,
Signature · 1 line
Albert.