Skip to content

Commit 8d89181

Browse files
committed
Add reset for BCM2387 system timer.
1 parent 3b1bfa5 commit 8d89181

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

libplatsupport/plat_include/bcm2837/platsupport/plat/system_timer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,5 @@ uint64_t system_timer_get_time(system_timer_t *timer);
7171
int system_timer_set_timeout(system_timer_t *timer, uint64_t ns);
7272

7373
int system_timer_handle_irq(system_timer_t *timer);
74+
75+
int system_timer_reset(system_timer_t *timer);

libplatsupport/src/plat/bcm2837/ltimer.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ static int reset(void *data)
145145
spt_ltimer_t *spt_ltimer = data;
146146
spt_stop(&spt_ltimer->spt);
147147
spt_start(&spt_ltimer->spt);
148+
system_timer_reset(&spt_ltimer->system);
148149
return 0;
149150
}
150151

libplatsupport/src/plat/bcm2837/system_timer.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,14 @@ int system_timer_handle_irq(system_timer_t *timer) {
9595

9696
return 0;
9797
}
98+
99+
int system_timer_reset(system_timer_t *timer) {
100+
if (timer == NULL) {
101+
return EINVAL;
102+
}
103+
104+
/* Just clear the one timer that is used. */
105+
timer->regs->ctrl = BIT(SYSTEM_TIMER_MATCH);
106+
107+
return 0;
108+
}

0 commit comments

Comments
 (0)