7 #include "gtest/gtest.h"
10 #include "sw/device/lib/base/mock_mmio.h"
14 #include "aon_timer_regs.h"
16 namespace dif_aon_timer_unittest {
26 dif_aon_timer_t aon_ = {.base_addr = dev().region()};
37 TEST_F(WakeupStatusTest, GetSuccess) {
39 EXPECT_READ32(AON_TIMER_WKUP_CAUSE_REG_OFFSET, 1);
41 EXPECT_EQ(cause,
true);
44 TEST_F(WakeupStatusTest, ClearNullArgs) {
48 TEST_F(WakeupStatusTest, ClearSuccess) {
49 EXPECT_WRITE32(AON_TIMER_WKUP_CAUSE_REG_OFFSET, 0);
59 TEST_F(WakeupStartTest, BadPrescaler) {
61 &aon_, 1, AON_TIMER_WKUP_CTRL_PRESCALER_MASK + 1));
64 TEST_F(WakeupStartTest, Success) {
65 EXPECT_READ32(AON_TIMER_WKUP_CTRL_REG_OFFSET, 0);
66 EXPECT_WRITE32(AON_TIMER_WKUP_CTRL_REG_OFFSET,
68 {AON_TIMER_WKUP_CTRL_ENABLE_BIT,
false},
70 EXPECT_WRITE32(AON_TIMER_WKUP_COUNT_LO_REG_OFFSET, 0);
71 EXPECT_WRITE32(AON_TIMER_WKUP_COUNT_HI_REG_OFFSET, 0);
72 EXPECT_WRITE32(AON_TIMER_WKUP_THOLD_LO_REG_OFFSET, 0);
73 EXPECT_WRITE32(AON_TIMER_WKUP_THOLD_HI_REG_OFFSET, 0);
74 EXPECT_WRITE32(AON_TIMER_WKUP_CTRL_REG_OFFSET,
77 AON_TIMER_WKUP_CTRL_PRESCALER_OFFSET,
78 AON_TIMER_WKUP_CTRL_PRESCALER_MASK,
80 {AON_TIMER_WKUP_CTRL_ENABLE_BIT,
true},
93 TEST_F(WakeupStopTest, Success) {
94 EXPECT_READ32(AON_TIMER_WKUP_CTRL_REG_OFFSET,
96 {AON_TIMER_WKUP_CTRL_ENABLE_BIT,
true},
98 EXPECT_WRITE32(AON_TIMER_WKUP_CTRL_REG_OFFSET,
100 {AON_TIMER_WKUP_CTRL_ENABLE_BIT,
false},
112 TEST_F(WakeupRestartTest, Success) {
113 EXPECT_READ32(AON_TIMER_WKUP_CTRL_REG_OFFSET, 0);
114 EXPECT_WRITE32(AON_TIMER_WKUP_CTRL_REG_OFFSET,
116 {AON_TIMER_WKUP_CTRL_ENABLE_BIT,
false},
118 EXPECT_WRITE32(AON_TIMER_WKUP_COUNT_LO_REG_OFFSET, 0);
119 EXPECT_WRITE32(AON_TIMER_WKUP_COUNT_HI_REG_OFFSET, 0);
120 EXPECT_READ32(AON_TIMER_WKUP_CTRL_REG_OFFSET, 0);
121 EXPECT_WRITE32(AON_TIMER_WKUP_CTRL_REG_OFFSET,
123 {AON_TIMER_WKUP_CTRL_ENABLE_BIT,
true},
138 TEST_F(WakeupGetCountTest, Success) {
139 EXPECT_READ32(AON_TIMER_WKUP_COUNT_HI_REG_OFFSET, 0xA5A5A5A5);
140 EXPECT_READ32(AON_TIMER_WKUP_COUNT_LO_REG_OFFSET, 0xA5A5A5A5);
141 EXPECT_READ32(AON_TIMER_WKUP_COUNT_HI_REG_OFFSET, 0xA5A5A5A5);
145 EXPECT_EQ(count, 0xA5A5A5A5A5A5A5A5);
148 TEST_F(WakeupGetCountTest, OverflowSuccess) {
149 EXPECT_READ32(AON_TIMER_WKUP_COUNT_HI_REG_OFFSET, 0xA5A5A5A5);
150 EXPECT_READ32(AON_TIMER_WKUP_COUNT_LO_REG_OFFSET, 0xA5A5A5A5);
151 EXPECT_READ32(AON_TIMER_WKUP_COUNT_HI_REG_OFFSET, 0xA5A5A5A6);
152 EXPECT_READ32(AON_TIMER_WKUP_COUNT_LO_REG_OFFSET, 0x5A5A5A5A);
156 EXPECT_EQ(count, 0xA5A5A5A65A5A5A5A);
161 void SuccessCommon() {
162 EXPECT_READ32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 1);
163 EXPECT_READ32(AON_TIMER_WDOG_CTRL_REG_OFFSET, 0);
164 EXPECT_WRITE32(AON_TIMER_WDOG_CTRL_REG_OFFSET,
166 {AON_TIMER_WDOG_CTRL_ENABLE_BIT,
false},
168 EXPECT_WRITE32(AON_TIMER_WDOG_COUNT_REG_OFFSET, 0);
171 EXPECT_WRITE32(AON_TIMER_WDOG_BARK_THOLD_REG_OFFSET, 0xA5A5A5A4);
172 EXPECT_WRITE32(AON_TIMER_WDOG_BITE_THOLD_REG_OFFSET, 0x5A5A5A59);
180 TEST_F(WatchdogStartTest, Locked) {
181 EXPECT_READ32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 0);
186 TEST_F(WatchdogStartTest, Success) {
189 EXPECT_WRITE32(AON_TIMER_WDOG_CTRL_REG_OFFSET,
192 AON_TIMER_WDOG_CTRL_PAUSE_IN_SLEEP_BIT,
195 {AON_TIMER_WDOG_CTRL_ENABLE_BIT,
true},
202 TEST_F(WatchdogStartTest, SuccessPauseInSleep) {
205 EXPECT_WRITE32(AON_TIMER_WDOG_CTRL_REG_OFFSET,
208 AON_TIMER_WDOG_CTRL_PAUSE_IN_SLEEP_BIT,
211 {AON_TIMER_WDOG_CTRL_ENABLE_BIT,
true},
218 TEST_F(WatchdogStartTest, SuccessLock) {
221 EXPECT_WRITE32(AON_TIMER_WDOG_CTRL_REG_OFFSET,
224 AON_TIMER_WDOG_CTRL_PAUSE_IN_SLEEP_BIT,
227 {AON_TIMER_WDOG_CTRL_ENABLE_BIT,
true},
230 EXPECT_WRITE32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 1);
236 TEST_F(WatchdogStartTest, SuccessPauseInSleepAndLock) {
239 EXPECT_WRITE32(AON_TIMER_WDOG_CTRL_REG_OFFSET,
242 AON_TIMER_WDOG_CTRL_PAUSE_IN_SLEEP_BIT,
245 {AON_TIMER_WDOG_CTRL_ENABLE_BIT,
true},
248 EXPECT_WRITE32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 1);
260 TEST_F(WatchdogStopTest, Locked) {
261 EXPECT_READ32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 0);
266 TEST_F(WatchdogStopTest, Success) {
267 EXPECT_READ32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 1);
268 EXPECT_READ32(AON_TIMER_WDOG_CTRL_REG_OFFSET,
270 {AON_TIMER_WDOG_CTRL_ENABLE_BIT,
true},
272 EXPECT_WRITE32(AON_TIMER_WDOG_CTRL_REG_OFFSET,
274 {AON_TIMER_WDOG_CTRL_ENABLE_BIT,
false},
286 TEST_F(WatchdogRestartTest, Locked) {
287 EXPECT_READ32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 0);
291 TEST_F(WatchdogRestartTest, Success) {
292 EXPECT_READ32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 1);
293 EXPECT_WRITE32(AON_TIMER_WDOG_COUNT_REG_OFFSET, 0);
294 EXPECT_READ32(AON_TIMER_WDOG_CTRL_REG_OFFSET, 0);
295 EXPECT_WRITE32(AON_TIMER_WDOG_CTRL_REG_OFFSET,
297 {AON_TIMER_WDOG_CTRL_ENABLE_BIT,
true},
312 TEST_F(WatchdogGetCountTest, Success) {
313 EXPECT_READ32(AON_TIMER_WDOG_COUNT_REG_OFFSET, 0xA5A5A5A5);
317 EXPECT_EQ(count, 0xA5A5A5A5);
326 TEST_F(WatchdogPetTest, Success) {
327 EXPECT_WRITE32(AON_TIMER_WDOG_COUNT_REG_OFFSET, 0);
338 TEST_F(WatchdogLockTest, Success) {
339 EXPECT_WRITE32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 1);
353 TEST_F(WatchdogIsLockedTest, Success) {
354 EXPECT_READ32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 1);
358 EXPECT_EQ(is_locked,
false);
361 TEST_F(WatchdogIsLockedTest, SuccessLocked) {
362 EXPECT_READ32(AON_TIMER_WDOG_REGWEN_REG_OFFSET, 0);
366 EXPECT_EQ(is_locked,
true);