mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-02 17:41:08 +00:00
7659ea32a6
This patch adds device tree and driver model watchdog support, converts the legacy omap watchdog driver to driver model for TI AM335x chipsets. The following compile warning is removed: ===================== WARNING ====================== This board does not use CONFIG_WDT (DM watchdog support). Please update the board to use CONFIG_WDT before the v2019.10 release. Failure to update by the deadline may result in board removal. See doc/driver-model/MIGRATION.txt for more info. ==================================================== CONFIG_HW_WATCHDOG is no more a default option for AM33XX devices after DT/DM conversion, adjusted kconfig accordingly. DM watchdog support is enabled by default in SPL. The SPL image doesn't fit into SRAM because of size constraints and build breaks with an overflow. For this reason DM watchdog support should be disabled in SPL, driver code should be adjusted accordingly to serve this purpose. Built and tested on AM335x device (BeagleboneBlack), compile tested for all other AM33xx based boards. Signed-off-by: Suniel Mahesh <sunil.m@techveda.org>
64 lines
1.8 KiB
C
64 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* omap_wdt.h
|
|
*
|
|
* OMAP Watchdog header file
|
|
*
|
|
* Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
|
|
*/
|
|
|
|
#ifndef __OMAP_WDT_H__
|
|
#define __OMAP_WDT_H__
|
|
|
|
/*
|
|
* Watchdog:
|
|
* Using the prescaler, the OMAP watchdog could go for many
|
|
* months before firing. These limits work without scaling,
|
|
* with the 60 second default assumed by most tools and docs.
|
|
*/
|
|
#define TIMER_MARGIN_MAX (24 * 60 * 60) /* 1 day */
|
|
#define TIMER_MARGIN_DEFAULT 60 /* 60 secs */
|
|
#define TIMER_MARGIN_MIN 1
|
|
|
|
#define PTV 0 /* prescale */
|
|
#define GET_WLDR_VAL(secs) (0xffffffff - ((secs) * (32768/(1<<PTV))) + 1)
|
|
#define WDT_WWPS_PEND_WCLR BIT(0)
|
|
#define WDT_WWPS_PEND_WLDR BIT(2)
|
|
#define WDT_WWPS_PEND_WTGR BIT(3)
|
|
#define WDT_WWPS_PEND_WSPR BIT(4)
|
|
|
|
#define WDT_WCLR_PRE BIT(5)
|
|
#define WDT_WCLR_PTV_OFF 2
|
|
|
|
/* Watchdog timer registers */
|
|
struct wd_timer {
|
|
unsigned int resv1[4];
|
|
unsigned int wdtwdsc; /* offset 0x010 */
|
|
unsigned int wdtwdst; /* offset 0x014 */
|
|
unsigned int wdtwisr; /* offset 0x018 */
|
|
unsigned int wdtwier; /* offset 0x01C */
|
|
unsigned int wdtwwer; /* offset 0x020 */
|
|
unsigned int wdtwclr; /* offset 0x024 */
|
|
unsigned int wdtwcrr; /* offset 0x028 */
|
|
unsigned int wdtwldr; /* offset 0x02C */
|
|
unsigned int wdtwtgr; /* offset 0x030 */
|
|
unsigned int wdtwwps; /* offset 0x034 */
|
|
unsigned int resv2[3];
|
|
unsigned int wdtwdly; /* offset 0x044 */
|
|
unsigned int wdtwspr; /* offset 0x048 */
|
|
unsigned int resv3[1];
|
|
unsigned int wdtwqeoi; /* offset 0x050 */
|
|
unsigned int wdtwqstar; /* offset 0x054 */
|
|
unsigned int wdtwqsta; /* offset 0x058 */
|
|
unsigned int wdtwqens; /* offset 0x05C */
|
|
unsigned int wdtwqenc; /* offset 0x060 */
|
|
unsigned int resv4[39];
|
|
unsigned int wdt_unfr; /* offset 0x100 */
|
|
};
|
|
|
|
struct omap3_wdt_priv {
|
|
struct wd_timer *regs;
|
|
unsigned int wdt_trgr_pattern;
|
|
};
|
|
|
|
#endif /* __OMAP_WDT_H__ */
|