source: azure_iot_hub_riscv/trunk/asp_baseplatform/target/k210_gcc/kendryte-k210.h@ 453

Last change on this file since 453 was 453, checked in by coas-nagasima, 4 years ago

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 99.2 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2005-2011 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 * Copyright (C) 2017-2019 by TOPPERS PROJECT Educational Working Group.
11 *
12 * 上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
13 * によって公表されている GNU General Public License の Version 2 に記
14 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
15 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
16 * 利用と呼ぶ)することを無償で許諾する.
17 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * スコード中に含まれていること.
20 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
22 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
23 * の無保証規定を掲載すること.
24 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
25 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
26 * と.
27 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
28 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
29 * (3) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
30 * 報告すること.
31 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
32 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
33 *
34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
36 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
37 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
38 *
39 * @(#) $Id$
40 */
41
42#ifndef _KENDRYTE_K210_H_
43#define _KENDRYTE_K210_H_
44
45#include <sil.h>
46#include "encoding.h"
47
48#define TMAX_INTNO 66
49#define TMAX_PRIORITY 8
50
51/*
52 * 割込み優先度設定のための定義
53 */
54#define TIRQ_NMI (-8) /* ノンマスカブル割込み */
55#define TIRQ_LEVEL7 (-7) /* 割込みレベル7 */
56#define TIRQ_LEVEL6 (-6) /* 割込みレベル6 */
57#define TIRQ_LEVEL5 (-5) /* 割込みレベル5 */
58#define TIRQ_LEVEL4 (-4) /* 割込みレベル4 */
59#define TIRQ_LEVEL3 (-3) /* 割込みレベル3 */
60#define TIRQ_LEVEL2 (-2) /* 割込みレベル2 */
61#define TIRQ_LEVEL1 (-1) /* 割込みレベル1 */
62
63/*
64 * MACHINE EXCEPTION NUMBER
65 */
66#define EXC_INSTRUCTION_ADDRESS_MISALIGNED 0
67#define EXC_INSTRUCTION_ADDRESS_FAULT 1
68#define EXC_ILLEGAL_INSTRUCTION 2
69#define EXC_BREAKPOINT 3
70#define EXC_LOAD_ADDRESS_MISALIGNED 4
71#define EXC_LOAD_ADDRESS_FAULT 5
72#define EXC_STORE_AMO_ADDRESS_MISALIGNED 6
73#define EXC_STORE_AMO_ACCESS_FAUT 7
74#define EXC_ENVIRONMENT_CALL_FROM_MMODE 11
75
76/*
77 * MACHINE INTERRUPT NUMBER
78 */
79#define IRQ_MACHINE_SOFTWARE 3
80#define IRQ_MACHIE_TIMER 7
81#define IRQ_MACHINE_EXTERNAL 11
82
83/*
84 * GLOBAL INTERRUPT NUMBER
85 */
86#define IRQ_VECTOR_RESERVED 0
87#define IRQ_VECTOR_SPI0 1 /* SPI0 interrupt */
88#define IRQ_VECTOR_SPI1 2 /* SPI1 interrupt */
89#define IRQ_VECTOR_SPI_SLAVE 3 /* SPI_SLAVE interrupt */
90#define IRQ_VECTOR_SPI3 4 /* SPI3 interrupt */
91#define IRQ_VECTOR_I2S0 5 /* I2S0 interrupt */
92#define IRQ_VECTOR_I2S1 6 /* I2S1 interrupt */
93#define IRQ_VECTOR_I2S2 7 /* I2S2 interrupt */
94#define IRQ_VECTOR_I2C0 8 /* I2C0 interrupt */
95#define IRQ_VECTOR_I2C1 9 /* I2C1 interrupt */
96#define IRQ_VECTOR_I2C2 10 /* I2C2 interrupt */
97#define IRQ_VECTOR_UART1 11 /* UART1 interrupt */
98#define IRQ_VECTOR_UART2 12 /* UART2 interrupt */
99#define IRQ_VECTOR_UART3 13 /* UART3 interrupt */
100#define IRQ_VECTOR_TIMER0A 14 /* TIMER0 channel 0 or 1 interrupt */
101#define IRQ_VECTOR_TIMER0B 15 /* TIMER0 channel 2 or 3 interrupt */
102#define IRQ_VECTOR_TIMER1A 16 /* TIMER1 channel 0 or 1 interrupt */
103#define IRQ_VECTOR_TIMER1B 17 /* TIMER1 channel 2 or 3 interrupt */
104#define IRQ_VECTOR_TIMER2A 18 /* TIMER2 channel 0 or 1 interrupt */
105#define IRQ_VECTOR_TIMER2B 19 /* TIMER2 channel 2 or 3 interrupt */
106#define IRQ_VECTOR_RTC 20 /* RTC tick and alarm interrupt */
107#define IRQ_VECTOR_WDT0 21 /* Watching dog timer0 interrupt */
108#define IRQ_VECTOR_WDT1 22 /* Watching dog timer1 interrupt */
109#define IRQ_VECTOR_APB_GPIO 23 /* APB GPIO interrupt */
110#define IRQ_VECTOR_DVP 24 /* Digital video port interrupt */
111#define IRQ_VECTOR_AI 25 /* AI accelerator interrupt */
112#define IRQ_VECTOR_FFT 26 /* FFT accelerator interrupt */
113#define IRQ_VECTOR_DMA0 27 /* DMA channel0 interrupt */
114#define IRQ_VECTOR_DMA1 28 /* DMA channel1 interrupt */
115#define IRQ_VECTOR_DMA2 29 /* DMA channel2 interrupt */
116#define IRQ_VECTOR_DMA3 30 /* DMA channel3 interrupt */
117#define IRQ_VECTOR_DMA4 31 /* DMA channel4 interrupt */
118#define IRQ_VECTOR_DMA5 32 /* DMA channel5 interrupt */
119#define IRQ_VECTOR_UARTHS 33 /* Hi-speed UART0 interrupt */
120#define IRQ_VECTOR_GPIOHS0 34 /* Hi-speed GPIO0 interrupt */
121#define IRQ_VECTOR_GPIOHS1 35 /* Hi-speed GPIO1 interrupt */
122#define IRQ_VECTOR_GPIOHS2 36 /* Hi-speed GPIO2 interrupt */
123#define IRQ_VECTOR_GPIOHS3 37 /* Hi-speed GPIO3 interrupt */
124#define IRQ_VECTOR_GPIOHS4 38 /* Hi-speed GPIO4 interrupt */
125#define IRQ_VECTOR_GPIOHS5 39 /* Hi-speed GPIO5 interrupt */
126#define IRQ_VECTOR_GPIOHS6 40 /* Hi-speed GPIO6 interrupt */
127#define IRQ_VECTOR_GPIOHS7 41 /* Hi-speed GPIO7 interrupt */
128#define IRQ_VECTOR_GPIOHS8 42 /* Hi-speed GPIO8 interrupt */
129#define IRQ_VECTOR_GPIOHS9 43 /* Hi-speed GPIO9 interrupt */
130#define IRQ_VECTOR_GPIOHS10 44 /* Hi-speed GPIO10 interrupt */
131#define IRQ_VECTOR_GPIOHS11 45 /* Hi-speed GPIO11 interrupt */
132#define IRQ_VECTOR_GPIOHS12 46 /* Hi-speed GPIO12 interrupt */
133#define IRQ_VECTOR_GPIOHS13 47 /* Hi-speed GPIO13 interrupt */
134#define IRQ_VECTOR_GPIOHS14 48 /* Hi-speed GPIO14 interrupt */
135#define IRQ_VECTOR_GPIOHS15 49 /* Hi-speed GPIO15 interrupt */
136#define IRQ_VECTOR_GPIOHS16 50 /* Hi-speed GPIO16 interrupt */
137#define IRQ_VECTOR_GPIOHS17 51 /* Hi-speed GPIO17 interrupt */
138#define IRQ_VECTOR_GPIOHS18 52 /* Hi-speed GPIO18 interrupt */
139#define IRQ_VECTOR_GPIOHS19 53 /* Hi-speed GPIO19 interrupt */
140#define IRQ_VECTOR_GPIOHS20 54 /* Hi-speed GPIO20 interrupt */
141#define IRQ_VECTOR_GPIOHS21 55 /* Hi-speed GPIO21 interrupt */
142#define IRQ_VECTOR_GPIOHS22 56 /* Hi-speed GPIO22 interrupt */
143#define IRQ_VECTOR_GPIOHS23 57 /* Hi-speed GPIO23 interrupt */
144#define IRQ_VECTOR_GPIOHS24 58 /* Hi-speed GPIO24 interrupt */
145#define IRQ_VECTOR_GPIOHS25 59 /* Hi-speed GPIO25 interrupt */
146#define IRQ_VECTOR_GPIOHS26 60 /* Hi-speed GPIO26 interrupt */
147#define IRQ_VECTOR_GPIOHS27 61 /* Hi-speed GPIO27 interrupt */
148#define IRQ_VECTOR_GPIOHS28 62 /* Hi-speed GPIO28 interrupt */
149#define IRQ_VECTOR_GPIOHS29 63 /* Hi-speed GPIO29 interrupt */
150#define IRQ_VECTOR_GPIOHS30 64 /* Hi-speed GPIO30 interrupt */
151#define IRQ_VECTOR_GPIOHS31 65 /* Hi-speed GPIO31 interrupt */
152
153
154/*
155 * FPIOAファンクション定義
156 */
157#define FUNC_JTAG_TCLK 0 /* JTAG Test Clock */
158#define FUNC_JTAG_TDI 1 /* JTAG Test Data In */
159#define FUNC_JTAG_TMS 2 /* JTAG Test Mode Select */
160#define FUNC_JTAG_TDO 3 /* JTAG Test Data Out */
161#define FUNC_SPI0_D0 4 /* SPI0 Data 0 */
162#define FUNC_SPI0_D1 5 /* SPI0 Data 1 */
163#define FUNC_SPI0_D2 6 /* SPI0 Data 2 */
164#define FUNC_SPI0_D3 7 /* SPI0 Data 3 */
165#define FUNC_SPI0_D4 8 /* SPI0 Data 4 */
166#define FUNC_SPI0_D5 9 /* SPI0 Data 5 */
167#define FUNC_SPI0_D6 10 /* SPI0 Data 6 */
168#define FUNC_SPI0_D7 11 /* SPI0 Data 7 */
169#define FUNC_SPI0_SS0 12 /* SPI0 Chip Select 0 */
170#define FUNC_SPI0_SS1 13 /* SPI0 Chip Select 1 */
171#define FUNC_SPI0_SS2 14 /* SPI0 Chip Select 2 */
172#define FUNC_SPI0_SS3 15 /* SPI0 Chip Select 3 */
173#define FUNC_SPI0_ARB 16 /* SPI0 Arbitration */
174#define FUNC_SPI0_SCLK 17 /* SPI0 Serial Clock */
175#define FUNC_UARTHS_RX 18 /* UART High speed Receiver */
176#define FUNC_UARTHS_TX 19 /* UART High speed Transmitter */
177#define FUNC_RESV6 20 /* Reserved function */
178#define FUNC_RESV7 21 /* Reserved function */
179#define FUNC_CLK_SPI1 22 /* Clock SPI1 */
180#define FUNC_CLK_I2C1 23 /* Clock I2C1 */
181#define FUNC_GPIOHS0 24 /* GPIO High speed 0 */
182#define FUNC_GPIOHS1 25 /* GPIO High speed 1 */
183#define FUNC_GPIOHS2 26 /* GPIO High speed 2 */
184#define FUNC_GPIOHS3 27 /* GPIO High speed 3 */
185#define FUNC_GPIOHS4 28 /* GPIO High speed 4 */
186#define FUNC_GPIOHS5 29 /* GPIO High speed 5 */
187#define FUNC_GPIOHS6 30 /* GPIO High speed 6 */
188#define FUNC_GPIOHS7 31 /* GPIO High speed 7 */
189#define FUNC_GPIOHS8 32 /* GPIO High speed 8 */
190#define FUNC_GPIOHS9 33 /* GPIO High speed 9 */
191#define FUNC_GPIOHS10 34 /* GPIO High speed 10 */
192#define FUNC_GPIOHS11 35 /* GPIO High speed 11 */
193#define FUNC_GPIOHS12 36 /* GPIO High speed 12 */
194#define FUNC_GPIOHS13 37 /* GPIO High speed 13 */
195#define FUNC_GPIOHS14 38 /* GPIO High speed 14 */
196#define FUNC_GPIOHS15 39 /* GPIO High speed 15 */
197#define FUNC_GPIOHS16 40 /* GPIO High speed 16 */
198#define FUNC_GPIOHS17 41 /* GPIO High speed 17 */
199#define FUNC_GPIOHS18 42 /* GPIO High speed 18 */
200#define FUNC_GPIOHS19 43 /* GPIO High speed 19 */
201#define FUNC_GPIOHS20 44 /* GPIO High speed 20 */
202#define FUNC_GPIOHS21 45 /* GPIO High speed 21 */
203#define FUNC_GPIOHS22 46 /* GPIO High speed 22 */
204#define FUNC_GPIOHS23 47 /* GPIO High speed 23 */
205#define FUNC_GPIOHS24 48 /* GPIO High speed 24 */
206#define FUNC_GPIOHS25 49 /* GPIO High speed 25 */
207#define FUNC_GPIOHS26 50 /* GPIO High speed 26 */
208#define FUNC_GPIOHS27 51 /* GPIO High speed 27 */
209#define FUNC_GPIOHS28 52 /* GPIO High speed 28 */
210#define FUNC_GPIOHS29 53 /* GPIO High speed 29 */
211#define FUNC_GPIOHS30 54 /* GPIO High speed 30 */
212#define FUNC_GPIOHS31 55 /* GPIO High speed 31 */
213#define FUNC_GPIO0 56 /* GPIO pin 0 */
214#define FUNC_GPIO1 57 /* GPIO pin 1 */
215#define FUNC_GPIO2 58 /* GPIO pin 2 */
216#define FUNC_GPIO3 59 /* GPIO pin 3 */
217#define FUNC_GPIO4 60 /* GPIO pin 4 */
218#define FUNC_GPIO5 61 /* GPIO pin 5 */
219#define FUNC_GPIO6 62 /* GPIO pin 6 */
220#define FUNC_GPIO7 63 /* GPIO pin 7 */
221#define FUNC_UART1_RX 64 /* UART1 Receiver */
222#define FUNC_UART1_TX 65 /* UART1 Transmitter */
223#define FUNC_UART2_RX 66 /* UART2 Receiver */
224#define FUNC_UART2_TX 67 /* UART2 Transmitter */
225#define FUNC_UART3_RX 68 /* UART3 Receiver */
226#define FUNC_UART3_TX 69 /* UART3 Transmitter */
227#define FUNC_SPI1_D0 70 /* SPI1 Data 0 */
228#define FUNC_SPI1_D1 71 /* SPI1 Data 1 */
229#define FUNC_SPI1_D2 72 /* SPI1 Data 2 */
230#define FUNC_SPI1_D3 73 /* SPI1 Data 3 */
231#define FUNC_SPI1_D4 74 /* SPI1 Data 4 */
232#define FUNC_SPI1_D5 75 /* SPI1 Data 5 */
233#define FUNC_SPI1_D6 76 /* SPI1 Data 6 */
234#define FUNC_SPI1_D7 77 /* SPI1 Data 7 */
235#define FUNC_SPI1_SS0 78 /* SPI1 Chip Select 0 */
236#define FUNC_SPI1_SS1 79 /* SPI1 Chip Select 1 */
237#define FUNC_SPI1_SS2 80 /* SPI1 Chip Select 2 */
238#define FUNC_SPI1_SS3 81 /* SPI1 Chip Select 3 */
239#define FUNC_SPI1_ARB 82 /* SPI1 Arbitration */
240#define FUNC_SPI1_SCLK 83 /* SPI1 Serial Clock */
241#define FUNC_SPI_SLAVE_D0 84 /* SPI Slave Data 0 */
242#define FUNC_SPI_SLAVE_SS 85 /* SPI Slave Select */
243#define FUNC_SPI_SLAVE_SCLK 86 /* SPI Slave Serial Clock */
244#define FUNC_I2S0_MCLK 87 /* I2S0 Master Clock */
245#define FUNC_I2S0_SCLK 88 /* I2S0 Serial Clock(BCLK) */
246#define FUNC_I2S0_WS 89 /* I2S0 Word Select(LRCLK) */
247#define FUNC_I2S0_IN_D0 90 /* I2S0 Serial Data Input 0 */
248#define FUNC_I2S0_IN_D1 91 /* I2S0 Serial Data Input 1 */
249#define FUNC_I2S0_IN_D2 92 /* I2S0 Serial Data Input 2 */
250#define FUNC_I2S0_IN_D3 93 /* I2S0 Serial Data Input 3 */
251#define FUNC_I2S0_OUT_D0 94 /* I2S0 Serial Data Output 0 */
252#define FUNC_I2S0_OUT_D1 95 /* I2S0 Serial Data Output 1 */
253#define FUNC_I2S0_OUT_D2 96 /* I2S0 Serial Data Output 2 */
254#define FUNC_I2S0_OUT_D3 97 /* I2S0 Serial Data Output 3 */
255#define FUNC_I2S1_MCLK 98 /* I2S1 Master Clock */
256#define FUNC_I2S1_SCLK 99 /* I2S1 Serial Clock(BCLK) */
257#define FUNC_I2S1_WS 100 /* I2S1 Word Select(LRCLK) */
258#define FUNC_I2S1_IN_D0 101 /* I2S1 Serial Data Input 0 */
259#define FUNC_I2S1_IN_D1 102 /* I2S1 Serial Data Input 1 */
260#define FUNC_I2S1_IN_D2 103 /* I2S1 Serial Data Input 2 */
261#define FUNC_I2S1_IN_D3 104 /* I2S1 Serial Data Input 3 */
262#define FUNC_I2S1_OUT_D0 105 /* I2S1 Serial Data Output 0 */
263#define FUNC_I2S1_OUT_D1 106 /* I2S1 Serial Data Output 1 */
264#define FUNC_I2S1_OUT_D2 107 /* I2S1 Serial Data Output 2 */
265#define FUNC_I2S1_OUT_D3 108 /* I2S1 Serial Data Output 3 */
266#define FUNC_I2S2_MCLK 109 /* I2S2 Master Clock */
267#define FUNC_I2S2_SCLK 110 /* I2S2 Serial Clock(BCLK) */
268#define FUNC_I2S2_WS 111 /* I2S2 Word Select(LRCLK) */
269#define FUNC_I2S2_IN_D0 112 /* I2S2 Serial Data Input 0 */
270#define FUNC_I2S2_IN_D1 113 /* I2S2 Serial Data Input 1 */
271#define FUNC_I2S2_IN_D2 114 /* I2S2 Serial Data Input 2 */
272#define FUNC_I2S2_IN_D3 115 /* I2S2 Serial Data Input 3 */
273#define FUNC_I2S2_OUT_D0 116 /* I2S2 Serial Data Output 0 */
274#define FUNC_I2S2_OUT_D1 117 /* I2S2 Serial Data Output 1 */
275#define FUNC_I2S2_OUT_D2 118 /* I2S2 Serial Data Output 2 */
276#define FUNC_I2S2_OUT_D3 119 /* I2S2 Serial Data Output 3 */
277#define FUNC_RESV0 120 /* Reserved function */
278#define FUNC_RESV1 121 /* Reserved function */
279#define FUNC_RESV2 122 /* Reserved function */
280#define FUNC_RESV3 123 /* Reserved function */
281#define FUNC_RESV4 124 /* Reserved function */
282#define FUNC_RESV5 125 /* Reserved function */
283#define FUNC_I2C0_SCLK 126 /* I2C0 Serial Clock */
284#define FUNC_I2C0_SDA 127 /* I2C0 Serial Data */
285#define FUNC_I2C1_SCLK 128 /* I2C1 Serial Clock */
286#define FUNC_I2C1_SDA 129 /* I2C1 Serial Data */
287#define FUNC_I2C2_SCLK 130 /* I2C2 Serial Clock */
288#define FUNC_I2C2_SDA 131 /* I2C2 Serial Data */
289#define FUNC_CMOS_XCLK 132 /* DVP System Clock */
290#define FUNC_CMOS_RST 133 /* DVP System Reset */
291#define FUNC_CMOS_PWDN 134 /* DVP Power Down Mode */
292#define FUNC_CMOS_VSYNC 135 /* DVP Vertical Sync */
293#define FUNC_CMOS_HREF 136 /* DVP Horizontal Reference output */
294#define FUNC_CMOS_PCLK 137 /* Pixel Clock */
295#define FUNC_CMOS_D0 138 /* Data Bit 0 */
296#define FUNC_CMOS_D1 139 /* Data Bit 1 */
297#define FUNC_CMOS_D2 140 /* Data Bit 2 */
298#define FUNC_CMOS_D3 141 /* Data Bit 3 */
299#define FUNC_CMOS_D4 142 /* Data Bit 4 */
300#define FUNC_CMOS_D5 143 /* Data Bit 5 */
301#define FUNC_CMOS_D6 144 /* Data Bit 6 */
302#define FUNC_CMOS_D7 145 /* Data Bit 7 */
303#define FUNC_SCCB_SCLK 146 /* SCCB Serial Clock */
304#define FUNC_SCCB_SDA 147 /* SCCB Serial Data */
305#define FUNC_UART1_CTS 148 /* UART1 Clear To Send */
306#define FUNC_UART1_DSR 149 /* UART1 Data Set Ready */
307#define FUNC_UART1_DCD 150 /* UART1 Data Carrier Detect */
308#define FUNC_UART1_RI 151 /* UART1 Ring Indicator */
309#define FUNC_UART1_SIR_IN 152 /* UART1 Serial Infrared Input */
310#define FUNC_UART1_DTR 153 /* UART1 Data Terminal Ready */
311#define FUNC_UART1_RTS 154 /* UART1 Request To Send */
312#define FUNC_UART1_OUT2 155 /* UART1 User-designated Output 2 */
313#define FUNC_UART1_OUT1 156 /* UART1 User-designated Output 1 */
314#define FUNC_UART1_SIR_OUT 157 /* UART1 Serial Infrared Output */
315#define FUNC_UART1_BAUD 158 /* UART1 Transmit Clock Output */
316#define FUNC_UART1_RE 159 /* UART1 Receiver Output Enable */
317#define FUNC_UART1_DE 160 /* UART1 Driver Output Enable */
318#define FUNC_UART1_RS485_EN 161 /* UART1 RS485 Enable */
319#define FUNC_UART2_CTS 162 /* UART2 Clear To Send */
320#define FUNC_UART2_DSR 163 /* UART2 Data Set Ready */
321#define FUNC_UART2_DCD 164 /* UART2 Data Carrier Detect */
322#define FUNC_UART2_RI 165 /* UART2 Ring Indicator */
323#define FUNC_UART2_SIR_IN 166 /* UART2 Serial Infrared Input */
324#define FUNC_UART2_DTR 167 /* UART2 Data Terminal Ready */
325#define FUNC_UART2_RTS 168 /* UART2 Request To Send */
326#define FUNC_UART2_OUT2 169 /* UART2 User-designated Output 2 */
327#define FUNC_UART2_OUT1 170 /* UART2 User-designated Output 1 */
328#define FUNC_UART2_SIR_OUT 171 /* UART2 Serial Infrared Output */
329#define FUNC_UART2_BAUD 172 /* UART2 Transmit Clock Output */
330#define FUNC_UART2_RE 173 /* UART2 Receiver Output Enable */
331#define FUNC_UART2_DE 174 /* UART2 Driver Output Enable */
332#define FUNC_UART2_RS485_EN 175 /* UART2 RS485 Enable */
333#define FUNC_UART3_CTS 176 /* UART3 Clear To Send */
334#define FUNC_UART3_DSR 177 /* UART3 Data Set Ready */
335#define FUNC_UART3_DCD 178 /* UART3 Data Carrier Detect */
336#define FUNC_UART3_RI 179 /* UART3 Ring Indicator */
337#define FUNC_UART3_SIR_IN 180 /* UART3 Serial Infrared Input */
338#define FUNC_UART3_DTR 181 /* UART3 Data Terminal Ready */
339#define FUNC_UART3_RTS 182 /* UART3 Request To Send */
340#define FUNC_UART3_OUT2 183 /* UART3 User-designated Output 2 */
341#define FUNC_UART3_OUT1 184 /* UART3 User-designated Output 1 */
342#define FUNC_UART3_SIR_OUT 185 /* UART3 Serial Infrared Output */
343#define FUNC_UART3_BAUD 186 /* UART3 Transmit Clock Output */
344#define FUNC_UART3_RE 187 /* UART3 Receiver Output Enable */
345#define FUNC_UART3_DE 188 /* UART3 Driver Output Enable */
346#define FUNC_UART3_RS485_EN 189 /* UART3 RS485 Enable */
347#define FUNC_TIMER0_TOGGLE1 190 /* TIMER0 Toggle Output 1 */
348#define FUNC_TIMER0_TOGGLE2 191 /* TIMER0 Toggle Output 2 */
349#define FUNC_TIMER0_TOGGLE3 192 /* TIMER0 Toggle Output 3 */
350#define FUNC_TIMER0_TOGGLE4 193 /* TIMER0 Toggle Output 4 */
351#define FUNC_TIMER1_TOGGLE1 194 /* TIMER1 Toggle Output 1 */
352#define FUNC_TIMER1_TOGGLE2 195 /* TIMER1 Toggle Output 2 */
353#define FUNC_TIMER1_TOGGLE3 196 /* TIMER1 Toggle Output 3 */
354#define FUNC_TIMER1_TOGGLE4 197 /* TIMER1 Toggle Output 4 */
355#define FUNC_TIMER2_TOGGLE1 198 /* TIMER2 Toggle Output 1 */
356#define FUNC_TIMER2_TOGGLE2 199 /* TIMER2 Toggle Output 2 */
357#define FUNC_TIMER2_TOGGLE3 200 /* TIMER2 Toggle Output 3 */
358#define FUNC_TIMER2_TOGGLE4 201 /* TIMER2 Toggle Output 4 */
359#define FUNC_CLK_SPI2 202 /* Clock SPI2 */
360#define FUNC_CLK_I2C2 203 /* Clock I2C2 */
361#define FUNC_INTERNAL0 204 /* Internal function signal 0 */
362#define FUNC_INTERNAL1 205 /* Internal function signal 1 */
363#define FUNC_INTERNAL2 206 /* Internal function signal 2 */
364#define FUNC_INTERNAL3 207 /* Internal function signal 3 */
365#define FUNC_INTERNAL4 208 /* Internal function signal 4 */
366#define FUNC_INTERNAL5 209 /* Internal function signal 5 */
367#define FUNC_INTERNAL6 210 /* Internal function signal 6 */
368#define FUNC_INTERNAL7 211 /* Internal function signal 7 */
369#define FUNC_INTERNAL8 212 /* Internal function signal 8 */
370#define FUNC_INTERNAL9 213 /* Internal function signal 9 */
371#define FUNC_INTERNAL10 214 /* Internal function signal 10 */
372#define FUNC_INTERNAL11 215 /* Internal function signal 11 */
373#define FUNC_INTERNAL12 216 /* Internal function signal 12 */
374#define FUNC_INTERNAL13 217 /* Internal function signal 13 */
375#define FUNC_INTERNAL14 218 /* Internal function signal 14 */
376#define FUNC_INTERNAL15 219 /* Internal function signal 15 */
377#define FUNC_INTERNAL16 220 /* Internal function signal 16 */
378#define FUNC_INTERNAL17 221 /* Internal function signal 17 */
379#define FUNC_CONSTANT 222 /* Constant function */
380#define FUNC_INTERNAL18 223 /* Internal function signal 18 */
381#define FUNC_DEBUG0 224 /* Debug function 0 */
382#define FUNC_DEBUG1 225 /* Debug function 1 */
383#define FUNC_DEBUG2 226 /* Debug function 2 */
384#define FUNC_DEBUG3 227 /* Debug function 3 */
385#define FUNC_DEBUG4 228 /* Debug function 4 */
386#define FUNC_DEBUG5 229 /* Debug function 5 */
387#define FUNC_DEBUG6 230 /* Debug function 6 */
388#define FUNC_DEBUG7 231 /* Debug function 7 */
389#define FUNC_DEBUG8 232 /* Debug function 8 */
390#define FUNC_DEBUG9 233 /* Debug function 9 */
391#define FUNC_DEBUG10 234 /* Debug function 10 */
392#define FUNC_DEBUG11 235 /* Debug function 11 */
393#define FUNC_DEBUG12 236 /* Debug function 12 */
394#define FUNC_DEBUG13 237 /* Debug function 13 */
395#define FUNC_DEBUG14 238 /* Debug function 14 */
396#define FUNC_DEBUG15 239 /* Debug function 15 */
397#define FUNC_DEBUG16 240 /* Debug function 16 */
398#define FUNC_DEBUG17 241 /* Debug function 17 */
399#define FUNC_DEBUG18 242 /* Debug function 18 */
400#define FUNC_DEBUG19 243 /* Debug function 19 */
401#define FUNC_DEBUG20 244 /* Debug function 20 */
402#define FUNC_DEBUG21 245 /* Debug function 21 */
403#define FUNC_DEBUG22 246 /* Debug function 22 */
404#define FUNC_DEBUG23 247 /* Debug function 23 */
405#define FUNC_DEBUG24 248 /* Debug function 24 */
406#define FUNC_DEBUG25 249 /* Debug function 25 */
407#define FUNC_DEBUG26 250 /* Debug function 26 */
408#define FUNC_DEBUG27 251 /* Debug function 27 */
409#define FUNC_DEBUG28 252 /* Debug function 28 */
410#define FUNC_DEBUG29 253 /* Debug function 29 */
411#define FUNC_DEBUG30 254 /* Debug function 30 */
412#define FUNC_DEBUG31 255 /* Debug function 31 */
413#define FUNC_MAX 256 /* Function numbers */
414
415
416#define CLINT_BASE_ADDR 0x02000000UL
417#define PLIC_BASE_ADDR 0x0C000000UL
418
419/* Under TileLink */
420#define UARTHS_BASE_ADDR 0x38000000UL
421#define GPIOHS_BASE_ADDR 0x38001000UL
422
423/* Under AXI 64 bit */
424#define RAM_BASE_ADDR 0x80000000UL
425#define RAM_SIZE (6 * 1024 * 1024U)
426#define AI_RAM_BASE_ADDR (RAM_BASE_ADDR + RAM_SIZE)
427#define AI_RAM_SIZE (2 * 1024 * 1024U)
428
429#define IO_BASE_ADDR 0x40000000UL
430#define IO_SIZE (6 * 1024 * 1024U)
431#define AI_IO_BASE_ADDR (IO_BASE_ADDR + IO_SIZE)
432#define AI_IO_SIZE (2 * 1024 * 1024U)
433#define AI_BASE_ADDR (AI_IO_BASE_ADDR + AI_IO_SIZE)
434#define AI_SIZE (12 * 1024 * 1024U)
435
436#define FFT_BASE_ADDR 0x42000000UL
437#define FFT_SIZE (4 * 1024 * 1024U)
438
439#define ROM_BASE_ADDR 0x88000000UL
440#define ROM_SIZE (128 * 1024U)
441
442/* Under AHB 32 bit */
443#define DMAC_BASE_ADDR 0x50000000UL
444
445/* Under APB1 32 bit */
446#define GPIO_BASE_ADDR 0x50200000UL
447#define UART1_BASE_ADDR 0x50210000UL
448#define SPI_SLAVE_BASE_ADDR 0x50240000UL
449#define I2S0_BASE_ADDR 0x50250000UL
450#define I2S1_BASE_ADDR 0x50260000UL
451#define I2S2_BASE_ADDR 0x50270000UL
452#define I2C0_BASE_ADDR 0x50280000UL
453#define I2C1_BASE_ADDR 0x50290000UL
454#define I2C2_BASE_ADDR 0x502A0000UL
455#define FPIOA_BASE_ADDR 0x502B0000UL
456#define SHA256_BASE_ADDR 0x502C0000UL
457#define TIMER0_BASE_ADDR 0x502D0000UL
458#define TIMER1_BASE_ADDR 0x502E0000UL
459#define TIMER2_BASE_ADDR 0x502F0000UL
460
461/* Under APB2 32 bit */
462#define WDT0_BASE_ADDR 0x50400000UL
463#define WDT1_BASE_ADDR 0x50410000UL
464#define OTP_BASE_ADDR 0x50420000UL
465#define DVP_BASE_ADDR 0x50430000UL
466#define SYSCTL_BASE_ADDR 0x50440000UL
467#define AES_BASE_ADDR 0x50450000UL
468#define RTC_BASE_ADDR 0x50460000UL
469
470
471/* Under APB3 32 bit */
472#define SPI0_BASE_ADDR 0x52000000UL
473#define SPI1_BASE_ADDR 0x53000000UL
474#define SPI3_BASE_ADDR 0x54000000UL
475
476
477/*
478 * CLINT (64bits registers)
479 */
480#define TADR_CLIC_BASE (CLINT_BASE_ADDR)
481#define TOFF_CLINT_MSIP 0x0000 /* (RW) MSIP Registers 4bytes */
482 #define CLINT_MSOFTIP 0x000000001 /* Machine-mode software interrupt */
483#define TOFF_CLINT_MTIMECMP 0x4000 /* (RW) Timer compare Registers Machine-mode timer interrupts 8bytes */
484#define TOFF_CLINT_MTIME 0xBFF8 /* (R) Timer Registers 8bytes */
485
486#define CLINT_MAX_CORES (4095)
487
488
489/*
490 * PLIC
491 */
492#define TADR_PLIC_BASE (PLIC_BASE_ADDR)
493#define TOFF_PLIC_PRIORITY 0x00000000
494#define TOFF_PLIC_PENDING 0x00001000
495#define TOFF_PLIC_ENABLE 0x00002000
496#define NUM_PLIC_ENABLE 1024
497#define TOFF_PLIC_THRESHOLD 0x00200000
498#define NUM_PLIC_THRESHOLD 4096
499#define TOFF_PLIC_CLAIM 0x00200004
500
501
502/*
503 * DMAC (64bits registers)
504 */
505#define TADR_DMAC_BASE (DMAC_BASE_ADDR)
506#define TOFF_DMAC_ID 0x0000 /* (R) DMAC ID Rgister */
507#define TOFF_DMAC_COMPVER 0x0008 /* (R) DMAC COMPVER Register */
508#define TOFF_DMAC_CFG 0x0010 /* (RW) DMAC Configure Register */
509 #define DMAC_CFG_DMAC_EN 0x00000001L /* enable dmac(dmac_en) */
510 #define DMAC_CFG_INT_EN 0x00000002L /* glabally enable interrupt generation(int_en) */
511#define TOFF_DMAC_CHEN 0x0018 /* (RW) Channel Enable Register */
512 #define DMAC_CHEN_CH1_EN 0x0000000000000001 /* enable channel 1(ch1_en) */
513 #define DMAC_CHEN_CH2_EN 0x0000000000000002 /* enable channel 2(ch2_en) */
514 #define DMAC_CHEN_CH3_EN 0x0000000000000004 /* enable channel 3(ch3_en) */
515 #define DMAC_CHEN_CH4_EN 0x0000000000000008 /* enable channel 4(ch4_en) */
516 #define DMAC_CHEN_CH5_EN 0x0000000000000010 /* enable channel 5(ch5_en) */
517 #define DMAC_CHEN_CH6_EN 0x0000000000000020 /* enable channel 6(ch6_en) */
518 #define DMAC_CHEN_CH1_EN_WE 0x0000000000000100 /* write enable bit channel 1(ch1_en_we) */
519 #define DMAC_CHEN_CH2_EN_WE 0x0000000000000200 /* write enable bit channel 2(ch2_en_we) */
520 #define DMAC_CHEN_CH3_EN_WE 0x0000000000000400 /* write enable bit channel 3(ch3_en_we) */
521 #define DMAC_CHEN_CH4_EN_WE 0x0000000000000800 /* write enable bit channel 4(ch4_en_we) */
522 #define DMAC_CHEN_CH5_EN_WE 0x0000000000001000 /* write enable bit channel 5(ch5_en_we) */
523 #define DMAC_CHEN_CH6_EN_WE 0x0000000000002000 /* write enable bit channel 6(ch6_en_we) */
524 #define DMAC_CHEN_CH1_SUSP 0x0000000000010000 /* susped reuest channel 1(ch1_susp) */
525 #define DMAC_CHEN_CH2_SUSP 0x0000000000020000 /* susped reuest channel 2(ch2_susp) */
526 #define DMAC_CHEN_CH3_SUSP 0x0000000000040000 /* susped reuest channel 3(ch3_susp) */
527 #define DMAC_CHEN_CH4_SUSP 0x0000000000080000 /* susped reuest channel 4(ch4_susp) */
528 #define DMAC_CHEN_CH5_SUSP 0x0000000000100000 /* susped reuest channel 5(ch5_susp) */
529 #define DMAC_CHEN_CH6_SUSP 0x0000000000200000 /* susped reuest channel 6(ch6_susp) */
530 #define DMAC_CHEN_CH1_SUSP_WE 0x0000000001000000 /* swrite enable to the channel 1 suspend(ch1_susp_we) */
531 #define DMAC_CHEN_CH2_SUSP_WE 0x0000000002000000 /* swrite enable to the channel 2 suspend(ch2_susp_we) */
532 #define DMAC_CHEN_CH3_SUSP_WE 0x0000000004000000 /* swrite enable to the channel 3 suspend(ch3_susp_we) */
533 #define DMAC_CHEN_CH4_SUSP_WE 0x0000000008000000 /* swrite enable to the channel 4 suspend(ch4_susp_we) */
534 #define DMAC_CHEN_CH5_SUSP_WE 0x0000000010000000 /* swrite enable to the channel 5 suspend(ch5_susp_we) */
535 #define DMAC_CHEN_CH6_SUSP_WE 0x0000000020000000 /* swrite enable to the channel 6 suspend(ch6_susp_we) */
536 #define DMAC_CHEN_CH1_ABOUT 0x0000000100000000 /* channel-1 abort requst bit(ch1_abort) */
537 #define DMAC_CHEN_CH2_ABOUT 0x0000000200000000 /* channel-2 abort requst bit(ch2_abort) */
538 #define DMAC_CHEN_CH3_ABOUT 0x0000000400000000 /* channel-3 abort requst bit(ch3_abort) */
539 #define DMAC_CHEN_CH4_ABOUT 0x0000000800000000 /* channel-4 abort requst bit(ch4_abort) */
540 #define DMAC_CHEN_CH5_ABOUT 0x0000001000000000 /* channel-5 abort requst bit(ch5_abort) */
541 #define DMAC_CHEN_CH6_ABOUT 0x0000002000000000 /* channel-6 abort requst bit(ch6_abort) */
542 #define DMAC_CHEN_CH1_ABOUT_WE 0x0000010000000000 /* write enable channel-1 abort bit(ch1_abort_we) */
543 #define DMAC_CHEN_CH2_ABOUT_WE 0x0000020000000000 /* write enable channel-2 abort bit(ch2_abort_we) */
544 #define DMAC_CHEN_CH3_ABOUT_WE 0x0000040000000000 /* write enable channel-3 abort bit(ch3_abort_we) */
545 #define DMAC_CHEN_CH4_ABOUT_WE 0x0000080000000000 /* write enable channel-4 abort bit(ch4_abort_we) */
546 #define DMAC_CHEN_CH5_ABOUT_WE 0x0000100000000000 /* write enable channel-5 abort bit(ch5_abort_we) */
547 #define DMAC_CHEN_CH6_ABOUT_WE 0x0000200000000000 /* write enable channel-6 abort bit(ch6_abort_we) */
548#define TOFF_DMAC_INTSTATUS 0x0030 /* (RW) DMAC Interrupt Status Register */
549 #define DMAC_INTSTATUS_CH1 0x00000001L /* channel 1 interrupt bit(ch1_intstat) */
550 #define DMAC_INTSTATUS_CH2 0x00000002L /* channel 2 interrupt bit(ch2_intstat) */
551 #define DMAC_INTSTATUS_CH3 0x00000004L /* channel 3 interrupt bit(ch3_intstat) */
552 #define DMAC_INTSTATUS_CH4 0x00000008L /* channel 4 interrupt bit(ch4_intstat) */
553 #define DMAC_INTSTATUS_CH5 0x00000010L /* channel 5 interrupt bit(ch5_intstat) */
554 #define DMAC_INTSTATUS_CH6 0x00000020L /* channel 6 interrupt bit(ch6_intstat) */
555#define TOFF_DMAC_COM_INTCLEAR 0x0038 /* (RW) DMAC Common register Interrupt Status Register */
556 #define DMAC_COM_INTCLEAR_SLVIF_DEC_ERR 0x00000001L /* Slave Interface Common Register Decode Error Interrupt Status clear(clear_slvif_dec_err_intstat) */
557 #define DMAC_COM_INTCLEAR_SLVIF_WR2RO_ERR 0x00000002L /* Slave Interface Common Register Write to Read only Error Interrupt Status clear(clear_slvif_wr2ro_err_intstat) */
558 #define DMAC_COM_INTCLEAR_SLVIF_RD2WO_ERR 0x00000004L /* Slave Interface Common Register Read to Write only Error Interrupt Status clear(clear_slvif_rd2wo_err_intstat) */
559 #define DMAC_COM_INTCLEAR_SLVIF_WRONHOLD_ERR 0x00000008L /* Slave Interface Common Register Write On Hold Error Interrupt Status clear(clear_slvif_wronhold_err_intstat) */
560 #define DMAC_COM_INTCLEAR_SLVIF_UNDEFREG_ERR 0x00000100L /* Slave Interface Undefined register Decode Error Interrupt Status clear(clear_slvif_undefinedreg_dec_err_intstat) */
561#define TOFF_DMAC_COM_INTSTATUS_EN 0x0040 /* (RW) DMAC Common Interrupt Enable Register */
562 #define DMAC_COM_INTSTATUS_EN_SLVIF_DEC_ERR 0x00000001L /* Slave Interface Common Register Decode Error Interrupt Status Enable(enable_slvif_dec_err_intstat) */
563 #define DMAC_COM_INTSTATUS_EN_SLVIF_WR2RO_ERR 0x00000002L /* Slave Interface Common Register Write to Read only Error Interrupt Status Enable(enable_slvif_wr2ro_err_intstat) */
564 #define DMAC_COM_INTSTATUS_EN_SLVIF_RD2WO_ERR 0x00000004L /* Slave Interface Common Register Read to Write only Error Interrupt Status Enable(enable_slvif_rd2wo_err_intstat) */
565 #define DMAC_COM_INTSTATUS_EN_SLVIF_WRONHOLD_ERR 0x00000008L /* Slave Interface Common Register Write On Hold Error Interrupt Status Enable(enable_slvif_wronhold_err_intstat) */
566 #define DMAC_COM_INTSTATUS_EN_SLVIF_UNDEFREG_ERR 0x00000100L /* Slave Interface Undefined register Decode Error Interrupt Status Enable(enable_slvif_undefinedreg_dec_err_intstat) */
567#define TOFF_DMAC_COM_INTSIGNAL_EN 0x0048 /* (RW) DMAC Common Interrupt Signal Enable Register */
568 #define DMAC_COM_INTSIGNAL_EN_SLVIF_DEC_ERR 0x00000001L /* Slave Interface Common Register Decode Error Interrupt Signal Enable(enable_slvif_dec_err_intsignal) */
569 #define DMAC_COM_INTSIGNAL_EN_SLVIF_WR2RO_ERR 0x00000002L /* Slave Interface Common Register Write to Read only Error Interrupt Signal Enable(enable_slvif_wr2ro_err_intsignal) */
570 #define DMAC_COM_INTSIGNAL_EN_SLVIF_RD2WO_ERR 0x00000004L /* Slave Interface Common Register Read to Write only Error Interrupt Signal Enable(enable_slvif_rd2wo_err_intsignal) */
571 #define DMAC_COM_INTSIGNAL_EN_SLVIF_WRONHOLD_ERR 0x00000008L /* Slave Interface Common Register Write On Hold Error Interrupt Signal Enable(enable_slvif_wronhold_err_intsignal) */
572 #define DMAC_COM_INTSIGNAL_EN_SLVIF_UNDEFREG_ERR 0x00000100L /* Slave Interface Undefined register Decode Error Interrupt Signal Enable(enable_slvif_undefinedreg_dec_err_intsignal) */
573#define TOFF_DMAC_COM_INTSTATUS 0x0050 /* (RW) DMAC Common Interrupt Status */
574 #define DMAC_COM_INTSTATUS_SLVIF_DEC_ERR 0x00000001L /* Slave Interface Common Register Decode(slvif_dec_err_intstat) */
575 #define DMAC_COM_INTSTATUS_SLVIF_WR2RO_ERR 0x00000002L /* Slave Interface Common Register Write to Read Only(slvif_wr2ro_err_intstat */
576 #define DMAC_COM_INTSTATUS_SLVIF_RD2WO_ERR 0x00000004L /* Slave Interface Common Register Read to Write(slvif_rd2wo_err_intstat) */
577 #define DMAC_COM_INTSTATUS_SLVIF_WRONHOLD_ERR 0x00000008L /*Slave Interface Common Register Write On(slvif_wronhold_err_intstat) */
578 #define DMAC_COM_INTSTATUS_SLVIF_UNDEFREG_ERR 0x00000100L /*Slave Interface Undefined register Decode Error(slvif_undefinedreg_dec_err_intstat) */
579#define TOFF_DMAC_RESET 0x0058 /* (RW) DMAC Reset register */
580 #define DMAC_RESET_RST 0x00000001L /* DMAC reset request bit */
581#define TOFF_DMAC_CHANNEL 0x0100 /* (RW) DMAC channel registers */
582
583/*
584 * DMAC CHANNEL WINDOW
585 */
586#define TOFF_DMAC_CH_SAR 0x0000 /* (RW) SAR Address Register */
587#define TOFF_DMAC_CH_DAR 0x0008 /* (RW) DAR Address Register */
588#define TOFF_DMAC_CH_BLOCK_TS 0x0010 /* (RW) Block Transfer Size Register */
589 #define DMACCH_BLOCK_TS 0x03FFFFFFL /* block transfer size(block_ts) */
590#define TOFF_DMAC_CH_CTL 0x0018 /* (RW) Control Register */
591 #define DMACCH_CTL_SMS 0x0000000000000001 /* source master select(sms) */
592 #define DMACCH_CTL_DMS 0x0000000000000004 /* destination master select(dms) */
593 #define DMACCH_CTL_SINC 0x0000000000000010 /* source address increment(sinc) */
594 #define DMACCH_CTL_DINC 0x0000000000000040 /* destination address incremnet(dinc) */
595 #define DMACCH_CTL_SRC_TR_WIDTH 0x0000000000000700 /* source transfer width(src_tr_width) */
596 /* * 0x0 for source transfer width is 8 bits
597 * 0x1 for source transfer width is 16 bits
598 * 0x2 for source transfer width is 32 bits
599 * 0x3 for source transfer width is 64 bits
600 * 0x4 for source transfer width is 128 bits
601 * 0x5 for source transfer width is 256 bits
602 * 0x6 for source transfer width is 512 bits
603 */
604 #define DMACCH_CTL_DST_TR_WIDTH 0x0000000000003800 /* detination transfer width(dst_tr_width) */
605 /* * 0x0 for detination transfer width is 8 bits
606 * 0x1 for detination transfer width is 16 bits
607 * 0x2 for detination transfer width is 32 bits
608 * 0x3 for detination transfer width is 64 bits
609 * 0x4 for detination transfer width is 128 bits
610 * 0x5 for detination transfer width is 256 bits
611 * 0x6 for detination transfer width is 512 bits
612 */
613 #define DMACCH_CTL_SRC_MSIZE 0x000000000003C000 /* source burst transaction length(src_msize) */
614 /* * 0x0 for 1 data item read from rource in the burst transaction
615 * 0x1 for 4 data item read from rource in the burst transaction
616 * 0x2 for 8 data item read from rource in the burst transaction
617 * 0x3 for 16 data item read from rource in the burst transaction
618 * 0x4 for 32 data item read from rource in the burst transaction
619 * 0x5 for 64 data item read from rource in the burst transaction
620 * 0x6 for 128 data item read from rource in the burst transaction
621 * 0x7 for 256 data item read from rource in the burst transaction
622 * 0x8 for 512 data item read from rource in the burst transaction
623 * 0x9 for 1024 data item read from rource in the burst transaction
624 */
625 #define DMACCH_CTL_DST_MSIZE 0x00000000003C0000 /* destination burst transaction length(dst_msize) */
626 /* * 0x0 for 1 data item read from rource in the burst transaction
627 * 0x1 for 4 data item read from rource in the burst transaction
628 * 0x2 for 8 data item read from rource in the burst transaction
629 * 0x3 for 16 data item read from rource in the burst transaction
630 * 0x4 for 32 data item read from rource in the burst transaction
631 * 0x5 for 64 data item read from rource in the burst transaction
632 * 0x6 for 128 data item read from rource in the burst transaction
633 * 0x7 for 256 data item read from rource in the burst transaction
634 * 0x8 for 512 data item read from rource in the burst transaction
635 * 0x9 for 1024 data item read from rource in the burst transaction
636 */
637 #define DMACCH_CTL_NONP_LASTWRITE_EN 0x0000000040000000 /* Non Posted Last Write Enable(nonposted_lastwrite_en) */
638 #define DMACCH_CTL_ARLEN_EN 0x0000004000000000 /* source burst length enable(arlen_en) */
639 #define DMACCH_CTL_ARLEN 0x00007F1000000000 /* source burst length(arlen) */
640 #define DMACCH_CTL_AWLEN_EN 0x0000800000000000 /* destination burst length enable(awlen_en) */
641 #define DMACCH_CTL_AWLEN 0x00FF000000000000 /* destination burst length(awlen) */
642 #define DMACCH_CTL_SRC_STAT_EN 0x0100000000000000 /* source status enable(src_stat_en) */
643 #define DMACCH_CTL_DST_STAT_EN 0x0200000000000000 /* destination status enable(dst_stat_en) */
644 #define DMACCH_CTL_IOC_BLKTFR 0x0400000000000000 /* interrupt completion of block transfer(ioc_blktfr) */
645 #define DMACCH_CTL_SHREG_OR_LLI_LAST 0x4000000000000000 /* last shadow linked list item(shadowreg_or_lli_last) */
646 #define DMACCH_CTL_SHREG_OR_LLI_VALID 0x8000000000000000 /* last shadow linked list item valid(shadowreg_or_lli_valid) */
647#define TOFF_DMAC_CH_CFG 0x0020 /* (RW) Configure Register */
648 #define DMACCH_CFG_SRC_MULTBLKTYPE 0x0000000000000003 /* source multi block transfer type(src_multblk_type) */
649 /* * 0x0 for continuous multiblock type
650 * 0x1 for reload multiblock type
651 * 0x2 for shadow register based multiblock type
652 * 0x3 for linked lisr bases multiblock type
653 */
654 #define DMACCH_CFG_DST_MULTBLKTYPE 0x000000000000000C /* destination multi block transfer type(dst_multblk_type) */
655 /* * 0x0 for continuous multiblock type
656 * 0x1 for reload multiblock type
657 * 0x2 for shadow register based multiblock type
658 * 0x3 for linked lisr bases multiblock type
659 */
660 #define DMACCH_CFG_TT_FC 0x0000000700000000 /* transfer type and flow control(tt_fc) */
661 /* * 0x0 transfer memory to memory and flow controler is dmac
662 * 0x1 transfer memory to peripheral and flow controler is dmac
663 * 0x2 transfer peripheral to memory and flow controler is dmac
664 * 0x3 transfer peripheral to peripheral and flow controler is dmac
665 * 0x4 transfer peripheral to memory and flow controler is
666 * source peripheral
667 * 0x5 transfer peripheral to peripheral and flow controler
668 * is source peripheral
669 * 0x6 transfer memory to peripheral and flow controler is
670 * destination peripheral
671 * 0x7 transfer peripheral to peripheral and flow controler
672 * is destination peripheral
673 */
674 #define DMACCH_CFG_HS_SEL_SRC 0x0000000800000000 /* source software or hardware handshaking select(hs_sel_src) */
675 #define DMACCH_CFG_HS_SEL_DST 0x0000001000000000 /* destination software or hardware handshaking select(hs_sel_dst) */
676 #define DMACCH_CFG_SRC_HWHS_POL 0x0000002000000000 /* sorce hardware handshaking interface polarity(src_hwhs_pol) */
677 #define DMACCH_CFG_DST_HWHS_POL 0x0000004000000000 /* destination hardware handshaking interface polarity(dst_hwhs_pol) */
678 #define DMACCH_CFG_SRC_PER 0x0000078000000000 /* assign a hardware handshaking interfaceto source of channel x(src_per) */
679 #define DMACCH_CFG_DST_PER 0x0000F00000000000 /* assign a hardware handshaking interfaceto destination of channel x(dst_per) */
680 #define DMACCH_CFG_CH_PRIOR 0x000E000000000000 /* channel priority,7 is highest, 0 is lowest(ch_prior) */
681 #define DMACCH_CFG_LOCK_CH 0x0010000000000000 /* channel lock bit(lock_ch) */
682 #define DMACCH_CFG_LOCK_CH_L 0x0060000000000000 /* channel lock level(lock_ch_l) */
683 #define DMACCH_CFG_SRC_OSR_LMT 0x0780000000000000 /* source outstanding request limit(src_osr_lmt) */
684 #define DMACCH_CFG_DST_OSR_LMT 0x7800000000000000 /* destination outstanding request limit(dst_osr_lmt) */
685#define TOFF_DMAC_CH_LLP 0x0028 /* (RW) Linked List Pointer register */
686 #define DMACCH_LLP_LMS 0x0000000000000001 /* LLI master select(lms) */
687 #define DMACCH_LLP_LOC 0xFFFFFFFFFFFFFFC0 /* starting address memeory of LLI block(loc) */
688#define TOFF_DMAC_CH_STATUS 0x0030 /* (RW) Channelx Status Register */
689 #define DMACCH_CMPLTD_BLK_SIZE 0x03FFFFFFL /* completed block transfer size(cmpltd_blk_size) */
690#define TOFF_DMAC_CH_SWHSSRC 0x0038 /* (RW) Channelx Software handshake Source Register */
691 #define DMACCH_SWHS_REQ_SRC 0x00000001L /* software handshake request for channel source(swhs_req_src) */
692 #define DMACCH_SWHS_REQ_SRC_WE 0x00000002L /* write enable bit for software handshake request(swhs_req_src_we) */
693 #define DMACCH_SWHS_SGLREQ_SRC 0x00000004L /* software handshake single request for channel source(swhs_sglreq_src) */
694 #define DMACCH_SWHS_SGLREQ_SRC_WE 0x00000008L /* write enable bit for software handshake single request for channle source(swhs_sglreq_src_we) */
695 #define DMACCH_SWHS_LST_SRC 0x00000010L /* software handshake last request for channel source(swhs_lst_src) */
696 #define DMACCH_SWHS_LST_SRC_WE 0x00000020L /* write enable bit for software handshake last request(swhs_lst_src_we) */
697#define TOFF_DMAC_CH_SWHSDST 0x0040 /* (RW) Channelx Software handshake Destination Register */
698 #define DMACCH_SWHS_REQ_DST 0x00000001L /* software handshake request for channel destination(swhs_req_dst) */
699 #define DMACCH_SWHS_REQ_DST_WE 0x00000002L /* write enable bit for software handshake request(swhs_req_dst_we) */
700 #define DMACCH_SWHS_SGLREQ_DST 0x00000004L /* software handshake single request for channel destination(swhs_sglreq_dst) */
701 #define DMACCH_SWHS_SGLREQ_DST_WE 0x00000008L /* write enable bit for software handshake single request for channle destination(swhs_sglreq_dst_we) */
702 #define DMACCH_SWHS_LST_DST 0x00000010L /* software handshake last request for channel destination(swhs_lst_dst) */
703 #define DMACCH_SWHS_LST_DST_WE 0x00000020L /* write enable bit for software handshake last request(swhs_lst_dst_we) */
704#define TOFF_DMAC_CH_BLK_TFR 0x0048 /* (RW) Channelx Block Transfer Resume Request Register */
705 #define DMACCH_BLK_TFR_RESUMEREQ 0x00000001L /* block transfer resume request bit */
706#define TOFF_DMAC_CH_AXI_ID 0x0050 /* (R) Channelx AXI ID Register */
707#define TOFF_DMAC_CH_AXI_QOS 0x0058 /* (RW) Channelx AXI QOS Register */
708#define TOFF_DMAC_CH_INTSTATUS_EN 0x0080 /* (RW) Interrupt Status Enable Register */
709 #define DMACCH_ENABLE_BLOCK_TFR_DONE_INTSTAT 0x00000001L /* block transfer done interrupt status enable(enable_block_tfr_done_intstatus) */
710 #define DMACCH_ENABLE_DMA_TFR_DONE_INTSTAT 0x00000002L /* DMA transfer done interrupt status enable(enable_dma_tfr_done_intstat) */
711 #define DMACCH_ENABLE_SRC_TRANSCOMP_INTSTAT 0x00000008L /* source transaction complete status enable(enable_src_transcomp_intstat) */
712 #define DMACCH_ENABLE_DST_TRANSCOMP_INSTAT 0x00000010L /* destination transaction complete(enable_dst_transcomp_intstat) */
713 #define DMACCH_ENABLE_SRC_DEC_ERR_INSTAT 0x00000020L /* Source Decode Error Status Enable(enable_src_dec_err_intstat) */
714 #define DMACCH_ENABLE_DST_DEC_ERR_INSTAT 0x00000040L /* Destination Decode Error Status Enable(enable_dst_dec_err_intstat) */
715 #define DMACCH_ENABLE_SRC_SLV_ERR_INSTAT 0x00000080L /* Source Slave Error Status Enable(enable_src_slv_err_intstat) */
716 #define DMACCH_ENABLE_DST_SLV_ERR_INSTAT 0x00000100L /* Destination Slave Error Status Enable(enable_dst_slv_err_intstat) */
717 #define DMACCH_ENABLE_LLI_RD_DEC_ERR_INSTAT 0x00000200L /* LLI Read Decode Error Status Enable(enable_lli_rd_dec_err_intstat) */
718 #define DMACCH_ENABLE_LLI_WR_DEC_ERR_INSTAT 0x00000400L /* LLI WRITE Decode Error Status Enable(enable_lli_wr_dec_err_intstat) */
719 #define DMACCH_ENABLE_LLI_RD_SLV_ERR_INSTAT 0x00000800L /* LLI Read Slave Error Status Enable(enable_lli_rd_slv_err_intstat) */
720 #define DMACCH_ENABLE_LLI_WR_SLV_ERR_INSTAT 0x00001000L /* LLI WRITE Slave Error Status Enable(enable_lli_wr_slv_err_intstat) */
721#define TOFF_DMAC_CH_INTSTATUS 0x0088 /* (RW) Channelx Interrupt Status Register */
722#define TOFF_DMAC_CH_INTSIGNAL_EN 0x0090 /* (RW) Interrupt Siganl Enable Register */
723#define TOFF_DMAC_CH_INTCLEAR 0x0098 /* (W) Interrupt Clear Register */
724 #define DMACCH_BLK_TFR_DONE_INSTAT 0x00000001L /* block transfer done interrupt clear bit(blk_tfr_done_intstat) */
725 #define DMACCH_DMA_TFR_DONE_INSTAT 0x00000002L /* DMA transfer done interrupt clear bit(dma_tfr_done_intstat) */
726
727#define DMAC_CHANNEL_WINDOW_SIZE 0x0100
728#define NUM_DMAC_CHANNEL 6
729
730/*
731 * GPIOHS
732 */
733#define TADR_GPIOHS_BASE (GPIOHS_BASE_ADDR)
734#define TOFF_GPIOHS_INPUT_VAL 0x0000 /* (RW) Input Values */
735#define TOFF_GPIOHS_INPUT_EN 0x0004 /* (RW) Input enable */
736#define TOFF_GPIOHS_OUTPUT_EN 0x0008 /* (RW) Output enable */
737#define TOFF_GPIOHS_OUTPUT_VAL 0x000C /* (RW) Onput Values */
738#define TOFF_GPIOHS_PULLUP_EN 0x0010 /* (RW) Internal Pull-Ups enable */
739#define TOFF_GPIOHS_DRIVE 0x0014 /* (RW) Drive Strength */
740#define TOFF_GPIOHS_RISE_IE 0x0018 /* (RW) Rise interrupt enable */
741#define TOFF_GPIOHS_RISE_IP 0x001C /* (RW) Rise interrupt pending */
742#define TOFF_GPIOHS_FALL_IE 0x0020 /* (RW) Fall interrupt enable */
743#define TOFF_GPIOHS_FALL_IP 0x0024 /* (RW) Fall interrupt pending */
744#define TOFF_GPIOHS_HIGH_IE 0x0028 /* (RW) High interrupt enable */
745#define TOFF_GPIOHS_HIGH_IP 0x002C /* (RW) High interrupt pending */
746#define TOFF_GPIOHS_LOW_IE 0x0030 /* (RW) Low interrupt enable */
747#define TOFF_GPIOHS_LOW_IP 0x0034 /* (RW) Low interrupt pending */
748#define TOFF_GPIOHS_IOF_EN 0x0038 /* (RW) HW I/O Function enable */
749#define TOFF_GPIOHS_IOF_SEL 0x003C /* (RW) HW I/O Function select */
750#define TOFF_GPIOHS_OUTPOT_XOR 0x0040 /* (RW) Output XOR (invert) */
751
752#define GPIOHS_MAX_PINNO 32
753
754
755/*
756 * GPIO
757 */
758#define TADR_GPIO_BASE (GPIO_BASE_ADDR)
759#define TOFF_GPIO_DATA_OUTOUT 0x0000 /* (RW) Data (output) registers */
760#define TOFF_GPIO_DIRECTION 0x0004 /* (RW) Data direction registers */
761#define TOFF_GPIO_SOURCE 0x0008 /* (RW) Data source registers */
762#define TOFF_GPIO_INT_ENABLE 0x0030 /* (RW) Interrupt enable/disable registers */
763#define TOFF_GPIO_INT_MASK 0x0034 /* (RW) Interrupt mask registers */
764#define TOFF_GPIO_INT_LEVEL 0x0038 /* (RW) Interrupt level registers */
765#define TOFF_GPIO_INT_POLARITY 0x003C /* (RW) Interrupt polarity registers */
766#define TOFF_GPIO_INT_STATUS 0x0040 /* (RW) Interrupt status registers */
767#define TOFF_GPIO_INT_STATUS_RAW 0x0044 /* (RW) Raw interrupt status registers */
768#define TOFF_GPIO_INT_DEBOUNCE 0x0048 /* (RW) Interrupt debounce registers */
769#define TOFF_GPIO_INT_CLEAR 0x004C /* (RW) Registers for clearing interrupts */
770#define TOFF_GPIO_DATA_INPUT 0x0050 /* (RW) External port (data input) registers */
771#define TOFF_GPIO_SYNC_LEVEL 0x0060 /* (RW) Sync level registers */
772#define TOFF_GPIO_ID_CODE 0x0064 /* (R) ID code */
773#define TOFF_GPIO_INT_BOTHEDGE 0x0068 /* (RW) Interrupt both edge type */
774
775#define GPIO_MAX_PINNO 8
776
777
778/*
779 * UART
780 */
781#define TADR_UART1_BASE (UART1_BASE_ADDR)
782#define TADR_UART2_BASE (UART1_BASE_ADDR + 0x10000)
783#define TADR_UART3_BASE (UART1_BASE_ADDR + 0x20000)
784#define TOFF_UART_RBR 0x0000
785#define TOFF_UART_DLL 0x0000
786#define TOFF_UART_THR 0x0000
787#define TOFF_UART_DLH 0x0004
788#define TOFF_UART_IER 0x0004
789 #define UART_IER_RIE 0x000000001
790 #define UART_IER_TIE 0x000000002
791 #define UART_IER_THRE 0x000000080
792#define TOFF_UART_FCR 0x0008
793#define TOFF_UART_IIR 0x0008
794 #define UART_IIR_SEND 0x000000002
795 #define UART_IIR_RECEIVE 0x000000004
796 #define UART_IIR_CTIMEOUT 0x00000000C
797#define TOFF_UART_LCR 0x000C
798 #define UART_LCR_DLN 0x000000003
799 #define UART_LCR_STB 0x000000004
800 #define UART_LCR_PARITY 0x000000008
801 #define UART_LCR_PEVEN 0x000000010
802 #define UART_LCR_DMD 0x000000080
803#define TOFF_UART_MCR 0x0010
804#define TOFF_UART_LSR 0x0014
805 #define UART_LSR_RFL 0x000000001
806 #define UART_LSR_TFL 0x000000020
807#define TOFF_UART_MSR 0x0018
808#define TOFF_UART_SCR 0x001C
809#define TOFF_UART_LPDLL 0x0020
810#define TOFF_UART_LPDLH 0x0024
811
812#define TOFF_UART_SRBR 0x0030
813#define TOFF_UART_STHR 0x0030
814
815#define TOFF_UART_FAR 0x0070
816#define TOFF_UART_TFR 0x0074
817#define TOFF_UART_RFW 0x0078
818#define TOFF_UART_USR 0x007C
819#define TOFF_UART_TFL 0x0080
820#define TOFF_UART_RFL 0x0084
821#define TOFF_UART_SRR 0x0088
822#define TOFF_UART_SRTS 0x008C
823#define TOFF_UART_SBCR 0x0090
824#define TOFF_UART_SDMAM 0x0094
825#define TOFF_UART_SFE 0x0098
826#define TOFF_UART_SRT 0x009C
827#define TOFF_UART_STET 0x00A0
828#define TOFF_UART_HTX 0x00A4
829#define TOFF_UART_DMASA 0x00A8
830#define TOFF_UART_TCR 0x00AC
831#define TOFF_UART_DE_EN 0x00B0
832#define TOFF_UART_RE_EN 0x00B4
833#define TOFF_UART_DET 0x00B8
834#define TOFF_UART_TAT 0x00BC
835#define TOFF_UART_DLF 0x00C0
836#define TOFF_UART_RAR 0x00C4
837#define TOFF_UART_TAR 0x00C8
838#define TOFF_UART_LCR_EXT 0x00CC
839#define TOFF_UART_CPR 0x00F4
840#define TOFF_UART_UCV 0x00F8
841#define TOFF_UART_CTR 0x00FC
842
843
844/*
845 * I2S
846 */
847#define TADR_I2S0_BASE (I2S0_BASE_ADDR)
848#define TADR_I2S1_BASE (I2S0_BASE_ADDR+0x10000)
849#define TADR_I2S2_BASE (I2S0_BASE_ADDR+0x20000)
850#define TOFF_I2S_IER 0x0000 /* (RW) I2S Enable Register */
851#define TOFF_I2S_IRER 0x0004 /* (RW) I2S Receiver Block Enable Register */
852#define TOFF_I2S_ITER 0x0008 /* (RW) I2S Transmitter Block Enable Register */
853#define TOFF_I2S_CER 0x000C /* (RW) Clock Enable Register */
854 #define I2S_CER_CLKEN 0x00000001 /* clock generation enable/disable */
855#define TOFF_I2S_CCR 0x0010 /* (RW) Clock Configuration Register */
856 #define I2S_CCR_CLK_GATE 0x00000007 /* program the gating of sclk */
857 /* * 0x0 for clock gating is diable,
858 * 0x1 for gating after 12 sclk cycles
859 * 0x2 for gating after 16 sclk cycles
860 * 0x3 for gating after 20 sclk cycles
861 * 0x4 for gating after 24 sclk cycles
862 */
863 #define I2S_CCR_CLK_WORD_SIZE 0x00000018 /* the number of sclk cycles for which the word select line stayd in the left aligned or right aligned mode. */
864 #define I2S_CCR_ALIGN_MODE 0x000000E0 /* alignment mode setting. */
865 /* * 0x1 for standard i2s format
866 * 0x2 for right aligned format
867 * 0x4 for left aligned format
868 */
869 #define I2S_CCR_DMA_TX_EN 0x00000100 /* DMA transmit enable control */
870 #define I2S_CCR_DMA_RX_EN 0x00000200 /* DMA receive enable control */
871 #define I2S_CCR_DMA_DIVIED_16 0x00000400 /* split 32bit data to two 16 bit data and filled in left and right channel. Used with dma_tx_en or dma_rx_en */
872 #define I2S_CCR_SIGN_EXPAND_EN 0x00000800
873#define TOFF_I2S_RXFFR 0x0014 /* (RW) Receiver Block FIFO Reset Register */
874#define TOFF_I2S_TXFFR 0x0018 /* (RW) Transmitter Block FIFO Reset Register */
875#define TOFF_I2S_CHANNEL 0x0020 /* (RW) channel 0x40 * 4 */
876#define TOFF_I2S_RXDMA 0x01C0 /* (RW) Receiver Block DMA Register */
877#define TOFF_I2S_RRXDMA 0x01C4 /* (RW) Reset Receiver Block DMA Register */
878#define TOFF_I2S_TXDMA 0x01C8 /* (RW) Transmitter Block DMA Register */
879#define TOFF_I2S_RTXDMA 0x01CC /* (RW) Reset Transmitter Block DMA Register */
880#define TOFF_I2S_COMP_PARAM_2 0x01F0 /* (RW) Component Parameter Register 2 */
881#define TOFF_I2S_COMP_PARAM_1 0x01F4 /* (RW) Component Parameter Register 1 */
882#define TOFF_I2S_COMP_VERSION 0x01F8 /* (RW) I2S Component Version Register */
883#define TOFF_I2S_COMP_TYPE 0x01FC /* (RW) I2S Component Type Register */
884
885/*
886 * I2S CHANNEL WINDOW
887 */
888#define TOFF_I2SC_LEFT_RXTX 0x0000 /* (RW) Left Receive or Left Transmit Register */
889#define TOFF_I2SC_RIGHT_RXTX 0x0004 /* (RW) Right Receive or Right Transmit Register */
890#define TOFF_I2SC_RER 0x0008 /* (RW) Receive Enable Register */
891 #define I2SC_RER_RXCHENX 0x00000001 /* receive channel enable/disable */
892#define TOFF_I2SC_TER 0x000C /* (RW) Transmit Enable Register */
893 #define I2SC_TER_TXCHENX 0x00000001 /* transmit channel enable/disable */
894#define TOFF_I2SC_RCR 0x0010 /* (RW) Receive Configuration Register */
895 #define I2SC_RCR_WLEN 0x00000007 /* program desired data resolution of receiver */
896#define TOFF_I2SC_TCR 0x0014 /* (RW) Transmit Configuration Register */
897 #define I2SC_TCR_WLEN 0x00000007 /* program desired data resolution of transmitter */
898 /* * 0x0 for ignore the word length
899 * 0x1 for 12-bit data resolution of the receiver/transmitter,
900 * 0x2 for 16-bit data resolution of the receiver/transmitter,
901 * 0x3 for 20-bit data resolution of the receiver/transmitter,
902 * 0x4 for 24-bit data resolution of the receiver/transmitter,
903 * 0x5 for 32-bit data resolution of the receiver/transmitter
904 */
905#define TOFF_I2SC_ISR 0x0018 /* (RW) Interrupt Status Register */
906 #define I2SC_ISR_RXDA 0x00000001 /* status of receiver data avaliable interrupt */
907 #define I2SC_ISR_RXFO 0x00000002 /* status of data overrun interrupt for rx channel */
908 #define I2SC_ISR_TXFE 0x00000010 /* status of transmit empty triger interrupt */
909 #define I2SC_ISR_TXFO 0x00000020 /* status of data overrun interrupt for the TX channel */
910#define TOFF_I2SC_IMR 0x001C /* (RW) Interrupt Mask Register */
911 #define I2SC_IMR_RXDAM 0x00000001 /* mask RX FIFO data available interrupt */
912 #define I2SC_IMR_RXFOM 0x00000002 /* mask RX FIFO overrun interrupt */
913 #define I2SC_IMR_TXFEM 0x00000010 /* mask TX FIFO empty interrupt */
914 #define I2SC_IMR_TXFOM 0x00000020 /* mask TX FIFO overrun interrupt */
915#define TOFF_I2SC_ROR 0x0020 /* (RW) Receive Overrun Register */
916 #define I2CS_ROR_RXCHO 0x00000001 /* read this bit to clear RX FIFO data overrun interrupt */
917#define TOFF_I2SC_TOR 0x0024 /* (RW) Transmit Overrun Register */
918 #define I2CS_TOR_TXCHO 0x00000001 /* read this bit to clear TX FIFO data overrun interrupt */
919#define TOFF_I2SC_RFCR 0x0028 /* (RW) Receive FIFO Configuration Register */
920 #define I2SC_RFCR_RXCHDT 0x0000000F /* program the trigger level in the RX FIFO at which the receiver data available interrupt generate */
921 /* * 0x0 for interrupt trigger when FIFO level is 1,
922 * 0x2 for interrupt trigger when FIFO level is 2,
923 * 0x3 for interrupt trigger when FIFO level is 4,
924 * 0x4 for interrupt trigger when FIFO level is 5,
925 * 0x5 for interrupt trigger when FIFO level is 6,
926 * 0x6 for interrupt trigger when FIFO level is 7,
927 * 0x7 for interrupt trigger when FIFO level is 8,
928 * 0x8 for interrupt trigger when FIFO level is 9,
929 * 0x9 for interrupt trigger when FIFO level is 10,
930 * 0xa for interrupt trigger when FIFO level is 11,
931 * 0xb for interrupt trigger when FIFO level is 12,
932 * 0xc for interrupt trigger when FIFO level is 13,
933 * 0xd for interrupt trigger when FIFO level is 14,
934 * 0xe for interrupt trigger when FIFO level is 15,
935 * 0xf for interrupt trigger when FIFO level is 16
936 */
937#define TOFF_I2SC_TFCR 0x002C /* (RW) Transmit FIFO Configuration Register */
938 #define I2CS_TFCR_TXCHET 0x0000000F /* program the trigger level in the TX FIFO at which the receiver data available interrupt generate */
939 /* * 0x0 for interrupt trigger when FIFO level is 1,
940 * 0x2 for interrupt trigger when FIFO level is 2,
941 * 0x3 for interrupt trigger when FIFO level is 4,
942 * 0x4 for interrupt trigger when FIFO level is 5,
943 * 0x5 for interrupt trigger when FIFO level is 6,
944 * 0x6 for interrupt trigger when FIFO level is 7,
945 * 0x7 for interrupt trigger when FIFO level is 8,
946 * 0x8 for interrupt trigger when FIFO level is 9,
947 * 0x9 for interrupt trigger when FIFO level is 10,
948 * 0xa for interrupt trigger when FIFO level is 11,
949 * 0xb for interrupt trigger when FIFO level is 12,
950 * 0xc for interrupt trigger when FIFO level is 13,
951 * 0xd for interrupt trigger when FIFO level is 14,
952 * 0xe for interrupt trigger when FIFO level is 15,
953 * 0xf for interrupt trigger when FIFO level is 16
954 */
955#define TOFF_I2SC_RFF 0x0030 /* (RW) Receive FIFO Flush Register */
956 #define I2SC_RFF_RXCHFR 0x00000001 /* receiver channel FIFO reset */
957#define TOFF_I2SC_TFF 0x0034 /* (RW) Transmit FIFO Flush Register */
958 #define I2SC_TFF_RTXCHFR 0x00000001 /* transmit channel FIFO reset */
959
960#define I2S_CHANNEL_WINDOW_SIZE 0x0040
961#define NUM_I2S_CHANNEL 4
962
963
964/*
965 * I2C
966 */
967#define TADR_I2C0_BASE (I2C0_BASE_ADDR)
968#define TADR_I2C1_BASE (I2C0_BASE_ADDR+0x10000)
969#define TADR_I2C2_BASE (I2C0_BASE_ADDR+0x20000)
970#define TOFF_I2C_CON 0x0000 /* (RW) I2C Control Register */
971 #define I2C_CON_MASTER_MODE 0x00000001
972 #define I2C_CON_SPEED_MASK 0x00000006
973 #define I2C_CON_10BITADDR_SLAVE 0x00000008
974 #define I2C_CON_RESTART_EN 0x00000020
975 #define I2C_CON_SLAVE_DISABLE 0x00000040
976 #define I2C_CON_STOP_DET_IFADDRESSED 0x00000080
977 #define I2C_CON_TX_EMPTY_CTRL 0x00000100
978#define TOFF_I2C_TAR 0x0004 /* (RW) I2C Target Address Register */
979 #define I2C_TAR_ADDRESS_MASK 0x000003FF
980 #define I2C_TAR_GC_OR_START 0x00000400
981 #define I2C_TAR_SPECIAL 0x00000800
982 #define I2C_TAR_10BITADDR_MASTER 0x00001000
983#define TOFF_I2C_SAR 0x0008 /* (RW) I2C Slave Address Register */
984 #define I2C_SAR_ADDRESS_MASK 0x000003FF
985#define TOFF_I2C_DATA_CMD 0x0010 /* (RW) I2C Data Buffer and Command Register */
986 #define I2C_DATA_CMD_CMD 0x00000100
987 #define I2C_DATA_CMD_DATA_MASK 0x000000FF
988#define TOFF_I2C_SS_SCL_HCNT 0x0014 /* (RW) I2C Standard Speed Clock SCL High Count Register */
989#define TOFF_I2C_SS_SCL_LCNT 0x0018 /* (RW) I2C Standard Speed Clock SCL Low Count Register */
990#define TOFF_I2C_INTR_STAT 0x002C /* (RW) I2C Interrupt Status Register */
991 #define I2C_INTR_STAT_RX_UNDER 0x00000001
992 #define I2C_INTR_STAT_RX_OVER 0x00000002
993 #define I2C_INTR_STAT_RX_FULL 0x00000004
994 #define I2C_INTR_STAT_TX_OVER 0x00000008
995 #define I2C_INTR_STAT_TX_EMPTY 0x00000010
996 #define I2C_INTR_STAT_RD_REQ 0x00000020
997 #define I2C_INTR_STAT_TX_ABRT 0x00000040
998 #define I2C_INTR_STAT_RX_DONE 0x00000080
999 #define I2C_INTR_STAT_ACTIVITY 0x00000100
1000 #define I2C_INTR_STAT_STOP_DET 0x00000200
1001 #define I2C_INTR_STAT_START_DET 0x00000400
1002 #define I2C_INTR_STAT_GEN_CALL 0x00000800
1003#define TOFF_I2C_INTR_MASK 0x0030 /* (RW) I2C Interrupt Mask Register */
1004 #define I2C_INTR_MASK_RX_UNDER 0x00000001
1005 #define I2C_INTR_MASK_RX_OVER 0x00000002
1006 #define I2C_INTR_MASK_RX_FULL 0x00000004
1007 #define I2C_INTR_MASK_TX_OVER 0x00000008
1008 #define I2C_INTR_MASK_TX_EMPTY 0x00000010
1009 #define I2C_INTR_MASK_RD_REQ 0x00000020
1010 #define I2C_INTR_MASK_TX_ABRT 0x00000040
1011 #define I2C_INTR_MASK_RX_DONE 0x00000080
1012 #define I2C_INTR_MASK_ACTIVITY 0x00000100
1013 #define I2C_INTR_MASK_STOP_DET 0x00000200
1014 #define I2C_INTR_MASK_START_DET 0x00000400
1015 #define I2C_INTR_MASK_GEN_CALL 0x00000800
1016#define TOFF_I2C_RAW_INTR_STAT 0x0034 /* (RW) I2C Raw Interrupt Status Register */
1017 #define I2C_RAW_INTR_MASK_RX_UNDER 0x00000001
1018 #define I2C_RAW_INTR_MASK_RX_OVER 0x00000002
1019 #define I2C_RAW_INTR_MASK_RX_FULL 0x00000004
1020 #define I2C_RAW_INTR_MASK_TX_OVER 0x00000008
1021 #define I2C_RAW_INTR_MASK_TX_EMPTY 0x00000010
1022 #define I2C_RAW_INTR_MASK_RD_REQ 0x00000020
1023 #define I2C_RAW_INTR_MASK_TX_ABRT 0x00000040
1024 #define I2C_RAW_INTR_MASK_RX_DONE 0x00000080
1025 #define I2C_RAW_INTR_MASK_ACTIVITY 0x00000100
1026 #define I2C_RAW_INTR_MASK_STOP_DET 0x00000200
1027 #define I2C_RAW_INTR_MASK_START_DET 0x00000400
1028 #define I2C_RAW_INTR_MASK_GEN_CALL 0x00000800
1029#define TOFF_I2C_RX_TL 0x0038 /* (RW) I2C Receive FIFO Threshold Register */
1030 #define I2C_RX_TL_VALUE_MASK 0x00000007
1031#define TOFF_I2C_TX_TL 0x003C /* (RW) I2C Transmit FIFO Threshold Register */
1032 #define I2C_TX_TL_VALUE_MASK 0x00000007
1033#define TOFF_I2C_CLR_INTR 0x0040 /* (RW) I2C Clear Combined and Individual Interrupt Register */
1034 #define I2C_CLR_INTR_CLR 0x00000001
1035#define TOFF_I2C_CLR_RX_UNDER 0x0044 /* (RW) I2C Clear RX_UNDER Interrupt Register */
1036 #define I2C_CLR_RX_UNDER_CLR 0x00000001
1037#define TOFF_I2C_CLR_RX_OVER 0x0048 /* (RW) I2C Clear RX_OVER Interrupt Register */
1038 #define I2C_CLR_RX_OVER_CLR 0x00000001
1039#define TOFF_I2C_CLR_TX_OVER 0x004C /* (RW) I2C Clear TX_OVER Interrupt Register */
1040 #define I2C_CLR_TX_OVER_CLR 0x00000001
1041#define TOFF_I2C_CLR_RD_REQ 0x0050 /* (RW) I2C Clear RD_REQ Interrupt Register */
1042 #define I2C_CLR_RD_REQ_CLR 0x00000001
1043#define TOFF_I2C_CLR_TX_ABRT 0x0054 /* (RW) I2C Clear TX_ABRT Interrupt Register */
1044 #define I2C_CLR_TX_ABRT_CLR 0x00000001
1045#define TOFF_I2C_CLR_RX_DONE 0x0058 /* (RW) I2C Clear RX_DONE Interrupt Register */
1046 #define I2C_CLR_RX_DONE_CLR 0x00000001
1047#define TOFF_I2C_CLR_ACTIVITY 0x005C /* (RW) I2C Clear ACTIVITY Interrupt Register */
1048 #define I2C_CLR_ACTIVITY_CLR 0x00000001
1049#define TOFF_I2C_CLR_STOP_DET 0x0060 /* (RW) I2C Clear STOP_DET Interrupt Register */
1050 #define I2C_CLR_STOP_DET_CLR 0x00000001
1051#define TOFF_I2C_CLR_START_DET 0x0064 /* (RW) I2C Clear START_DET Interrupt Register */
1052 #define I2C_CLR_START_DET_CLR 0x00000001
1053#define TOFF_I2C_CLR_GEN_CALL 0x0068 /* (RW) I2C Clear GEN_CALL Interrupt Register */
1054 #define I2C_CLR_GEN_CALL_CLR 0x00000001
1055#define TOFF_I2C_ENABLE 0x006C /* (RW) I2C Enable Register */
1056 #define I2C_ENABLE_ENABLE 0x00000001
1057 #define I2C_ENABLE_ABORT 0x00000002
1058 #define I2C_ENABLE_TX_CMD_BLOCK 0x00000004
1059#define TOFF_I2C_STATUS 0x0070 /* (RW) I2C Status Register */
1060 #define I2C_STATUS_ACTIVITY 0x00000001
1061 #define I2C_STATUS_TFNF 0x00000002
1062 #define I2C_STATUS_TFE 0x00000004
1063 #define I2C_STATUS_RFNE 0x00000008
1064 #define I2C_STATUS_RFF 0x00000010
1065 #define I2C_STATUS_MST_ACTIVITY 0x00000020
1066 #define I2C_STATUS_SLV_ACTIVITY 0x00000040
1067#define TOFF_I2C_TXFLR 0x0074 /* (RW) I2C Transmit FIFO Level Register */
1068 #define I2C_TXFLR_VALUE_MASK 0x00000007
1069#define TOFF_I2C_RXFLR 0x0078 /* (RW) I2C Receive FIFO Level Register */
1070 #define I2C_RXFLR_VALUE_MASK 0x00000007
1071#define TOFF_I2C_SDA_HOLD 0x007C /* (RW) I2C SDA Hold Time Length Register */
1072 #define I2C_SDA_HOLD_TX_MASK 0x0000FFFF
1073 #define I2C_SDA_HOLD_RX_MASK 0x00FF0000
1074#define TOFF_I2C_TX_ABRT_SOURCE 0x0080 /* (RW) I2C Transmit Abort Source Register */
1075 #define I2C_TX_ABRT_SOURCE_7B_ADDR_NOACK 0x00000001
1076 #define I2C_TX_ABRT_SOURCE_10B_ADDR1_NOACK 0x00000002
1077 #define I2C_TX_ABRT_SOURCE_10B_ADDR2_NOACK 0x00000004
1078 #define I2C_TX_ABRT_SOURCE_TXDATA_NOACK 0x00000008
1079 #define I2C_TX_ABRT_SOURCE_GCALL_NOACK 0x00000010
1080 #define I2C_TX_ABRT_SOURCE_GCALL_READ 0x00000020
1081 #define I2C_TX_ABRT_SOURCE_HS_ACKDET 0x00000040
1082 #define I2C_TX_ABRT_SOURCE_SBYTE_ACKDET 0x00000080
1083 #define I2C_TX_ABRT_SOURCE_HS_NORSTRT 0x00000100
1084 #define I2C_TX_ABRT_SOURCE_SBYTE_NORSTRT 0x00000200
1085 #define I2C_TX_ABRT_SOURCE_10B_RD_NORSTRT 0x00000400
1086 #define I2C_TX_ABRT_SOURCE_MASTER_DIS 0x00000800
1087 #define I2C_TX_ABRT_SOURCE_MST_ARBLOST 0x00001000
1088 #define I2C_TX_ABRT_SOURCE_SLVFLUSH_TXFIFO 0x00002000
1089 #define I2C_TX_ABRT_SOURCE_SLV_ARBLOST 0x00004000
1090 #define I2C_TX_ABRT_SOURCE_SLVRD_INTX 0x00008000
1091 #define I2C_TX_ABRT_SOURCE_USER_ABRT 0x00010000
1092#define TOFF_I2C_DMA_CR 0x0088 /* (RW) I2C DMA Control Register */
1093 #define I2C_DMA_CR_RDMAE 0x00000001
1094 #define I2C_DMA_CR_TDMAE 0x00000002
1095#define TOFF_I2C_DMA_TDLR 0x008C /* (RW) I2C DMA Transmit Data Level Register */
1096 #define I2C_DMA_TDLR_VALUE_MASK 0x00000007
1097#define TOFF_I2C_DMA_RDLR 0x0090 /* (RW) I2C DMA Receive Data Level Register */
1098 #define I2C_DMA_RDLR_VALUE_MASK 0x00000007
1099#define TOFF_I2C_SDA_SETUP 0x0094 /* (RW) I2C SDA Setup Register */
1100 #define I2C_SDA_SETUP_VALUE_MASK 0x000000FF
1101#define TOFF_I2C_GENERAL_CALL 0x0098 /* (RW) I2C ACK General Call Register */
1102 #define I2C_ACK_GENERAL_CALL_ENABLE 0x00000001
1103#define TOFF_I2C_ENABLE_STATUS 0x009C /* (RW) I2C Enable Status Register */
1104 #define I2C_ENABLE_STATUS_IC_ENABLE 0x00000001
1105 #define I2C_ENABLE_STATUS_SLV_DIS_BUSY 0x00000002
1106 #define I2C_ENABLE_STATUS_SLV_RX_DATA_LOST 0x00000004
1107#define TOFF_I2C_FS_SPKLEN 0x00A0 /* (RW) I2C SS, FS or FM+ spike suppression limit */
1108 #define I2C_FS_SPKLEN_VALUE_MASK 0x000000FF
1109#define TOFF_I2C_COMP_PARAM_1 0x00F4 /* (RW) I2C Component Parameter Register 1 */
1110 #define I2C_COMP_PARAM1_APB_DATA_WIDTH 0x00000003
1111 #define I2C_COMP_PARAM1_MAX_SPEED_MODE 0x0000000C
1112 #define I2C_COMP_PARAM1_HC_COUNT_VALUES 0x00000010
1113 #define I2C_COMP_PARAM1_INTR_IO 0x00000020
1114 #define I2C_COMP_PARAM1_HAS_DMA 0x00000040
1115 #define I2C_COMP_PARAM1_ENCODED_PARAMS 0x00000080
1116 #define I2C_COMP_PARAM1_RX_BUFFER_DEPTH 0x0000FF00
1117 #define I2C_COMP_PARAM1_TX_BUFFER_DEPTH 0x00FF0000
1118#define TOFF_I2C_COMP_VERSION 0x00F8 /* (RW) I2C Component Version Register */
1119#define TOFF_I2C_COMP_TYPE 0x00FC /* (RW) I2C Component Type Register */
1120
1121
1122/*
1123 * FPIOA
1124 */
1125#define TADR_FPIOA_BASE (FPIOA_BASE_ADDR)
1126#define FPIOA_NUM_IO (48)
1127#define TOFF_FPIOA_IO 0x0000
1128 #define FPIOA_CH_SEL 0x000000FF /* Channel select from 256 input. */
1129 #define FPIOA_DS 0x00000F00 /* Driving selector. */
1130 #define FPIOA_OE_EN 0x00001000 /* Static output enable, will AND with OE_INV. */
1131 #define FPIOA_OE_INV 0x00002000 /* Invert output enable. */
1132 #define FPIOA_DO_SEL 0x00004000 /* Data output select: 0 for DO, 1 for OE. */
1133 #define FPIOA_DO_INV 0x00008000 /* Invert the result of data output select (DO_SEL). */
1134 #define FPIOA_PU 0x00010000 /* Pull up enable. 0 for nothing, 1 for pull up. */
1135 #define FPIOA_PD 0x00020000 /* Pull down enable. 0 for nothing, 1 for pull down. */
1136 #define FPIOA_SL 0x00080000 /* Slew rate control enable. */
1137 #define FPIOA_IE_EN 0x00100000 /* Static input enable, will AND with IE_INV. */
1138 #define FPIOA_IE_INV 0x00200000 /* Invert input enable. */
1139 #define FPIOA_DI_INV 0x00400000 /* Invert Data input. */
1140 #define FPIOA_ST 0x00800000 /* Schmitt trigger. */
1141 #define FPIOA_PAD_DI 0x80000000 /* Read current IO's data input. */
1142#define TOFF_FPIOA_TIE_EN (FPIOA_NUM_IO*4)
1143#define TOFF_FPIOA_TIE_VAL (TOFF_FPIOA_TIE_EN+(FUNC_MAX/8))
1144
1145
1146/*
1147 * TIMER
1148 */
1149#define TADR_TIMER0_BASE (TIMER0_BASE_ADDR)
1150#define TADR_TIMER1_BASE (TIMER0_BASE_ADDR+0x10000)
1151#define TADR_TIMER2_BASE (TIMER0_BASE_ADDR+0x20000)
1152#define TOFF_TIMER_CHANNEL 0x0000 /* (RW) TIMER_N Register 20bytes * 4 */
1153#define TOFF_TIMER_INT_STATR 0x00A0 /* (RW) TIMER Interrupt Status Register */
1154#define TOFF_TIMER_EOI 0x00A4 /* (RW) TIMER Interrupt Clear Register */
1155#define TOFF_TIMER_RAW_INTR_STAT 0x00A8 /* (RW) TIMER Raw Interrupt Status Register */
1156#define TOFF_TIMER_COMP_VERSION 0x00AC /* (RW) TIMER Component Version Register */
1157#define TOFF_TIMER_LOAD_COUNT2 0x00B0 /* (RW) TIMER_N Load Count2 Register 4 *4 */
1158
1159/*
1160 * TIMER CHANNEL WINDOW
1161 */
1162#define TOFF_TIMERC_LOAD_COUNT 0x0000 /* (RW) TIMER_N Load Count Register */
1163#define TOFF_TIMERC_CURRENT_VALUE 0x0004 /* (RW) TIMER_N Current Value Register */
1164#define TOFF_TIMERC_CONTROL 0x0008 /* (RW) TIMER_N Control Register */
1165 #define TIMERC_CR_ENABLE 0x00000001
1166 #define TIMERC_CR_MODE_MASK 0x00000002
1167 #define TIMERC_CR_FREE_MODE 0x00000000
1168 #define TIMERC_CR_USER_MODE 0x00000002
1169 #define TIMERC_CR_INTERRUPT_MASK 0x00000004
1170 #define TIMERC_CR_PWM_ENABLE 0x00000008
1171#define TOFF_TIMERC_EOI 0x000C /* (RW) TIMER_N Interrupt Clear Register */
1172#define TOFF_TIMERC_INTR_STAT 0x0010 /* (RW) TIMER_N Interrupt Status Register */
1173
1174#define TIMER_CHANNEL_WINDOW_SIZE 0x0014
1175#define NUM_TIMER_CHANNEL 4
1176
1177
1178/*
1179 * WDT
1180 */
1181#define TADR_WDT0_BASE (WDT0_BASE_ADDR)
1182#define TADR_WDT1_BASE (WDT0_BASE_ADDR+0x10000)
1183#define TOFF_WDT_CR 0x0000 /* (RW) WDT Control Register */
1184 #define WDT_CR_ENABLE 0x00000001
1185 #define WDT_CR_RMOD_MASK 0x00000002
1186 #define WDT_CR_RMOD_RESET 0x00000000
1187 #define WDT_CR_RMOD_INTERRUPT 0x00000002
1188 #define WDT_CR_RPL_MASK 0x0000001C
1189#define TOFF_WDT_TORR 0x0004 /* (RW) WDT Timeout Range Register */
1190 #define WDT_TORR_TOP_MASK 0x000000FF
1191#define TOFF_WDT_CCVR 0x0008 /* (RW) WDT Current Counter Value Register */
1192#define TOFF_WDT_CRR 0x000C /* (RW) WDT Counter Restart Register */
1193 #define WDT_CRR_MASK 0x00000076
1194#define TOFF_WDT_STAT 0x0010 /* (RW) WDT Interrupt Status Register */
1195#define TOFF_WDT_EOI 0x0014 /* (RW) WDT Interrupt Clear Register */
1196#define TOFF_WDT_PROT_LEVEL 0x001C /* (RW) WDT Protection level Register */
1197 #define WDT_PROT_LEVEL_MASK 0x00000007
1198#define TOFF_WDT_CMP_PARAM5 0x00E4 /* (RW) WDT Component Parameters Register 5 */
1199#define TOFF_WDT_CMP_PARAM4 0x00E8 /* (RW) WDT Component Parameters Register 4 */
1200#define TOFF_WDT_CMP_PARAM3 0x00EC /* (RW) WDT Component Parameters Register 3 */
1201#define TOFF_WDT_CMP_PARAM2 0x00F0 /* (RW) WDT Component Parameters Register 2 */
1202#define TOFF_WDT_CMP_PARAM1 0x00F4 /* (RW) WDT Component Parameters Register 1 */
1203 #define WDT_COMP_PARAM_1_WDT_ALWAYS_EN_MASK 0x00000001
1204 #define WDT_COMP_PARAM_1_WDT_DFLT_RMOD_MASK 0x00000002
1205 #define WDT_COMP_PARAM_1_WDT_DUAL_TOP_MASK 0x00000004
1206 #define WDT_COMP_PARAM_1_WDT_HC_RMOD_MASK 0x00000008
1207 #define WDT_COMP_PARAM_1_WDT_HC_RPL_MASK 0x00000010
1208 #define WDT_COMP_PARAM_1_WDT_HC_TOP_MASK 0x00000020
1209 #define WDT_COMP_PARAM_1_WDT_USE_FIX_TOP_MASK 0x00000040
1210 #define WDT_COMP_PARAM_1_WDT_PAUSE_MASK 0x00000080
1211 #define WDT_COMP_PARAM_1_APB_DATA_WIDTH_MASK 0x00000300
1212 #define WDT_COMP_PARAM_1_WDT_DFLT_RPL_MASK 0x00001C00
1213 #define WDT_COMP_PARAM_1_WDT_DFLT_TOP_MASK 0x000F0000
1214 #define WDT_COMP_PARAM_1_WDT_DFLT_TOP_INIT_MASK 0x00F00000
1215 #define WDT_COMP_PARAM_1_WDT_CNT_WIDTH_MASK 0x1F000000
1216#define TOFF_WDT_CMP_VER 0x00F8 /* (RW) WDT Component Version Register */
1217#define TOFF_WDT_CMP_TYPE 0x00FC /* (RW) WDT Component Type Register */
1218
1219
1220/*
1221 * SYSCTL
1222 */
1223#define TADR_SYSCTL_BASE (SYSCTL_BASE_ADDR)
1224#define TOFF_SYSCTL_GIT_ID 0x0000 /* (RW) No. 0: Git short commit id */
1225#define TOFF_SYSCTL_CLK_FREQ 0x0004 /* (RW) No. 1: System clock base frequency */
1226#define TOFF_SYSCTL_PLL0 0x0008 /* (RW) No. 2: PLL0 controller */
1227 #define SYSCTL_PLL_CLKR0 0x0000000F /* clkr0 : 4 */
1228 #define SYSCTL_PLL_CLKF0 0x000003F0 /* clkf0 : 6 */
1229 #define SYSCTL_PLL_CLKOD0 0x00003C00 /* clkod0 : 4 */
1230 #define SYSCTL_PLL_BWADJ0 0x000FC000 /* bwadj0 : 6 */
1231 #define SYSCTL_PLL_RESET0 0x00100000 /* pll_reset0 : 1 */
1232 #define SYSCTL_PLL_PWRD0 0x00200000 /* pll_pwrd0 : 1 */
1233 #define SYSCTL_PLL_INTFB0 0x00400000 /* pll_intfb0 : 1 */
1234 #define SYSCTL_PLL_BYPASS0 0x00800000 /* pll_bypass0 : 1 */
1235 #define SYSCTL_PLL_TEST0 0x01000000 /* pll_test0 : 1 */
1236 #define SYSCTL_PLL_OUT_EN0 0x02000000 /* pll_out_en0 : 1 */
1237 #define SYSCTL_PLL_TEST_EN 0x04000000 /* pll_test_en : 1 */
1238#define TOFF_SYSCTL_PLL1 0x000C /* (RW) No. 3: PLL1 controller */
1239 #define SYSCTL_PLL_CLKR1 0x0000000F /* clkr1 : 4 */
1240 #define SYSCTL_PLL_CLKF1 0x000003F0 /* clkf1 : 6 */
1241 #define SYSCTL_PLL_CLKOD1 0x00003C00 /* clkod1 : 4 */
1242 #define SYSCTL_PLL_BWADJ1 0x000FC000 /* bwadj1 : 6 */
1243 #define SYSCTL_PLL_RESET1 0x00100000 /* pll_reset1 : 1 */
1244 #define SYSCTL_PLL_PWRD1 0x00200000 /* pll_pwrd1 : 1 */
1245 #define SYSCTL_PLL_INTFB1 0x00400000 /* pll_intfb1 : 1 */
1246 #define SYSCTL_PLL_BYPASS1 0x00800000 /* pll_bypass1 : 1 */
1247 #define SYSCTL_PLL_TEST1 0x01000000 /* pll_test1 : 1 */
1248 #define SYSCTL_PLL_OUT_EN1 0x02000000 /* pll_out_en1 : 1 */
1249#define TOFF_SYSCTL_PLL2 0x0010 /* (RW) No. 4: PLL2 controller */
1250 #define SYSCTL_PLL_CLKR2 0x0000000F /* clkr2 : 4 */
1251 #define SYSCTL_PLL_CLKF2 0x000003F0 /* clkf2 : 6 */
1252 #define SYSCTL_PLL_CLKOD2 0x00003C00 /* clkod2 : 4 */
1253 #define SYSCTL_PLL_BWADJ2 0x000FC000 /* bwadj2 : 6 */
1254 #define SYSCTL_PLL_RESET2 0x00100000 /* pll_reset2 : 1 */
1255 #define SYSCTL_PLL_PWRD2 0x00200000 /* pll_pwrd2 : 1 */
1256 #define SYSCTL_PLL_INTFB2 0x00400000 /* pll_intfb2 : 1 */
1257 #define SYSCTL_PLL_BYPASS2 0x00800000 /* pll_bypass2 : 1 */
1258 #define SYSCTL_PLL_TEST2 0x01000000 /* pll_test2 : 1 */
1259 #define SYSCTL_PLL_OUT_EN2 0x02000000 /* pll_out_en2 : 1 */
1260 #define SYSCTL_PLL_CKIN_SEL2 0x0C000000 /* pll_ckin_sel2 : 2 */
1261#define TOFF_SYSCTL_PLL_LOCK 0x0018 /* (RW) No. 6: PLL lock tester */
1262 #define SYSCTL_PLL_LOCK_LOCK0 0x00000003 /* pll_lock0 : 2 */
1263 #define SYSCTL_PLL_LOCK_SLIP_CLEAR0 0x00000004 /* pll_slip_clear0 : 1 */
1264 #define SYSCTL_PLL_LOCK_TEST_CLK_OUT0 0x00000008 /* test_clk_out0 : 1 */
1265 #define SYSCTL_PLL_LOCK_LOCK1 0x00000300 /* pll_lock1 : 2 */
1266 #define SYSCTL_PLL_LOCK_SLIP_CLEAR1 0x00000400 /* pll_slip_clear1 : 1 */
1267 #define SYSCTL_PLL_LOCK_TEST_CLK_OUT1 0x00000800 /* test_clk_out1 : 1 */
1268 #define SYSCTL_PLL_LOCK_LOCK2 0x00030000 /* pll_lock2 : 2 */
1269 #define SYSCTL_PLL_LOCK_SLIP_CLEAR2 0x00040000 /* pll_slip_clear2 : 1 */
1270 #define SYSCTL_PLL_LOCK_TEST_CLK_OUT2 0x00080000 /* test_clk_out2 : 1 */
1271#define TOFF_SYSCTL_ROM_ERROR 0x001C /* (RW) No. 7: AXI ROM detector */
1272 #define SYSCTL_ROM_ERROR_NUL_ERROR 0x00000001 /* rom_mul_error : 1 */
1273 #define SYSCTL_ROM_ERROR_ONE_ERROR 0x00000002 /* rom_one_error : 1 */
1274#define TOFF_CLK_SEL0 0x0020 /* (RW) No. 8: Clock select controller0 */
1275 #define SYSCTL_CLK_SEL0_ACLK_SEL 0x00000001 /* aclk_sel : 1 */
1276 #define SYSCTL_CLK_SEL0_SOURCE_IN0 0x00000000
1277 #define SYSCTL_CLK_SEL0_SOURCE_PLL0 0x00000001
1278 #define SYSCTL_CLK_SEL0_ACLK_SDIVISER 0x00000006 /* aclk_divider_sel : 2 */
1279 #define SYSCTL_CLK_SEL0_APB0_CLK_SEL 0x00000038 /* apb0_clk_sel : 3 */
1280 #define SYSCTL_CLK_SEL0_APB1_CLK_SEL 0x000001C0 /* apb1_clk_sel : 3 */
1281 #define SYSCTL_CLK_SEL0_APB2_CLK_SEL 0x00000E00 /* apb2_clk_sel : 3 */
1282 #define SYSCTL_CLK_SEL0_SPI3_CLK_SEL 0x00001000 /* spi3_clk_sel : 1 */
1283 #define SYSCTL_CLK_SEL0_TIM0_CLK_SEL 0x00002000 /* timer0_clk_sel : 1 */
1284 #define SYSCTL_CLK_SEL0_TIM1_CLK_SEL 0x00004000 /* timer1_clk_sel : 1 */
1285 #define SYSCTL_CLK_SEL0_TIM2_CLK_SEL 0x00008000 /* timer2_clk_sel : 1 */
1286#define TOFF_CLK_SEL1 0x0024 /* (RW) No. 9: Clock select controller1 */
1287 #define SYSCTL_CLK_SEL1_SPI3S_CLK_SEL 0x00000001 /* spi3_sample_clk_sel : 1 */
1288#define TOFF_SYSCTL_CLK_EN_CENT 0x0028 /* (RW) No. 10: Central clock enable */
1289 #define SYSCTL_CLK_EN_CENT_CPU_CLK_EN 0x00000001 /* cpu_clk_en : 1 */
1290 #define SYSCTL_CLK_EN_CENT_SRAM0_CLK_EN 0x00000002 /* sram0_clk_en : 1 */
1291 #define SYSCTL_CLK_EN_CENT_SRAM1_CLK_EN 0x00000004 /* sram1_clk_en : 1 */
1292 #define SYSCTL_CLK_EN_CENT_APB0_CLK_EN 0x00000008 /* apb0_clk_en : 1 */
1293 #define SYSCTL_CLK_EN_CENT_APB1_CLK_EN 0x00000010 /* apb1_clk_en : 1 */
1294 #define SYSCTL_CLK_EN_CENT_APB2_CLK_EN 0x00000020 /* apb2_clk_en : 1 */
1295#define TOFF_SYSCTL_CLK_EN_PERI 0x002C /* (RW) No. 11: Peripheral clock enable */
1296 #define SYSCTL_CLK_EN_PERI_ROM_CLK_EN 0x00000001 /* rom_clk_en : 1 */
1297 #define SYSCTL_CLK_EN_PERI_DMA_CLK_EN 0x00000002 /* dma_clk_en : 1 */
1298 #define SYSCTL_CLK_EN_PERI_AI_CLK_EN 0x00000004 /* ai_clk_en : 1 */
1299 #define SYSCTL_CLK_EN_PERI_DVP_CLK_EN 0x00000008 /* dvp_clk_en : 1 */
1300 #define SYSCTL_CLK_EN_PERI_FFT_CLK_EN 0x00000010 /* fft_clk_en : 1 */
1301 #define SYSCTL_CLK_EN_PERI_GPIO_CLK_EN 0x00000020 /* gpio_clk_en : 1 */
1302 #define SYSCTL_CLK_EN_PERI_SPI0_CLK_EN 0x00000040 /* spi0_clk_en : 1 */
1303 #define SYSCTL_CLK_EN_PERI_SPI1_CLK_EN 0x00000080 /* spi1_clk_en : 1 */
1304 #define SYSCTL_CLK_EN_PERI_SPI2_CLK_EN 0x00000100 /* spi2_clk_en : 1 */
1305 #define SYSCTL_CLK_EN_PERI_SPI3_CLK_EN 0x00000200 /* spi3_clk_en : 1 */
1306 #define SYSCTL_CLK_EN_PERI_I2S0_CLK_EN 0x00000400 /* i2s0_clk_en : 1 */
1307 #define SYSCTL_CLK_EN_PERI_I2S1_CLK_EN 0x00000800 /* i2s1_clk_en : 1 */
1308 #define SYSCTL_CLK_EN_PERI_I2S2_CLK_EN 0x00001000 /* i2s2_clk_en : 1 */
1309 #define SYSCTL_CLK_EN_PERI_I2C0_CLK_EN 0x00002000 /* i2c0_clk_en : 1 */
1310 #define SYSCTL_CLK_EN_PERI_I2C1_CLK_EN 0x00004000 /* i2c1_clk_en : 1 */
1311 #define SYSCTL_CLK_EN_PERI_I2C2_CLK_EN 0x00008000 /* i2c2_clk_en : 1 */
1312 #define SYSCTL_CLK_EN_PERI_UART1_CLK_EN 0x00010000 /* uart1_clk_en : 1 */
1313 #define SYSCTL_CLK_EN_PERI_UART2_CLK_EN 0x00020000 /* uart2_clk_en : 1 */
1314 #define SYSCTL_CLK_EN_PERI_UART3_CLK_EN 0x00040000 /* uart3_clk_en : 1 */
1315 #define SYSCTL_CLK_EN_PERI_AES_CLK_EN 0x00080000 /* aes_clk_en : 1 */
1316 #define SYSCTL_CLK_EN_PERI_FPIOA_CLK_EN 0x00100000 /* fpioa_clk_en : 1 */
1317 #define SYSCTL_CLK_EN_PERI_TIM0_CLK_EN 0x00200000 /* timer0_clk_en : 1 */
1318 #define SYSCTL_CLK_EN_PERI_TIM1_CLK_EN 0x00400000 /* timer1_clk_en : 1 */
1319 #define SYSCTL_CLK_EN_PERI_TIM2_CLK_EN 0x00800000 /* timer2_clk_en : 1 */
1320 #define SYSCTL_CLK_EN_PERI_WDT0_CLK_EN 0x01000000 /* wdt0_clk_en : 1 */
1321 #define SYSCTL_CLK_EN_PERI_WDT1_CLK_EN 0x02000000 /* wdt1_clk_en : 1 */
1322 #define SYSCTL_CLK_EN_PERI_SHA_CLK_EN 0x04000000 /* sha_clk_en : 1 */
1323 #define SYSCTL_CLK_EN_PERI_OTP_CLK_EN 0x08000000 /* otp_clk_en : 1 */
1324 #define SYSCTL_CLK_EN_PERI_RTC_CLK_EN 0x20000000 /* rtc_clk_en : 1 */
1325#define TOFF_SYSCTL_SOFT_RESET 0x0030 /* (RW) No. 12: Soft reset ctrl */
1326 #define SYSCTL_SOFT_RESET_RESET 0x00000001 /* soft_reset : 1 */
1327#define TOFF_SYSCTL_PERI_RESET 0x0034 /* (RW) No. 13: Peripheral reset controller */
1328 #define SYSCTL_PERI_RESET_ROM_RESET 0x00000001 /* rom_reset : 1 */
1329 #define SYSCTL_PERI_RESET_DMA_RESET 0x00000002 /* dma_reset : 1 */
1330 #define SYSCTL_PERI_RESET_AI_RESET 0x00000004 /* ai_reset : 1 */
1331 #define SYSCTL_PERI_RESET_DVP_RESET 0x00000008 /* dvp_reset : 1 */
1332 #define SYSCTL_PERI_RESET_FFT_RESET 0x00000010 /* fft_reset : 1 */
1333 #define SYSCTL_PERI_RESET_GPIO_RESET 0x00000020 /* gpio_reset : 1 */
1334 #define SYSCTL_PERI_RESET_SPI0_RESET 0x00000040 /* spi0_reset : 1 */
1335 #define SYSCTL_PERI_RESET_SPI1_RESET 0x00000080 /* spi1_reset : 1 */
1336 #define SYSCTL_PERI_RESET_SPI2_RESET 0x00000100 /* spi2_reset : 1 */
1337 #define SYSCTL_PERI_RESET_SPI3_RESET 0x00000200 /* spi3_reset : 1 */
1338 #define SYSCTL_PERI_RESET_I2S0_RESET 0x00000400 /* i2s0_reset : 1 */
1339 #define SYSCTL_PERI_RESET_I2S1_RESET 0x00000800 /* i2s1_reset : 1 */
1340 #define SYSCTL_PERI_RESET_I2S2_RESET 0x00001000 /* i2s2_reset : 1 */
1341 #define SYSCTL_PERI_RESET_I2C0_RESET 0x00002000 /* i2c0_reset : 1 */
1342 #define SYSCTL_PERI_RESET_I2C1_RESET 0x00004000 /* i2c1_reset : 1 */
1343 #define SYSCTL_PERI_RESET_I2C2_RESET 0x00008000 /* i2c2_reset : 1 */
1344 #define SYSCTL_PERI_RESET_UART1_RESET 0x00010000 /* uart1_reset : 1 */
1345 #define SYSCTL_PERI_RESET_UART2_RESET 0x00020000 /* uart2_reset : 1 */
1346 #define SYSCTL_PERI_RESET_UART3_RESET 0x00040000 /* uart3_reset : 1 */
1347 #define SYSCTL_PERI_RESET_AES_RESET 0x00080000 /* aes_reset : 1 */
1348 #define SYSCTL_PERI_RESET_FPIOA_RESET 0x00100000 /* fpioa_reset : 1 */
1349 #define SYSCTL_PERI_RESET_TIM0_RESET 0x00200000 /* timer0_reset : 1 */
1350 #define SYSCTL_PERI_RESET_TIM1_RESET 0x00400000 /* timer1_reset : 1 */
1351 #define SYSCTL_PERI_RESET_TIM2_RESET 0x00800000 /* timer2_reset : 1 */
1352 #define SYSCTL_PERI_RESET_WDT0_RESET 0x01000000 /* wdt0_reset : 1 */
1353 #define SYSCTL_PERI_RESET_WDT1_RESET 0x02000000 /* wdt1_reset : 1 */
1354 #define SYSCTL_PERI_RESET_SHA_RESET 0x04000000 /* sha_reset : 1 */
1355 #define SYSCTL_PERI_RESET_RTC_RESET 0x20000000 /* rtc_reset : 1 */
1356#define TOFF_SYSCTL_CLK_TH0 0x0038 /* (RW) No. 14: Clock threshold controller 0 */
1357 #define SYSCTL_CLK_TH0_SRAM0_GCLK_THHD 0x0000000F /* sram0_gclk_threshold : 4 */
1358 #define SYSCTL_CLK_TH0_SRAM1_GCLK_THHD 0x000000F0 /* sram1_gclk_threshold : 4 */
1359 #define SYSCTL_CLK_TH0_AI_GCLK_THHD 0x00000F00 /* ai_gclk_threshold : 4 */
1360 #define SYSCTL_CLK_TH0_DVP_GCLK_THHD 0x0000F000 /* dvp_gclk_threshold : 4 */
1361 #define SYSCTL_CLK_TH0_ROM_GCLK_THHD 0x000F0000 /* rom_gclk_threshold : 4 */
1362#define TOFF_SYSCTL_CLK_TH1 0x003C /* (RW) No. 15: Clock threshold controller 1 */
1363 #define SYSCTL_CLK_TH1_SPI0_CLK_THHD 0x000000FF /* spi0_clk_threshold : 8 */
1364 #define SYSCTL_CLK_TH1_SPI1_CLK_THHD 0x0000FF00 /* spi1_clk_threshold : 8 */
1365 #define SYSCTL_CLK_TH1_SPI2_CLK_THHD 0x00FF0000 /* spi2_clk_threshold : 8 */
1366 #define SYSCTL_CLK_TH1_SPI3_CLK_THHD 0xFF000000 /* spi3_clk_threshold : 8 */
1367#define TOFF_SYSCTL_CLK_TH2 0x0040 /* (RW) No. 16: Clock threshold controller 2 */
1368 #define SYSCTL_CLK_TH2_TM0_CLK_THHD 0x000000FF /* timer0_clk_threshold : 8 */
1369 #define SYSCTL_CLK_TH2_TM1_CLK_THHD 0x0000FF00 /* timer1_clk_threshold : 8 */
1370 #define SYSCTL_CLK_TH2_TM2_CLK_THHD 0x00FF0000 /* timer2_clk_threshold : 8 */
1371#define TOFF_SYSCTL_CLK_TH3 0x0044 /* (RW) No. 17: Clock threshold controller 3 */
1372 #define SYSCTL_CLK_TH3_I2S0_CLK_THHD 0x0000FFFF /* i2s0_clk_threshold : 16 */
1373 #define SYSCTL_CLK_TH3_I2S1_CLK_THHD 0xFFFF0000 /* i2s1_clk_threshold : 16 */
1374#define TOFF_SYSCTL_CLK_TH4 0x0048 /* (RW) No. 18: Clock threshold controller 4 */
1375 #define SYSCTL_CLK_TH4_I2S2_CLK_THHD 0x0000FFFF /* i2s2_clk_threshold : 16 */
1376 #define SYSCTL_CLK_TH4_I2S0_MCLK_THHD 0x00FF0000 /* i2s0_mclk_threshold : 8 */
1377 #define SYSCTL_CLK_TH4_I2S1_MCLK_THHD 0xFF000000 /* i2s1_mclk_threshold : 8 */
1378#define TOFF_SYSCTL_CLK_TH5 0x004C /* (RW) No. 19: Clock threshold controller 5 */
1379 #define SYSCTL_CLK_TH5_I2S2_MCLK_THHD 0x000000FF /* i2s2_mclk_threshold : 8 */
1380 #define SYSCTL_CLK_TH5_I2C0_CLK_THHD 0x0000FF00 /* i2c0_clk_threshold : 8 */
1381 #define SYSCTL_CLK_TH5_I2C1_CLK_THHD 0x00FF0000 /* i2c1_clk_threshold : 8 */
1382 #define SYSCTL_CLK_TH5_I2C2_CLK_THHD 0xFF000000 /* i2c2_clk_threshold : 8 */
1383#define TOFF_SYSCTL_CLK_TH6 0x0050 /* (RW) No. 20: Clock threshold controller 6 */
1384 #define SYSCTL_CLK_TH6_WD0_CLK_THHD 0x000000FF /* wdt0_clk_threshold : 8 */
1385 #define SYSCTL_CLK_TH6_WD1_CLK_THHD 0x0000FF00 /* wdt1_clk_threshold : 8 */
1386#define TOFF_SYSCTL_MISC 0x0054 /* (RW) No. 21: Miscellaneous controller */
1387 #define SYSCTL_MISC_DEBUG_SEL 0x0000003F /* debug_sel : 6 */
1388 #define SYSCTL_MISC_SPI_DVP_DATA_ENABLE 0x00000400 /* spi_dvp_data_enable: 1 */
1389#define TOFF_SYSCTL_PERI 0x0058 /* (RW) No. 22: Peripheral controller */
1390 #define SYSCTL_PERI_TIMER0_PAUSE 0x00000001 /* timer0_pause : 1 */
1391 #define SYSCTL_PERI_TIMER1_PAUSE 0x00000002 /* timer1_pause : 1 */
1392 #define SYSCTL_PERI_TIMER2_PAUSE 0x00000004 /* timer2_pause : 1 */
1393 #define SYSCTL_PERI_TIMER3_PAUSE 0x00000008 /* timer3_pause : 1 */
1394 #define SYSCTL_PERI_TIMER4_PAUSE 0x00000010 /* timer4_pause : 1 */
1395 #define SYSCTL_PERI_TIMER5_PAUSE 0x00000020 /* timer5_pause : 1 */
1396 #define SYSCTL_PERI_TIMER6_PAUSE 0x00000040 /* timer6_pause : 1 */
1397 #define SYSCTL_PERI_TIMER7_PAUSE 0x00000080 /* timer7_pause : 1 */
1398 #define SYSCTL_PERI_TIMER8_PAUSE 0x00000100 /* timer8_pause : 1 */
1399 #define SYSCTL_PERI_TIMER9_PAUSE 0x00000200 /* timer9_pause : 1 */
1400 #define SYSCTL_PERI_TIMER10_PAUSE 0x00000400 /* timer10_pause : 1 */
1401 #define SYSCTL_PERI_TIMER11_PAUSE 0x00000800 /* timer11_pause : 1 */
1402 #define SYSCTL_PERI_SPI0_XIP_EN 0x00001000 /* spi0_xip_en : 1 */
1403 #define SYSCTL_PERI_SPI1_XIP_EN 0x00002000 /* spi1_xip_en : 1 */
1404 #define SYSCTL_PERI_SPI2_XIP_EN 0x00004000 /* spi2_xip_en : 1 */
1405 #define SYSCTL_PERI_SPI3_XIP_EN 0x00008000 /* spi3_xip_en : 1 */
1406 #define SYSCTL_PERI_SPI0_CLK_BYPASS 0x00010000 /* spi0_clk_bypass : 1 */
1407 #define SYSCTL_PERI_SPI1_CLK_BYPASS 0x00020000 /* spi1_clk_bypass : 1 */
1408 #define SYSCTL_PERI_SPI2_CLK_BYPASS 0x00040000 /* spi2_clk_bypass : 1 */
1409 #define SYSCTL_PERI_I2S0_CLK_BYPASS 0x00080000 /* i2s0_clk_bypass : 1 */
1410 #define SYSCTL_PERI_I2S1_CLK_BYPASS 0x00100000 /* i2s1_clk_bypass : 1 */
1411 #define SYSCTL_PERI_I2S2_CLK_BYPASS 0x00200000 /* i2s2_clk_bypass : 1 */
1412 #define SYSCTL_PERI_JTAG_CLK_BYPASS 0x00400000 /* jtag_clk_bypass : 1 */
1413 #define SYSCTL_PERI_DVP_CLK_BYPASS 0x00800000 /* dvp_clk_bypass : 1 */
1414 #define SYSCTL_PERI_DEBUG_CLK_BYPASS 0x01000000 /* debug_clk_bypass : 1 */
1415#define TOFF_SYSCTL_SPI_SLEEP 0x005C /* (RW) No. 23: SPI sleep controller */
1416 #define SYSCTL_SPI_SLEEP_SSI0_SLEEP 0x00000001 /* ssi0_sleep : 1 */
1417 #define SYSCTL_SPI_SLEEP_SSI1_SLEEP 0x00000002 /* ssi1_sleep : 1 */
1418 #define SYSCTL_SPI_SLEEP_SSI2_SLEEP 0x00000004 /* ssi2_sleep : 1 */
1419 #define SYSCTL_SPI_SLEEP_SSI3_SLEEP 0x00000008 /* ssi3_sleep : 1 */
1420#define TOFF_SYSCTL_RST_STATUS 0x0060 /* (RW) No. 24: Reset source status */
1421 #define SYSCTL_RST_STATUS_RESET_STS_CLR 0x00000001 /* reset_sts_clr : 1 */
1422 #define SYSCTL_RST_STATUS_PIN_RESET_STS 0x00000002 /* pin_reset_sts : 1 */
1423 #define SYSCTL_RST_STATUS_WDT0_RESET_STS 0x00000004 /* wdt0_reset_sts : 1 */
1424 #define SYSCTL_RST_STATUS_WDT1_RESET_STS 0x00000008 /* wdt1_reset_sts : 1 */
1425 #define SYSCTL_RST_STATUS_SOFT_RESET_STS 0x00000010 /* soft_reset_sts : 1 */
1426#define TOFF_SYSCTL_DMA_SEL0 0x0064 /* (RW) No. 25: DMA handshake selector */
1427 #define SYSCTL_DMA_SEL0_DMA_SEL0 0x0000003F /* dma_sel0 : 6 */
1428 #define SYSCTL_DMA_SEL0_DMA_SEL1 0x00000FC0 /* dma_sel1 : 6 */
1429 #define SYSCTL_DMA_SEL0_DMA_SEL2 0x0003F000 /* dma_sel2 : 6 */
1430 #define SYSCTL_DMA_SEL0_DMA_SEL3 0x00FC0000 /* dma_sel3 : 6 */
1431 #define SYSCTL_DMA_SEL0_DMA_SEL4 0x3F000000 /* dma_sel4 : 6 */
1432#define TOFF_SYSCTL_DMA_SEL1 0x0068 /* (RW) No. 26: DMA handshake selector */
1433 #define SYSCTL_DMA_SEL0_DMA_SEL5 0x0000003F /* dma_sel5 : 6 */
1434#define TOFF_SYSCTL_POWER_SEL 0x006C /* (RW) No. 27: IO Power Mode Select controller */
1435 #define SYSCTL_POWER_SEL_POWER_MODE_0 0x00000001 /* power_mode_sel0 : 1 */
1436 #define SYSCTL_POWER_SEL_POWER_MODE_1 0x00000002 /* power_mode_sel1 : 1 */
1437 #define SYSCTL_POWER_SEL_POWER_MODE_2 0x00000004 /* power_mode_sel2 : 1 */
1438 #define SYSCTL_POWER_SEL_POWER_MODE_3 0x00000008 /* power_mode_sel3 : 1 */
1439 #define SYSCTL_POWER_SEL_POWER_MODE_4 0x00000010 /* power_mode_sel4 : 1 */
1440 #define SYSCTL_POWER_SEL_POWER_MODE_5 0x00000020 /* power_mode_sel5 : 1 */
1441 #define SYSCTL_POWER_SEL_POWER_MODE_6 0x00000040 /* power_mode_sel6 : 1 */
1442 #define SYSCTL_POWER_SEL_POWER_MODE_7 0x00000080 /* power_mode_sel7 : 1 */
1443
1444/*
1445 * RTC
1446 */
1447#define TADR_RTC_BASE (RTC_BASE_ADDR)
1448#define TOFF_RTC_DATE 0x0000 /* (RW) Timer date information */
1449 #define RTC_DATE_WEEK 0x00000007 /* Week. Range [0,6]. 0 is Sunday. */
1450 #define RTC_DATE_DAY 0x00001F00 /* Day. Range [1,31] or [1,30] or [1,29] or [1,28] */
1451 #define RTC_DATE_MONTH 0x000F0000 /* Month. Range [1,12] */
1452 #define RTC_DATE_YEAR 0x3FF00000 /* Year. Range [0,99] */
1453#define TOFF_RTC_TIME 0x0004 /* (RW) Timer time information */
1454 #define RTC_TIME_SECOND 0x0000FC00 /* Second. Range [0,59] */
1455 #define RTC_TIME_MINUTE 0x003F0000 /* Minute. Range [0,59] */
1456 #define RTC_TIME_HOUR 0x1F000000 /* Hour. Range [0,23] */
1457#define TOFF_ALARM_DATE 0x0008 /* (RW) Alarm date information */
1458 #define RTC_ALARM_DATE_WEEK 0x00000003 /* Alarm Week. Range [0,6]. 0 is Sunday. */
1459 #define RTC_ALARM_DATE_DAY 0x00001F00 /* Alarm Day. Range [1,31] or [1,30] or [1,29] or [1,28] */
1460 #define RTC_ALARM_DATE_MONTH 0x000F0000 /* Alarm Month. Range [1,12] */
1461 #define RTC_ALARM_DATE_YEAR 0x3FF00000 /* Alarm Year. Range [0,99] */
1462#define TOFF_ALARM_TIME 0x000C /* (RW) Alarm time information */
1463 #define RTC_ALARM_TIME_SECOND 0x0000FC00 /* Alarm Second. Range [0,59] */
1464 #define RTC_ALARM_TIME_MINUTE 0x003F0000 /* Alarm Minute. Range [0,59] */
1465 #define RTC_ALARM_TIME_HOUR 0x1F000000 /* Alarm Hour. Range [0,23] */
1466#define TOFF_INITIAL_COUNT 0x0010 /* (RW) Timer counter initial value */
1467#define TOFF_COURRNT_COUNT 0x0014 /* (RW) Timer counter current value */
1468#define TOFF_INTERRUPT_CTRL 0x0018 /* (RW) RTC interrupt settings */
1469 #define RTC_INT_TICK_ENABLE 0x00000001 /* Reserved */
1470 #define RTC_INT_ALARM_ENABLE 0x00000002 /* Alarm interrupt enable */
1471 #define RTC_INT_TICK_INT_MODE 0x0000000C /* Tick interrupt enable */
1472 #define RTC_INT_ARARM_C_MASK 0xFF000000 /* Alarm compare mask for interrupt */
1473#define TOFF_REGISTER_CTRL 0x001C /* (RW) RTC register settings */
1474 #define RTC_RCTL_READ_ENABLE 0x00000001 /* RTC timer read enable */
1475 #define RTC_RCTL_WRITE_ENABLE 0x00000002 /* RTC timer write enable */
1476 #define RTC_RCTL_TIMER_MASK 0x001FE000 /* RTC timer mask */
1477 #define RTC_RCTL_ALARAM_MASK 0x1FE00000 /* RTC alarm mask */
1478 #define RTC_RCTL_INT_CNT_MASK 0x20000000 /* RTC counter initial count value mask */
1479 #define RTC_RCTL_INT_REG_MASK 0x40000000 /* RTC interrupt register mask */
1480#define TOFF_RTC_EXTENDED 0x0028 /* (RW) Timer extended information */
1481 #define RTC_EXTENDED_CENTURY 0x0000001F /* Century. Range [0,31] */
1482 #define RTC_EXTENDED_YEAR 0x00000020 /* Is leap year. 1 is leap year, 0 is not leap year */
1483
1484
1485/*
1486 * SPI
1487 */
1488#define TADR_SPI0_BASE (SPI0_BASE_ADDR)
1489#define TADR_SPI1_BASE (SPI1_BASE_ADDR)
1490#define TADR_SPIS_BASE (SPI_SLAVE_BASE_ADDR)
1491#define TADR_SPI2_BASE (SPI3_BASE_ADDR)
1492#define TOFF_SPI_CTRLR0 0x0000 /* (RW) SPI Control Register 0 */
1493#define TOFF_SPI_CTRLR1 0x0004 /* (RW) SPI Control Register 1 */
1494#define TOFF_SPI_SSIENR 0x0008 /* (RW) SPI Enable Register */
1495#define TOFF_SPI_MWCR 0x000C /* (RW) SPI Microwire Control Register */
1496#define TOFF_SPI_SER 0x0010 /* (RW) SPI Slave Enable Register */
1497#define TOFF_SPI_BAUDR 0x0014 /* (RW) SPI Baud Rate Select */
1498#define TOFF_SPI_TXFTLR 0x0018 /* (RW) SPI Transmit FIFO Threshold Level */
1499#define TOFF_SPI_RXFTLR 0x001C /* (RW) SPI Receive FIFO Threshold Level */
1500#define TOFF_SPI_TXFLR 0x0020 /* (RW) SPI Transmit FIFO Level Register */
1501#define TOFF_SPI_RXFLR 0x0024 /* (RW) SPI Receive FIFO Level Register */
1502#define TOFF_SPI_SR 0x0028 /* (RW) SPI Status Register */
1503#define TOFF_SPI_IMR 0x002C /* (RW) SPI Interrupt Mask Register */
1504#define TOFF_SPI_ISR 0x0030 /* (RW) SPI Interrupt Status Register */
1505#define TOFF_SPI_RISR 0x0034 /* (RW) SPI Raw Interrupt Status Register */
1506#define TOFF_SPI_TXOICR 0x0038 /* (RW) SPI Transmit FIFO Overflow Interrupt Clear Register */
1507#define TOFF_SPI_RXOICR 0x003C /* (RW) SPI Receive FIFO Overflow Interrupt Clear Register */
1508#define TOFF_SPI_RXUICR 0x0040 /* (RW) SPI Receive FIFO Underflow Interrupt Clear Register */
1509#define TOFF_SPI_MSTICR 0x0044 /* (RW) SPI Multi-Master Interrupt Clear Register */
1510#define TOFF_SPI_ICR 0x0048 /* (RW) SPI Interrupt Clear Register */
1511#define TOFF_SPI_DMACR 0x004C /* (RW) SPI DMA Control Register */
1512#define TOFF_SPI_DMATDLR 0x0050 /* (RW) SPI DMA Transmit Data Level */
1513#define TOFF_SPI_DMARDLR 0x0054 /* (RW) SPI DMA Receive Data Level */
1514#define TOFF_SPI_IDR 0x0058 /* (RW) SPI Identification Register */
1515#define TOFF_SPI_SSIC_VER_ID 0x005C /* (RW) SPI DWC_ssi component version */
1516#define TOFF_SPI_DR 0x0060 /* (RW) SPI Data Register 0-35 */
1517#define TOFF_SPI_RX_SAMPL_DELAY 0x00F0 /* (RW) SPI RX Sample Delay Register */
1518#define TOFF_SPI_SPI_CTRLR0 0x00F4 /* (RW) SPI SPI Control Register */
1519#define TOFF_SPI_XIP_MODE_BITS 0x00FC /* (RW) SPI XIP Mode bits */
1520#define TOFF_SPI_XIP_INCR_INST 0x0100 /* (RW) SPI XIP INCR transfer opcode */
1521#define TOFF_SPI_XIP_WRAP_INST 0x0104 /* (RW) SPI XIP WRAP transfer opcode */
1522#define TOFF_SPI_XIP_CTRL 0x0108 /* (RW) SPI XIP Control Register */
1523#define TOFF_SPI_XIP_SER 0x010C /* (RW) SPI XIP Slave Enable Register */
1524#define TOFF_SPI_XRXOICR 0x0110 /* (RW) SPI XIP Receive FIFO Overflow Interrupt Clear Register */
1525#define TOFF_SPI_XIP_CNT_TIMOUT 0x0114 /* (RW) SPI XIP time out register for continuous transfers */
1526#define TOFF_SPI_ENDIAN 0x0118
1527
1528#endif /* _KENDRYTE_K210_H_ */
Note: See TracBrowser for help on using the repository browser.