1*c92e7ef1SLaurent Vivier /* SPDX-License-Identifier: GPL-2.0 */
2*c92e7ef1SLaurent Vivier /*
3*c92e7ef1SLaurent Vivier  * goldfish-timer clocksource
4*c92e7ef1SLaurent Vivier  * Registers definition for the goldfish-timer device
5*c92e7ef1SLaurent Vivier  */
6*c92e7ef1SLaurent Vivier 
7*c92e7ef1SLaurent Vivier #ifndef _CLOCKSOURCE_TIMER_GOLDFISH_H
8*c92e7ef1SLaurent Vivier #define _CLOCKSOURCE_TIMER_GOLDFISH_H
9*c92e7ef1SLaurent Vivier 
10*c92e7ef1SLaurent Vivier /*
11*c92e7ef1SLaurent Vivier  * TIMER_TIME_LOW	 get low bits of current time and update TIMER_TIME_HIGH
12*c92e7ef1SLaurent Vivier  * TIMER_TIME_HIGH	 get high bits of time at last TIMER_TIME_LOW read
13*c92e7ef1SLaurent Vivier  * TIMER_ALARM_LOW	 set low bits of alarm and activate it
14*c92e7ef1SLaurent Vivier  * TIMER_ALARM_HIGH	 set high bits of next alarm
15*c92e7ef1SLaurent Vivier  * TIMER_IRQ_ENABLED	 enable alarm interrupt
16*c92e7ef1SLaurent Vivier  * TIMER_CLEAR_ALARM	 disarm an existing alarm
17*c92e7ef1SLaurent Vivier  * TIMER_ALARM_STATUS	 alarm status (running or not)
18*c92e7ef1SLaurent Vivier  * TIMER_CLEAR_INTERRUPT clear interrupt
19*c92e7ef1SLaurent Vivier  */
20*c92e7ef1SLaurent Vivier #define TIMER_TIME_LOW		0x00
21*c92e7ef1SLaurent Vivier #define TIMER_TIME_HIGH		0x04
22*c92e7ef1SLaurent Vivier #define TIMER_ALARM_LOW		0x08
23*c92e7ef1SLaurent Vivier #define TIMER_ALARM_HIGH	0x0c
24*c92e7ef1SLaurent Vivier #define TIMER_IRQ_ENABLED	0x10
25*c92e7ef1SLaurent Vivier #define TIMER_CLEAR_ALARM	0x14
26*c92e7ef1SLaurent Vivier #define TIMER_ALARM_STATUS	0x18
27*c92e7ef1SLaurent Vivier #define TIMER_CLEAR_INTERRUPT	0x1c
28*c92e7ef1SLaurent Vivier 
29*c92e7ef1SLaurent Vivier extern int goldfish_timer_init(int irq, void __iomem *base);
30*c92e7ef1SLaurent Vivier 
31*c92e7ef1SLaurent Vivier #endif /* _CLOCKSOURCE_TIMER_GOLDFISH_H */
32