blob: 75bcc123a9a8c1a25cf761676fe691859c82f910 [file] [log] [blame]
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001/*
Madhukar Pappireddydd7db242021-08-05 14:14:15 -05002 * Copyright (c) 2018-2021, Arm Limited. All rights reserved.
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef __SP805_H__
8#define __SP805_H__
9
10/* SP805 register offset */
11#define SP805_WDOG_LOAD_OFF 0x000
12#define SP805_WDOG_VALUE_0FF 0x004
13#define SP805_WDOG_CTRL_OFF 0x008
14#define SP805_WDOG_INT_CLR_OFF 0x00c
15#define SP805_WDOG_RIS_OFF 0x010
16#define SP805_WDOG_MIS_OFF 0x014
17#define SP805_WDOG_LOCK_OFF 0xc00
18#define SP805_WDOG_ITCR_OFF 0xf00
19#define SP805_WDOG_ITOP_OFF 0xf04
20#define SP805_WDOG_PERIPH_ID_OFF 0xfe0
21#define SP805_WDOG_PCELL_ID_OFF 0xff0
22
23/*
24 * Magic word to unlock access to all other watchdog registers, Writing any other
25 * value locks them.
26 */
27#define SP805_WDOG_UNLOCK_ACCESS 0x1ACCE551
28
29/* Register field definitions */
30#define SP805_WDOG_CTRL_MASK 0x03
31#define SP805_WDOG_CTRL_RESEN (1 << 1)
32#define SP805_WDOG_CTRL_INTEN (1 << 0)
33#define SP805_WDOG_RIS_WDOGRIS (1 << 0)
34#define SP805_WDOG_RIS_MASK 0x1
35#define SP805_WDOG_MIS_WDOGMIS (1 << 0)
36#define SP805_WDOG_MIS_MASK 0x1
37#define SP805_WDOG_ITCR_MASK 0x1
38#define SP805_WDOG_ITOP_MASK 0x3
39#define SP805_WDOG_PART_NUM_SHIFT 0
40#define SP805_WDOG_PART_NUM_MASK 0xfff
41#define SP805_WDOG_DESIGNER_ID_SHIFT 12
42#define SP805_WDOG_DESIGNER_ID_MASK 0xff
43#define SP805_WDOG_REV_SHIFT 20
44#define SP805_WDOG_REV_MASK 0xf
45#define SP805_WDOG_CFG_SHIFT 24
46#define SP805_WDOG_CFG_MASK 0xff
47#define SP805_WDOG_PCELL_ID_SHIFT 0
48#define SP805_WDOG_PCELL_ID_MASK 0xff
49
Madhukar Pappireddydd7db242021-08-05 14:14:15 -050050#define ARM_SP805_TWDG_CLK_HZ 32768
51
52/* Public APIs for non-trusted watchdog module. */
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020053void sp805_wdog_start(unsigned int wdog_cycles);
54void sp805_wdog_stop(void);
55void sp805_wdog_refresh(void);
56
Madhukar Pappireddydd7db242021-08-05 14:14:15 -050057/* Public APIs for trusted watchdog module. */
58void sp805_twdog_start(unsigned int wdog_cycles);
59void sp805_twdog_stop(void);
60void sp805_twdog_refresh(void);
61
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020062#endif /* __SP805_H__ */
63