hc
2023-11-22 f743a7adbd6e230d66a6206fa115b59fec2d88eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
 * arch/arm/mach-at91/include/mach/at91_rtc.h
 *
 * Copyright (C) 2005 Ivan Kokshaysky
 * Copyright (C) SAN People
 *
 * Real Time Clock (RTC) - System peripheral registers.
 * Based on AT91RM9200 datasheet revision E.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */
 
#ifndef AT91_RTC_H
#define AT91_RTC_H
 
#define    AT91_RTC_CR        0x00            /* Control Register */
#define        AT91_RTC_UPDTIM        (1 <<  0)        /* Update Request Time Register */
#define        AT91_RTC_UPDCAL        (1 <<  1)        /* Update Request Calendar Register */
#define        AT91_RTC_TIMEVSEL    (3 <<  8)        /* Time Event Selection */
#define            AT91_RTC_TIMEVSEL_MINUTE    (0 << 8)
#define            AT91_RTC_TIMEVSEL_HOUR        (1 << 8)
#define            AT91_RTC_TIMEVSEL_DAY24        (2 << 8)
#define            AT91_RTC_TIMEVSEL_DAY12        (3 << 8)
#define        AT91_RTC_CALEVSEL    (3 << 16)        /* Calendar Event Selection */
#define            AT91_RTC_CALEVSEL_WEEK        (0 << 16)
#define            AT91_RTC_CALEVSEL_MONTH        (1 << 16)
#define            AT91_RTC_CALEVSEL_YEAR        (2 << 16)
 
#define    AT91_RTC_MR        0x04            /* Mode Register */
#define            AT91_RTC_HRMOD        (1 <<  0)        /* 12/24 Hour Mode */
 
#define    AT91_RTC_TIMR        0x08            /* Time Register */
#define        AT91_RTC_SEC        (0x7f <<  0)        /* Current Second */
#define        AT91_RTC_MIN        (0x7f <<  8)        /* Current Minute */
#define        AT91_RTC_HOUR        (0x3f << 16)        /* Current Hour */
#define        AT91_RTC_AMPM        (1    << 22)        /* Ante Meridiem Post Meridiem Indicator */
 
#define    AT91_RTC_CALR        0x0c            /* Calendar Register */
#define        AT91_RTC_CENT        (0x7f <<  0)        /* Current Century */
#define        AT91_RTC_YEAR        (0xff <<  8)        /* Current Year */
#define        AT91_RTC_MONTH        (0x1f << 16)        /* Current Month */
#define        AT91_RTC_DAY        (7    << 21)        /* Current Day */
#define        AT91_RTC_DATE        (0x3f << 24)        /* Current Date */
 
#define    AT91_RTC_TIMALR        0x10            /* Time Alarm Register */
#define        AT91_RTC_SECEN        (1 <<  7)        /* Second Alarm Enable */
#define        AT91_RTC_MINEN        (1 << 15)        /* Minute Alarm Enable */
#define        AT91_RTC_HOUREN        (1 << 23)        /* Hour Alarm Enable */
 
#define    AT91_RTC_CALALR        0x14            /* Calendar Alarm Register */
#define        AT91_RTC_MTHEN        (1 << 23)        /* Month Alarm Enable */
#define        AT91_RTC_DATEEN        (1 << 31)        /* Date Alarm Enable */
 
#define    AT91_RTC_SR        0x18            /* Status Register */
#define        AT91_RTC_ACKUPD        (1 <<  0)        /* Acknowledge for Update */
#define        AT91_RTC_ALARM        (1 <<  1)        /* Alarm Flag */
#define        AT91_RTC_SECEV        (1 <<  2)        /* Second Event */
#define        AT91_RTC_TIMEV        (1 <<  3)        /* Time Event */
#define        AT91_RTC_CALEV        (1 <<  4)        /* Calendar Event */
 
#define    AT91_RTC_SCCR        0x1c            /* Status Clear Command Register */
#define    AT91_RTC_IER        0x20            /* Interrupt Enable Register */
#define    AT91_RTC_IDR        0x24            /* Interrupt Disable Register */
#define    AT91_RTC_IMR        0x28            /* Interrupt Mask Register */
 
#define    AT91_RTC_VER        0x2c            /* Valid Entry Register */
#define        AT91_RTC_NVTIM        (1 <<  0)        /* Non valid Time */
#define        AT91_RTC_NVCAL        (1 <<  1)        /* Non valid Calendar */
#define        AT91_RTC_NVTIMALR    (1 <<  2)        /* Non valid Time Alarm */
#define        AT91_RTC_NVCALALR    (1 <<  3)        /* Non valid Calendar Alarm */
 
#endif