OSDN Git Service

Initial Commit. Toppers/JSP for Blackfin 3.3.1
[trx-305dsp/dsp.git] / trx305 / kernel / config / blackfin / _common_bf518 / chip_config.h
1 /*
2  *  TOPPERS/JSP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Just Standard Profile Kernel
5  *
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  *
9  *  TOPPERS/JSP for Blackfin
10  *
11  *  Copyright (C) 2004,2006,2009 by Takemasa Nakamura
12  *  Copyright (C) 2004 by Ujinosuke
13  *
14  *  上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
15  *  によって公表されている GNU General Public License の Version 2 に記
16  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
17  *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
18  *  利用と呼ぶ)することを無償で許諾する.
19  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21  *      スコード中に含まれていること.
22  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
24  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
25  *      の無保証規定を掲載すること.
26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
28  *      と.
29  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
30  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
31  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
32  *        報告すること.
33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
34  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
35  *
36  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
38  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
39  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
40  *
41  *
42  */
43
44
45 #ifndef _CHIP_CONFIG_H_
46 #define _CHIP_CONFIG_H_
47
48
49 /*
50  *  ターゲットシステム依存モジュール(EZKIT-BF534,6,7用)
51  *
52  *  このインクルードファイルは,t_config.h のみからインクルードされる.
53  *  他のファイルから直接インクルードしてはならない.
54 */
55
56 /*
57  *  ターゲットシステムのハードウェア資源の定義
58  *
59  *  DEVICE_INTERRUPT_COUNTはSIC_IMASKのビット数
60  *  を与える。
61  *  ADSP-BF518のビット数は56なので、値は56である。
62  */
63
64 #define DEVICE_INTERRUPT_COUNT 56
65
66
67
68 /*
69  *  PLLクロック周波数
70  */
71 #define PLLCLOCK (CLKIN*MSELVAL)
72 #define SYSCLOCK  (PLLCLOCK / SSELVAL)
73 #define CORECLOCK (PLLCLOCK / CSELVAL)
74
75
76
77 /*
78  *  TICの割込みハンドラのベクタ番号
79  */
80 #ifdef USE_TIC_CORE
81 #define INHNO_TIMER INHNO_CORE_TIMER
82 #else
83 #define INHNO_TIMER INHNO_TIMER7
84 #endif
85
86
87 /*
88  *  微少時間待ちのための定義
89  *  sil_dly_nseの呼び出しオーバーヘッドとループボディーサイクルを
90  *  nSで表す。関数はcpu_support.asmに定義してある。
91  *  SIL_DLY_TIM1は24サイクル。32nS( 750MHz ), 40nS( 600MHz )
92  *  SIL_DLY_TIM2は12サイクル。16nS( 750MHz ), 20nS( 600MHz )
93  */
94
95
96 #define SIL_DLY_TIM1    (24*1000000000/CORECLOCK)
97 #define SIL_DLY_TIM2    (12*1000000000/CORECLOCK)
98
99 /*************************************************************************
100  * uart.c用構成マクロ
101  */
102
103 /*  シリアルの割込みハンドラのベクタ番号 */
104 #define INHNO_SIO0_TX   INHNO_UART0_TX
105 #define INHNO_SIO0_RX   INHNO_UART0_RX
106 #define INHNO_SIO1_TX   INHNO_UART1_TX
107 #define INHNO_SIO1_RX   INHNO_UART1_RX
108
109 /*
110  *  UARTレジスタの配置境界。ADSP-BF518の内蔵UARTは4バイト周期でレジスタが
111  *  並んでいるので、ここには4を指定する。
112  */
113 #define UART_BOUNDARY 4
114
115 /*  UARTレジスタにsil_xxb_iop()を使ってアクセスするときにはUART_IOP_ACCESSを 宣言する。*/
116 #define UART_IOP_ACCESS
117
118 /*  シリアルポートのアドレス。 */
119 #define UART0_ADDRESS 0xFFC00400    // 内蔵UART0 THRのアドレス。
120 #define UART1_ADDRESS 0xFFC02000    // 内蔵UART0 THRのアドレス。
121
122 /*  UARTのボーレートジェネレータに設定すべき値. */
123 #define UART0_DIVISOR   SYSCLOCK/16/UART0_BAUD_RATE
124 #define UART1_DIVISOR   SYSCLOCK/16/UART1_BAUD_RATE
125
126 /*  内蔵UARTを使う場合は、UARTx_BLACKFIN_UCENを宣言してUCENを初期化しなければならない。*/
127 #define UART0_BLACKFIN_UCEN
128 #define UART1_BLACKFIN_UCEN
129
130
131 /*
132  * uart.c用構成マクロ終わり
133  *************************************************************************/
134
135
136
137 /*
138  *  割り込みベクトル番号
139  *
140  *  この定義はコンフィグレーションファイルでDEF_INHの引数として使う
141  *  SIC_ISRにおけるビット番号である。
142  *
143  */
144
145 /* Peripheral Masks For SIC_ISR0, SIC_IWR0, SIC_IMASK0 */
146 #define INHNO_PLL_WAKEUP        0   /* PLL Wakeup Interrupt                             */
147 #define INHNO_DMA_ERR0          1  /* Error Interrupt (DMA error 0 interrupt (generic))             */
148 #define INHNO_DMAR0             2  /* DMAR0 Block (DMAR0 block interrupt)                   */
149 #define INHNO_DMAR1             3  /* DMAR1 Block  (DMAR1 block interrupt)                  */
150 #define INHNO_DMAR0_ERR         4  /* Error Interrupt (DMAR0 overflow error interrupt)              */
151 #define INHNO_DMAR1_ERR         5  /* Error Interrupt (DMAR1 overflow error interrupt)              */
152 #define INHNO_PPI_ERR           6  /* Error Interrupt (PPI error interrupt)                     */
153 #define INHNO_MAC_ERR           7  /* Error Interrupt (MAC status interrupt)                */
154 #define INHNO_SPORT0_ERR        8  /* Error Interrupt (SPORT0 status interrupt)                 */
155 #define INHNO_SPORT1_ERR        9  /* Error Interrupt (SPORT1 status interrupt)                 */
156 #define INHNO_PTP_ERR           10  /* Error Interrupt (PTP error interrupt)                    */
157 /* reserved */
158 #define INHNO_UART0_ERR         12  /* Error Interrupt (UART0 status interrupt)                 */
159 #define INHNO_UART1_ERR         13  /* Error Interrupt (UART1 status interrupt)                 */
160 #define INHNO_RTC               14  /* Real Time Clock Interrupt                            */
161 #define INHNO_PPI               15  /* DMA channel 0 (PPI/NFC) Interrupt                    */
162 #define INHNO_SPORT0_RX     16  /* DMA Channel 3 (SPORT0 RX) Interrupt                  */
163 #define INHNO_SPORT0_TX     17  /* DMA Channel 4 (SPORT0 TX) Interrupt                  */
164 #define INHNO_SPORT1_RX     18  /* DMA Channel 5 (SPORT1 RX) Interrupt                  */
165 #define INHNO_SPORT1_TX     19  /* DMA Channel 6 (SPORT1 TX) Interrupt                  */
166 #define INHNO_TWI               20  /* TWI Interrupt                                    */
167 #define INHNO_SPI               21  /* DMA Channel 7 (SPI) Interrupt                        */
168 #define INHNO_UART0_RX          22  /* DMA Channel 8 (UART0 RX) Interrupt                   */
169 #define INHNO_UART0_TX          23  /* DMA Channel 9 (UART0 TX) Interrupt                   */
170 #define INHNO_UART1_RX          24  /* DMA Channel 10 (UART1 RX) Interrupt                  */
171 #define INHNO_UART1_TX          25  /* DMA Channel 11 (UART1 TX) Interrupt                  */
172 #define INHNO_OTP               26  /* OTP Interrupt                                    */
173 #define INHNO_CNT           27  /* GP Counter Interrupt                             */
174 #define INHNO_ETHERNET_RX       28  /* DMA Channel 1 (EthernetRX/HOSTDP) Interrupt              */
175 #define INHNO_PFA_PORTH         29  /* PF Port H Interrupt A                            */
176 #define INHNO_ETHERNET_TX       30  /* DMA Channel 2 (Ethernet TX/NFC) Interrupt                */
177 #define INHNO_PFB_PORTH         31  /* PF Port H  Interrupt B                           */
178
179 /* Peripheral Masks For SIC_ISR1, SIC_IWR1, SIC_IMASK1 */
180 #define INHNO_TIMER0            32  /* Timer 0 Interrupt                                */
181 #define INHNO_TIMER1            33  /* Timer 1 Interrupt                                */
182 #define INHNO_TIMER2            34  /* Timer 2 Interrupt                                */
183 #define INHNO_TIMER3            35  /* Timer 3 Interrupt                                */
184 #define INHNO_TIMER4            36  /* Timer 4 Interrupt                                */
185 #define INHNO_TIMER5            37  /* Timer 5 Interrupt                                */
186 #define INHNO_TIMER6            38  /* Timer 6 Interrupt                                */
187 #define INHNO_TIMER7            39  /* Timer 7 Interrupt                                */
188 #define INHNO_PFA_PORTG     40  /* PF Port G Interrupt A                            */
189 #define INHNO_PFB_PORTG     41  /* PF Port G Interrupt B                            */
190 #define INHNO_MDMA0_DST     42  /* DMA Channels 12 (MDMA0 Destination) TX Interrupt         */
191 #define INHNO_MDMA0_SRC     42  /* DMA Channels 13 (MDMA0 Source) RX Interrupt              */
192 #define INHNO_MDMA1_DST     43  /* DMA Channels 14 (MDMA1 Destination) TX Interrupt         */
193 #define INHNO_MDMA1_SRC     43  /* DMA Channels 15 (MDMA1 Source) RX Interrupt              */
194 #define INHNO_WDOG              44  /* Software Watchdog Timer Interrupt                    */
195 #define INHNO_PFA_PORTF     45  /* PF Port F Interrupt A                            */
196 #define INHNO_PFB_PORTF     46  /* PF Port F Interrupt B                            */
197 #define INHNO_SPI0_ERR      47  /* Error Interrupt (SPI0 status interrupt)              */
198 #define INHNO_SPI1_ERR          48  /* Error Interrupt (SPI1 status interrupt)              */
199 /* reserved */
200 /* reserved */
201 #define INHNO_RSI_INT0          51  /* USB EINT interrupt                               */
202 #define INHNO_RSI_INT1          52  /* USB INT0 interrupt                               */
203 #define INHNO_PWM_TRIPINT       53  /* USB INT1 interrupt                               */
204 #define INHNO_PWM_SYNCINT       54  /* USB INT1 interrupt                               */
205 #define INHNO_PTP_STATINT       55  /* USB DMAINT interrupt                             */
206
207
208 // SIC_ISRにない特殊な割り込み
209
210 #define INHNO_HW_ERROR      56
211 #define INHNO_CORE_TIMER    57
212 #define INHNO_RAISE         58
213
214
215 /*
216  *  SIC_ISRの割り込みのベクタ番号
217  *
218  *  この定義はena_int, dis_intの引数として使う。
219  */
220
221 /* Peripheral Masks For SIC_ISR0, SIC_IWR0, SIC_IMASK0 */
222 #define INTNO_PLL_WAKEUP        0   /* PLL Wakeup Interrupt                             */
223 #define INTNO_DMA_ERR0          1  /* Error Interrupt (DMA error 0 interrupt (generic))             */
224 #define INTNO_DMAR0             2  /* DMAR0 Block (DMAR0 block interrupt)                   */
225 #define INTNO_DMAR1             3  /* DMAR1 Block  (DMAR1 block interrupt)                  */
226 #define INTNO_DMAR0_ERR         4  /* Error Interrupt (DMAR0 overflow error interrupt)              */
227 #define INTNO_DMAR1_ERR         5  /* Error Interrupt (DMAR1 overflow error interrupt)              */
228 #define INTNO_PPI_ERR           6  /* Error Interrupt (PPI error interrupt)                     */
229 #define INTNO_MAC_ERR           7  /* Error Interrupt (MAC status interrupt)                */
230 #define INTNO_SPORT0_ERR        8  /* Error Interrupt (SPORT0 status interrupt)                 */
231 #define INTNO_SPORT1_ERR        9  /* Error Interrupt (SPORT1 status interrupt)                 */
232 #define INTNO_PTP_ERR           10  /* Error Interrupt (PTP error interrupt)                    */
233 /* reserved */
234 #define INTNO_UART0_ERR         12  /* Error Interrupt (UART0 status interrupt)                 */
235 #define INTNO_UART1_ERR         13  /* Error Interrupt (UART1 status interrupt)                 */
236 #define INTNO_RTC               14  /* Real Time Clock Interrupt                            */
237 #define INTNO_PPI               15  /* DMA channel 0 (PPI/NFC) Interrupt                    */
238 #define INTNO_SPORT0_RX     16  /* DMA Channel 3 (SPORT0 RX) Interrupt                  */
239 #define INTNO_SPORT0_TX     17  /* DMA Channel 4 (SPORT0 TX) Interrupt                  */
240 #define INTNO_SPORT1_RX     18  /* DMA Channel 5 (SPORT1 RX) Interrupt                  */
241 #define INTNO_SPORT1_TX     19  /* DMA Channel 6 (SPORT1 TX) Interrupt                  */
242 #define INTNO_TWI               20  /* TWI Interrupt                                    */
243 #define INTNO_SPI               21  /* DMA Channel 7 (SPI) Interrupt                        */
244 #define INTNO_UART0_RX          22  /* DMA Channel 8 (UART0 RX) Interrupt                   */
245 #define INTNO_UART0_TX          23  /* DMA Channel 9 (UART0 TX) Interrupt                   */
246 #define INTNO_UART1_RX          24  /* DMA Channel 10 (UART1 RX) Interrupt                  */
247 #define INTNO_UART1_TX          25  /* DMA Channel 11 (UART1 TX) Interrupt                  */
248 #define INTNO_OTP               26  /* OTP Interrupt                                    */
249 #define INTNO_CNT           27  /* GP Counter Interrupt                             */
250 #define INTNO_ETHERNET_RX       28  /* DMA Channel 1 (EthernetRX/HOSTDP) Interrupt              */
251 #define INTNO_PFA_PORTH         29  /* PF Port H Interrupt A                            */
252 #define INTNO_ETHERNET_TX       30  /* DMA Channel 2 (Ethernet TX/NFC) Interrupt                */
253 #define INTNO_PFB_PORTH         31  /* PF Port H  Interrupt B                           */
254
255 /* Peripheral Masks For SIC_ISR1, SIC_IWR1, SIC_IMASK1 */
256 #define INTNO_TIMER0            32  /* Timer 0 Interrupt                                */
257 #define INTNO_TIMER1            33  /* Timer 1 Interrupt                                */
258 #define INTNO_TIMER2            34  /* Timer 2 Interrupt                                */
259 #define INTNO_TIMER3            35  /* Timer 3 Interrupt                                */
260 #define INTNO_TIMER4            36  /* Timer 4 Interrupt                                */
261 #define INTNO_TIMER5            37  /* Timer 5 Interrupt                                */
262 #define INTNO_TIMER6            38  /* Timer 6 Interrupt                                */
263 #define INTNO_TIMER7            39  /* Timer 7 Interrupt                                */
264 #define INTNO_PFA_PORTG     40  /* PF Port G Interrupt A                            */
265 #define INTNO_PFB_PORTG     41  /* PF Port G Interrupt B                            */
266 #define INTNO_MDMA0_DST     42  /* DMA Channels 12 (MDMA0 Destination) TX Interrupt         */
267 #define INTNO_MDMA0_SRC     42  /* DMA Channels 13 (MDMA0 Source) RX Interrupt              */
268 #define INTNO_MDMA1_DST     43  /* DMA Channels 14 (MDMA1 Destination) TX Interrupt         */
269 #define INTNO_MDMA1_SRC     43  /* DMA Channels 15 (MDMA1 Source) RX Interrupt              */
270 #define INTNO_WDOG              44  /* Software Watchdog Timer Interrupt                    */
271 #define INTNO_PFA_PORTF     45  /* PF Port F Interrupt A                            */
272 #define INTNO_PFB_PORTF     46  /* PF Port F Interrupt B                            */
273 #define INTNO_SPI0_ERR      47  /* Error Interrupt (SPI0 status interrupt)              */
274 #define INTNO_SPI1_ERR          48  /* Error Interrupt (SPI1 status interrupt)              */
275 /* reserved */
276 /* reserved */
277 #define INTNO_RSI_INT0          51  /* USB EINT interrupt                               */
278 #define INTNO_RSI_INT1          52  /* USB INT0 interrupt                               */
279 #define INTNO_PWM_TRIPINT       53  /* USB INT1 interrupt                               */
280 #define INTNO_PWM_SYNCINT       54  /* USB INT1 interrupt                               */
281 #define INTNO_PTP_STATINT       55  /* USB DMAINT interrupt                             */
282
283
284
285 #ifndef _MACRO_ONLY
286
287 /*
288 * SIC_IARxを解析して、イベント順位ごとに割り当てられている割り込み
289 * のビットマップを作る。SIC_IARxのフィールド値は優先順位-7なので
290 * その分補正する。
291 */
292 void make_priority_mask( void );
293
294 /*
295  *  ターゲットシステム依存の初期化
296  */
297 extern void sys_initialize(void);
298
299 /*
300  *  ターゲットシステムの終了
301  *
302  *  システムを終了する時に使う.ROMモニタ/GDB STUB呼出しで実現する.
303  */
304 extern void sys_exit(void);
305
306 /*
307  *  ターゲットシステムの文字出力
308  *
309  *  システムの低レベルの文字出力ルーチン.ROMモニタ/GDB STUB呼出しで実
310  *  現する.
311  */
312 extern void sys_putc(char c);
313
314 /*
315 * SIC_IARxを解析して、イベント順位ごとに割り当てられている割り込み
316 * のビットマップを作る。SIC_IARxのフィールド値は優先順位-7なので
317 * その分補正する。
318 */
319 void make_priority_mask( void );
320
321 /*
322  * 割り込みの許可、禁止
323  *
324  */
325 typedef unsigned int INTNO;
326 extern ER ena_int( INTNO intno );
327 extern ER dis_int( INTNO intno );
328
329 /*
330  * 割り込みマスクの操作
331  *
332  *
333  */
334 typedef unsigned long long int IMS;
335 extern ER chg_ims( IMS ims );
336 extern ER get_ims( IMS * p_ims );
337
338 /*
339  *  割り込みをデバイスに割り当てる
340  */
341 extern void device_dispatcher( unsigned int priority, unsigned int imask );
342
343 /**
344  * スプリアス・イベント・ハンドラ
345  */
346 void spurious_exc_handler(VP p_excinf);
347 void spurious_int_handler();
348
349 #endif /* _MACRO_ONLY */
350 #endif /* _SYS_CONFIG_H_ */