initial commit
[freebsd-arm:freebsd-arm.git] / arm / econa / econa_reg.h
1 /*-
2  * Copyright (c) 2009 Yohanes Nugroho <yohanes@gmail.com>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24  * SUCH DAMAGE.
25  *
26  * $FreeBSD$
27  */
28 #ifndef _ARM_ECONA_REG_H
29 #define _ARM_ECONA_REG_H
30
31 #define ECONA_SRAM_SIZE 0x10000000
32 #define ECONA_DRAM_BASE 0x00000000 /* DRAM (via DDR Control Module) */
33
34 #define ECONA_SDRAM_BASE        0x40000000
35 #define ECONA_SDRAM_SIZE        0x1000000
36
37
38 #define ECONA_IO_BASE           0x70000000
39 #define ECONA_IO_SIZE           0x0E000000
40 #define ECONA_PIC_BASE          0x0D000000
41 #define ECONA_PIC_SIZE          0x01000000
42
43 #define ECONA_CNS21XX_PIC_PBASE         0xFFFFF000
44 #define ECONA_CNS21XX_PIC_SIZE          4096
45 #define ECONA_CNS21XX_PIC_VBASE         0xFFFFF000
46
47 #define ECONA_UART_BASE 0x08000000
48 #define ECONA_UART_SIZE 0x01000000
49
50 #ifdef CNS11XX
51 #define ECONA_IRQ_UART          10
52 #else
53 #define ECONA_IRQ_UART          9
54 #endif
55
56 #define ECONA_TIMER_BASE        0x09000000
57 #define ECONA_TIMER_SIZE        0x01000000
58 #define ECONA_IRQ_TIMER_1       0
59 #define ECONA_IRQ_TIMER_2       1
60 #define ECONA_IRQ_OHCI          23
61 #define ECONA_IRQ_EHCI          24
62
63 #define ECONA_NET_BASE          0x00000000
64
65 #define ECONA_SYSTEM_BASE       0x07000000
66 #define ECONA_SYSTEM_SIZE       0x01000000
67
68 #define ECONA_NET_SIZE          0x01000000
69
70 #define ECONA_CFI_PBASE 0x10000000
71 #define ECONA_CFI_VBASE 0xD0000000
72 #define ECONA_CFI_SIZE          0x10000000
73
74 #define ECONA_IRQ_STATUS        18
75 #define ECONA_IRQ_TSTC          19
76 #define ECONA_IRQ_FSRC          20
77 #define ECONA_IRQ_TSQE          21
78 #define ECONA_IRQ_FSQF          22
79
80 #define ECONA_IRQ_SYSTEM        0
81
82 #define ECONA_EHCI_PBASE        0xC8000000
83 #define ECONA_EHCI_VBASE        0xE8000000
84 #define ECONA_EHCI_SIZE 0x8000000
85
86 #define ECONA_OHCI_PBASE        0xC0000000
87 #define ECONA_OHCI_VBASE        0xE0000000
88 #define ECONA_OHCI_SIZE 0x8000000
89
90 #define ECONA_USB_SIZE          0xf000000
91
92 /*Interrupt controller*/
93 #define INTC_LEVEL_TRIGGER      0
94 #define INTC_EDGE_TRIGGER       1
95 #define INTC_ACTIVE_HIGH        0
96 #define INTC_ACTIVE_LOW 1
97 /*
98  * define rising/falling edge for edge trigger mode
99  */
100 #define INTC_RISING_EDGE        0
101 #define INTC_FALLING_EDGE       1
102
103 #ifdef CNS11XX
104
105 #define INTC_INTERRUPT_MASK_REG_OFFSET                  0x04
106 #define INTC_INTERRUPT_CLEAR_EDGE_TRIGGER_REG_OFFSET    0x08
107 #define INTC_INTERRUPT_TRIGGER_MODE_REG_OFFSET          0x0C
108 #define INTC_INTERRUPT_TRIGGER_LEVEL_REG_OFFSET 0x10
109 #define INTC_INTERRUPT_STATUS_REG_OFFSET                0x14
110 #define INTC_FIQ_MODE_SELECT_REG_OFFSET         0x18
111
112
113 #else
114
115
116 #define INTC_INTERRUPT_CLEAR_EDGE_TRIGGER_REG_OFFSET    0x04
117 #define INTC_INTERRUPT_MASK_REG_OFFSET                  0x08
118 #define INTC_INTERRUPT_CLEAR_MASK_REG_OFFSET            0x0C
119
120 #define INTC_INTERRUPT_TRIGGER_MODE_REG_OFFSET          0x10
121 #define INTC_INTERRUPT_TRIGGER_LEVEL_REG_OFFSET 0x14
122 #define INTC_INTERRUPT_STATUS_REG_OFFSET                0x1C
123 #define INTC_FIQ_MODE_SELECT_REG_OFFSET         0x18
124
125 #define INTC_SOFTWARE_INTERRUPT_CLEAR           0x28
126 #define INTC_SOFTWARE_INTERRUPT_PRIORITY_MASK           0x2C
127
128 #endif
129
130
131 /*
132  * define rising/falling edge for edge trigger mode
133  */
134 #define INTC_RISING_EDGE        0
135 #define INTC_FALLING_EDGE       1
136
137
138 #define TIMER_TM1_COUNTER_REG           0x00
139 #define TIMER_TM1_LOAD_REG              0x04
140 #define TIMER_TM1_MATCH1_REG            0x08
141 #define TIMER_TM1_MATCH2_REG            0x0C
142
143 #define TIMER_TM2_COUNTER_REG           0x10
144 #define TIMER_TM2_LOAD_REG              0x14
145 #define TIMER_TM2_MATCH1_REG            0x18
146 #define TIMER_TM2_MATCH2_REG            0x1C
147
148 #define TIMER_TM_CR_REG         0x30
149 #define TIMER_TM_INTR_STATUS_REG        0x34
150 #define TIMER_TM_INTR_MASK_REG          0x38
151
152 #define TIMER_TM_REVISION_REG           0x3C
153
154
155 #define INTC_TIMER1_BIT_INDEX           0
156
157 #define TIMER1_UP_DOWN_COUNT            (1<<9)
158 #define TIMER2_UP_DOWN_COUNT            (1<<10)
159
160 #define TIMER1_MATCH1_INTR              (1<<0)
161 #define TIMER1_MATCH2_INTR              (1<<1)
162 #define TIMER1_OVERFLOW_INTR            (1<<2)
163
164
165 #define TIMER2_MATCH1_INTR              (1<<3)
166 #define TIMER2_MATCH2_INTR              (1<<4)
167 #define TIMER2_OVERFLOW_INTR            (1<<5)
168
169
170 #define TIMER_CLOCK_SOURCE_PCLK 0
171 #define TIMER_CLOCK_SOURCE_EXT_CLK      1
172
173 /*
174  * define interrupt trigger mode
175  */
176 #define INTC_LEVEL_TRIGGER              0
177 #define INTC_EDGE_TRIGGER               1
178
179
180 #define INTC_TRIGGER_UNKNOWN -1
181
182 #define TIMER1_OVERFLOW_INTERRUPT       (1<<2)
183 #define TIMER2_OVERFLOW_INTERRUPT       (1<<5)
184 #define TIMER_INTERRUPT_STATUS_REG      0x34
185
186
187 #define TIMER1_ENABLE                   (1<<0)
188 #define TIMER1_CLOCK_SOURCE             (1<<1)
189 #define TIMER1_OVERFLOW_ENABLE          (1<<2)
190
191
192 #define TIMER2_ENABLE                   (1<<3)
193 #define TIMER2_CLOCK_SOURCE             (1<<4)
194 #define TIMER2_OVERFLOW_ENABLE          (1<<5)
195
196
197 #define TIMER_1                 1
198
199 #ifdef CNS11XX
200 #define EC_UART_CLOCK                   14769200
201 #else
202 #define EC_UART_CLOCK                   24000000
203 #endif
204
205 #define EC_UART_REGSHIFT                2
206
207 #define SYSTEM_CLOCK                    0x14
208 #define RESET_CONTROL                   0x4
209 #define GLOBAL_RESET                    0x1
210 #define NET_INTERFACE_RESET             (0x1 << 4)
211
212 #define VIC_CONTROL_REGISTER    0x144
213
214 #endif