[INKA4x0] NG hardware: flash support
[platform/kernel/u-boot.git] / include / asm-avr32 / arch-at32ap7000 / hmatrix2.h
1 /*
2  * Register definition for the High-speed Bus Matrix
3  */
4 #ifndef __ASM_AVR32_HMATRIX2_H__
5 #define __ASM_AVR32_HMATRIX2_H__
6
7 /* HMATRIX2 register offsets */
8 #define HMATRIX2_MCFG0                          0x0000
9 #define HMATRIX2_MCFG1                          0x0004
10 #define HMATRIX2_MCFG2                          0x0008
11 #define HMATRIX2_MCFG3                          0x000c
12 #define HMATRIX2_MCFG4                          0x0010
13 #define HMATRIX2_MCFG5                          0x0014
14 #define HMATRIX2_MCFG6                          0x0018
15 #define HMATRIX2_MCFG7                          0x001c
16 #define HMATRIX2_MCFG8                          0x0020
17 #define HMATRIX2_MCFG9                          0x0024
18 #define HMATRIX2_MCFG10                         0x0028
19 #define HMATRIX2_MCFG11                         0x002c
20 #define HMATRIX2_MCFG12                         0x0030
21 #define HMATRIX2_MCFG13                         0x0034
22 #define HMATRIX2_MCFG14                         0x0038
23 #define HMATRIX2_MCFG15                         0x003c
24 #define HMATRIX2_SCFG0                          0x0040
25 #define HMATRIX2_SCFG1                          0x0044
26 #define HMATRIX2_SCFG2                          0x0048
27 #define HMATRIX2_SCFG3                          0x004c
28 #define HMATRIX2_SCFG4                          0x0050
29 #define HMATRIX2_SCFG5                          0x0054
30 #define HMATRIX2_SCFG6                          0x0058
31 #define HMATRIX2_SCFG7                          0x005c
32 #define HMATRIX2_SCFG8                          0x0060
33 #define HMATRIX2_SCFG9                          0x0064
34 #define HMATRIX2_SCFG10                         0x0068
35 #define HMATRIX2_SCFG11                         0x006c
36 #define HMATRIX2_SCFG12                         0x0070
37 #define HMATRIX2_SCFG13                         0x0074
38 #define HMATRIX2_SCFG14                         0x0078
39 #define HMATRIX2_SCFG15                         0x007c
40 #define HMATRIX2_PRAS0                          0x0080
41 #define HMATRIX2_PRBS0                          0x0084
42 #define HMATRIX2_PRAS1                          0x0088
43 #define HMATRIX2_PRBS1                          0x008c
44 #define HMATRIX2_PRAS2                          0x0090
45 #define HMATRIX2_PRBS2                          0x0094
46 #define HMATRIX2_PRAS3                          0x0098
47 #define HMATRIX2_PRBS3                          0x009c
48 #define HMATRIX2_PRAS4                          0x00a0
49 #define HMATRIX2_PRBS4                          0x00a4
50 #define HMATRIX2_PRAS5                          0x00a8
51 #define HMATRIX2_PRBS5                          0x00ac
52 #define HMATRIX2_PRAS6                          0x00b0
53 #define HMATRIX2_PRBS6                          0x00b4
54 #define HMATRIX2_PRAS7                          0x00b8
55 #define HMATRIX2_PRBS7                          0x00bc
56 #define HMATRIX2_PRAS8                          0x00c0
57 #define HMATRIX2_PRBS8                          0x00c4
58 #define HMATRIX2_PRAS9                          0x00c8
59 #define HMATRIX2_PRBS9                          0x00cc
60 #define HMATRIX2_PRAS10                         0x00d0
61 #define HMATRIX2_PRBS10                         0x00d4
62 #define HMATRIX2_PRAS11                         0x00d8
63 #define HMATRIX2_PRBS11                         0x00dc
64 #define HMATRIX2_PRAS12                         0x00e0
65 #define HMATRIX2_PRBS12                         0x00e4
66 #define HMATRIX2_PRAS13                         0x00e8
67 #define HMATRIX2_PRBS13                         0x00ec
68 #define HMATRIX2_PRAS14                         0x00f0
69 #define HMATRIX2_PRBS14                         0x00f4
70 #define HMATRIX2_PRAS15                         0x00f8
71 #define HMATRIX2_PRBS15                         0x00fc
72 #define HMATRIX2_MRCR                           0x0100
73 #define HMATRIX2_SFR0                           0x0110
74 #define HMATRIX2_SFR1                           0x0114
75 #define HMATRIX2_SFR2                           0x0118
76 #define HMATRIX2_SFR3                           0x011c
77 #define HMATRIX2_SFR4                           0x0120
78 #define HMATRIX2_SFR5                           0x0124
79 #define HMATRIX2_SFR6                           0x0128
80 #define HMATRIX2_SFR7                           0x012c
81 #define HMATRIX2_SFR8                           0x0130
82 #define HMATRIX2_SFR9                           0x0134
83 #define HMATRIX2_SFR10                          0x0138
84 #define HMATRIX2_SFR11                          0x013c
85 #define HMATRIX2_SFR12                          0x0140
86 #define HMATRIX2_SFR13                          0x0144
87 #define HMATRIX2_SFR14                          0x0148
88 #define HMATRIX2_SFR15                          0x014c
89 #define HMATRIX2_VERSION                        0x01fc
90
91 /* Bitfields in MCFG0 */
92 #define HMATRIX2_ULBT_OFFSET                    0
93 #define HMATRIX2_ULBT_SIZE                      3
94
95 /* Bitfields in SCFG0 */
96 #define HMATRIX2_SLOT_CYCLE_OFFSET              0
97 #define HMATRIX2_SLOT_CYCLE_SIZE                8
98 #define HMATRIX2_DEFMSTR_TYPE_OFFSET            16
99 #define HMATRIX2_DEFMSTR_TYPE_SIZE              2
100 #define HMATRIX2_FIXED_DEFMSTR_OFFSET           18
101 #define HMATRIX2_FIXED_DEFMSTR_SIZE             4
102 #define HMATRIX2_ARBT_OFFSET                    24
103 #define HMATRIX2_ARBT_SIZE                      2
104
105 /* Bitfields in PRAS0 */
106 #define HMATRIX2_M0PR_OFFSET                    0
107 #define HMATRIX2_M0PR_SIZE                      4
108 #define HMATRIX2_M1PR_OFFSET                    4
109 #define HMATRIX2_M1PR_SIZE                      4
110 #define HMATRIX2_M2PR_OFFSET                    8
111 #define HMATRIX2_M2PR_SIZE                      4
112 #define HMATRIX2_M3PR_OFFSET                    12
113 #define HMATRIX2_M3PR_SIZE                      4
114 #define HMATRIX2_M4PR_OFFSET                    16
115 #define HMATRIX2_M4PR_SIZE                      4
116 #define HMATRIX2_M5PR_OFFSET                    20
117 #define HMATRIX2_M5PR_SIZE                      4
118 #define HMATRIX2_M6PR_OFFSET                    24
119 #define HMATRIX2_M6PR_SIZE                      4
120 #define HMATRIX2_M7PR_OFFSET                    28
121 #define HMATRIX2_M7PR_SIZE                      4
122
123 /* Bitfields in PRBS0 */
124 #define HMATRIX2_M8PR_OFFSET                    0
125 #define HMATRIX2_M8PR_SIZE                      4
126 #define HMATRIX2_M9PR_OFFSET                    4
127 #define HMATRIX2_M9PR_SIZE                      4
128 #define HMATRIX2_M10PR_OFFSET                   8
129 #define HMATRIX2_M10PR_SIZE                     4
130 #define HMATRIX2_M11PR_OFFSET                   12
131 #define HMATRIX2_M11PR_SIZE                     4
132 #define HMATRIX2_M12PR_OFFSET                   16
133 #define HMATRIX2_M12PR_SIZE                     4
134 #define HMATRIX2_M13PR_OFFSET                   20
135 #define HMATRIX2_M13PR_SIZE                     4
136 #define HMATRIX2_M14PR_OFFSET                   24
137 #define HMATRIX2_M14PR_SIZE                     4
138 #define HMATRIX2_M15PR_OFFSET                   28
139 #define HMATRIX2_M15PR_SIZE                     4
140
141 /* Bitfields in MRCR */
142 #define HMATRIX2_RBC0_OFFSET                    0
143 #define HMATRIX2_RBC0_SIZE                      1
144 #define HMATRIX2_RBC1_OFFSET                    1
145 #define HMATRIX2_RBC1_SIZE                      1
146 #define HMATRIX2_RBC2_OFFSET                    2
147 #define HMATRIX2_RBC2_SIZE                      1
148 #define HMATRIX2_RBC3_OFFSET                    3
149 #define HMATRIX2_RBC3_SIZE                      1
150 #define HMATRIX2_RBC4_OFFSET                    4
151 #define HMATRIX2_RBC4_SIZE                      1
152 #define HMATRIX2_RBC5_OFFSET                    5
153 #define HMATRIX2_RBC5_SIZE                      1
154 #define HMATRIX2_RBC6_OFFSET                    6
155 #define HMATRIX2_RBC6_SIZE                      1
156 #define HMATRIX2_RBC7_OFFSET                    7
157 #define HMATRIX2_RBC7_SIZE                      1
158 #define HMATRIX2_RBC8_OFFSET                    8
159 #define HMATRIX2_RBC8_SIZE                      1
160 #define HMATRIX2_RBC9_OFFSET                    9
161 #define HMATRIX2_RBC9_SIZE                      1
162 #define HMATRIX2_RBC10_OFFSET                   10
163 #define HMATRIX2_RBC10_SIZE                     1
164 #define HMATRIX2_RBC11_OFFSET                   11
165 #define HMATRIX2_RBC11_SIZE                     1
166 #define HMATRIX2_RBC12_OFFSET                   12
167 #define HMATRIX2_RBC12_SIZE                     1
168 #define HMATRIX2_RBC13_OFFSET                   13
169 #define HMATRIX2_RBC13_SIZE                     1
170 #define HMATRIX2_RBC14_OFFSET                   14
171 #define HMATRIX2_RBC14_SIZE                     1
172 #define HMATRIX2_RBC15_OFFSET                   15
173 #define HMATRIX2_RBC15_SIZE                     1
174
175 /* Bitfields in SFR0 */
176 #define HMATRIX2_SFR_OFFSET                     0
177 #define HMATRIX2_SFR_SIZE                       32
178
179 /* Bitfields in SFR4 */
180 #define HMATRIX2_CS1A_OFFSET                    1
181 #define HMATRIX2_CS1A_SIZE                      1
182 #define HMATRIX2_CS3A_OFFSET                    3
183 #define HMATRIX2_CS3A_SIZE                      1
184 #define HMATRIX2_CS4A_OFFSET                    4
185 #define HMATRIX2_CS4A_SIZE                      1
186 #define HMATRIX2_CS5A_OFFSET                    5
187 #define HMATRIX2_CS5A_SIZE                      1
188 #define HMATRIX2_DBPUC_OFFSET                   8
189 #define HMATRIX2_DBPUC_SIZE                     1
190
191 /* Bitfields in VERSION */
192 #define HMATRIX2_VERSION_OFFSET                 0
193 #define HMATRIX2_VERSION_SIZE                   12
194 #define HMATRIX2_MFN_OFFSET                     16
195 #define HMATRIX2_MFN_SIZE                       3
196
197 /* Constants for ULBT */
198 #define HMATRIX2_ULBT_INFINITE                  0
199 #define HMATRIX2_ULBT_SINGLE                    1
200 #define HMATRIX2_ULBT_FOUR_BEAT                 2
201 #define HMATRIX2_ULBT_SIXTEEN_BEAT              4
202
203 /* Constants for DEFMSTR_TYPE */
204 #define HMATRIX2_DEFMSTR_TYPE_NO_DEFAULT        0
205 #define HMATRIX2_DEFMSTR_TYPE_LAST_DEFAULT      1
206 #define HMATRIX2_DEFMSTR_TYPE_FIXED_DEFAULT     2
207
208 /* Constants for ARBT */
209 #define HMATRIX2_ARBT_ROUND_ROBIN               0
210 #define HMATRIX2_ARBT_FIXED_PRIORITY            1
211
212 /* Bit manipulation macros */
213 #define HMATRIX2_BIT(name)                                      \
214         (1 << HMATRIX2_##name##_OFFSET)
215 #define HMATRIX2_BF(name,value)                                 \
216         (((value) & ((1 << HMATRIX2_##name##_SIZE) - 1))        \
217          << HMATRIX2_##name##_OFFSET)
218 #define HMATRIX2_BFEXT(name,value)                              \
219         (((value) >> HMATRIX2_##name##_OFFSET)                  \
220          & ((1 << HMATRIX2_##name##_SIZE) - 1))
221 #define HMATRIX2_BFINS(name,value,old)                          \
222         (((old) & ~(((1 << HMATRIX2_##name##_SIZE) - 1)         \
223                     << HMATRIX2_##name##_OFFSET))               \
224          | HMATRIX2_BF(name,value))
225
226 /* Register access macros */
227 #define hmatrix2_readl(reg)                                     \
228         readl((void *)HMATRIX_BASE + HMATRIX2_##reg)
229 #define hmatrix2_writel(reg,value)                              \
230         writel((value), (void *)HMATRIX_BASE + HMATRIX2_##reg)
231
232 #endif /* __ASM_AVR32_HMATRIX2_H__ */