coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
rtc.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef SOC_MEDIATEK_MT8173_RTC_H
4 #define SOC_MEDIATEK_MT8173_RTC_H
5 
6 #include <soc/pmic_wrap_common.h>
7 #include <soc/rtc_common.h>
8 #include <stdbool.h>
9 #include <stdint.h>
10 #include "mt6391.h"
11 
12 /* RTC registers */
13 enum {
14  RTC_BBPU = 0xE000,
15  RTC_IRQ_STA = 0xE002,
16  RTC_IRQ_EN = 0xE004,
17  RTC_CII_EN = 0xE006
18 };
19 
20 enum {
21  RTC_TC_SEC = 0xE00A,
22  RTC_TC_MIN = 0xE00C,
23  RTC_TC_HOU = 0xE00E,
24  RTC_TC_DOM = 0xE010,
25  RTC_TC_DOW = 0xE012,
26  RTC_TC_MTH = 0xE014,
27  RTC_TC_YEA = 0xE016
28 };
29 
30 enum {
31  RTC_AL_SEC = 0xE018,
32  RTC_AL_MIN = 0xE01A,
33  RTC_AL_HOU = 0xE01C,
34  RTC_AL_DOM = 0xE01E,
35  RTC_AL_DOW = 0xE020,
36  RTC_AL_MTH = 0xE022,
37  RTC_AL_YEA = 0xE024,
38  RTC_AL_MASK = 0xE008
39 };
40 
41 enum {
42  RTC_OSC32CON = 0xE026,
43  RTC_CON = 0xE03E,
44  RTC_WRTGR = 0xE03C
45 };
46 
47 enum {
48  RTC_POWERKEY1 = 0xE028,
49  RTC_POWERKEY2 = 0xE02A
50 };
51 
52 enum {
53  RTC_PDN1 = 0xE02C,
54  RTC_PDN2 = 0xE02E,
55  RTC_SPAR0 = 0xE030,
56  RTC_SPAR1 = 0xE032,
57  RTC_PROT = 0xE036,
58  RTC_DIFF = 0xE038,
59  RTC_CALI = 0xE03A
60 };
61 
62 enum {
63  RTC_BBPU_PWREN = 1U << 0,
64  RTC_BBPU_BBPU = 1U << 2,
65  RTC_BBPU_AUTO = 1U << 3,
66  RTC_BBPU_CLRPKY = 1U << 4,
67  RTC_BBPU_RELOAD = 1U << 5,
68  RTC_BBPU_CBUSY = 1U << 6,
69 
71 };
72 
73 enum {
74  RTC_OSC32CON_AMPEN = 1U << 8,
75  RTC_OSC32CON_LNBUFEN = 1U << 11
76 };
77 
78 enum {
79  RTC_CON_LPEN = 1U << 2,
80  RTC_CON_LPRST = 1U << 3,
81  RTC_CON_CDBO = 1U << 4,
82  RTC_CON_F32KOB = 1U << 5,
83  RTC_CON_GPO = 1U << 6,
84  RTC_CON_GOE = 1U << 7,
85  RTC_CON_GSR = 1U << 8,
86  RTC_CON_GSMT = 1U << 9,
87  RTC_CON_GPEN = 1U << 10,
88  RTC_CON_GPU = 1U << 11,
89  RTC_CON_GE4 = 1U << 12,
90  RTC_CON_GE8 = 1U << 13,
91  RTC_CON_GPI = 1U << 14,
92  RTC_CON_LPSTA_RAW = 1U << 15
93 };
94 
95 enum {
99  RTC_CALI_BBPU_2SEC_STAT = 1U << 11
100 };
101 
102 /* external API */
103 int rtc_init(int recover);
104 void rtc_boot(void);
105 
106 static inline s32 rtc_read(u16 addr, u16 *rdata)
107 {
108  s32 ret;
109 
110  ret = pwrap_read(addr, rdata);
111  if (ret < 0)
112  rtc_info("pwrap_read failed: ret=%d\n", ret);
113 
114  return ret;
115 }
116 
117 static inline s32 rtc_write(u16 addr, u16 wdata)
118 {
119  s32 ret;
120 
121  ret = pwrap_write(addr, wdata);
122  if (ret < 0)
123  rtc_info("pwrap_write failed: ret=%d\n", ret);
124 
125  return ret;
126 }
127 
128 #endif /* SOC_MEDIATEK_MT8173_RTC_H */
static u32 addr
Definition: cirrus.c:14
static s32 pwrap_read(u16 addr, u16 *rdata)
static s32 pwrap_write(u16 addr, u16 wdata)
#define rtc_info(fmt, arg ...)
Definition: rtc_common.h:12
void rtc_init(void)
Definition: rtc.c:29
void rtc_boot(void)
Definition: rtc_mt6359p.c:315
@ RTC_WRTGR
Definition: rtc.h:44
@ RTC_CON
Definition: rtc.h:43
@ RTC_OSC32CON
Definition: rtc.h:42
static s32 rtc_read(u16 addr, u16 *rdata)
Definition: rtc.h:106
@ RTC_IRQ_EN
Definition: rtc.h:16
@ RTC_IRQ_STA
Definition: rtc.h:15
@ RTC_BBPU
Definition: rtc.h:14
@ RTC_CII_EN
Definition: rtc.h:17
@ RTC_CALI_BBPU_2SEC_MODE_SHIFT
Definition: rtc.h:97
@ RTC_CALI_BBPU_2SEC_STAT
Definition: rtc.h:99
@ RTC_CALI_BBPU_2SEC_MODE_MSK
Definition: rtc.h:98
@ RTC_CALI_BBPU_2SEC_EN
Definition: rtc.h:96
@ RTC_BBPU_BBPU
Definition: rtc.h:64
@ RTC_CBUSY_TIMEOUT_US
Definition: rtc.h:70
@ RTC_BBPU_AUTO
Definition: rtc.h:65
@ RTC_BBPU_PWREN
Definition: rtc.h:63
@ RTC_BBPU_CLRPKY
Definition: rtc.h:66
@ RTC_BBPU_RELOAD
Definition: rtc.h:67
@ RTC_BBPU_CBUSY
Definition: rtc.h:68
@ RTC_CON_GPI
Definition: rtc.h:91
@ RTC_CON_GE8
Definition: rtc.h:90
@ RTC_CON_GSMT
Definition: rtc.h:86
@ RTC_CON_GE4
Definition: rtc.h:89
@ RTC_CON_GPU
Definition: rtc.h:88
@ RTC_CON_CDBO
Definition: rtc.h:81
@ RTC_CON_GPO
Definition: rtc.h:83
@ RTC_CON_F32KOB
Definition: rtc.h:82
@ RTC_CON_LPSTA_RAW
Definition: rtc.h:92
@ RTC_CON_GOE
Definition: rtc.h:84
@ RTC_CON_LPRST
Definition: rtc.h:80
@ RTC_CON_LPEN
Definition: rtc.h:79
@ RTC_CON_GSR
Definition: rtc.h:85
@ RTC_CON_GPEN
Definition: rtc.h:87
static s32 rtc_write(u16 addr, u16 wdata)
Definition: rtc.h:117
@ RTC_DIFF
Definition: rtc.h:58
@ RTC_CALI
Definition: rtc.h:59
@ RTC_SPAR1
Definition: rtc.h:56
@ RTC_PDN2
Definition: rtc.h:54
@ RTC_SPAR0
Definition: rtc.h:55
@ RTC_PDN1
Definition: rtc.h:53
@ RTC_PROT
Definition: rtc.h:57
@ RTC_AL_MTH
Definition: rtc.h:36
@ RTC_AL_DOM
Definition: rtc.h:34
@ RTC_AL_DOW
Definition: rtc.h:35
@ RTC_AL_MIN
Definition: rtc.h:32
@ RTC_AL_HOU
Definition: rtc.h:33
@ RTC_AL_MASK
Definition: rtc.h:38
@ RTC_AL_YEA
Definition: rtc.h:37
@ RTC_AL_SEC
Definition: rtc.h:31
@ RTC_TC_MTH
Definition: rtc.h:26
@ RTC_TC_SEC
Definition: rtc.h:21
@ RTC_TC_MIN
Definition: rtc.h:22
@ RTC_TC_DOW
Definition: rtc.h:25
@ RTC_TC_DOM
Definition: rtc.h:24
@ RTC_TC_YEA
Definition: rtc.h:27
@ RTC_TC_HOU
Definition: rtc.h:23
@ RTC_POWERKEY1
Definition: rtc.h:48
@ RTC_POWERKEY2
Definition: rtc.h:49
@ RTC_OSC32CON_AMPEN
Definition: rtc.h:74
@ RTC_OSC32CON_LNBUFEN
Definition: rtc.h:75
uint16_t u16
Definition: stdint.h:48
int32_t s32
Definition: stdint.h:50