OSDN Git Service

46a8b277dd13fb1d0257f593cdeff4fef09e781b
[trx-305dsp/dsp.git] / hirado / kernel / pdic / simple_sio / fdc37c935a.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  *  上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation 
10  *  によって公表されている GNU General Public License の Version 2 に記
11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
13  *  利用と呼ぶ)することを無償で許諾する.
14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16  *      スコード中に含まれていること.
17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20  *      の無保証規定を掲載すること.
21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23  *      と.
24  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
26  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27  *        報告すること.
28  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30  * 
31  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
32  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
33  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
34  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
35  * 
36  *  @(#) $Id: fdc37c935a.h,v 1.1 2009/01/31 05:27:37 suikan Exp $
37  */
38
39 /*
40  * スーパI/O FDC37C935A 用ドライバ
41  */
42 #ifndef _FDC37C935A_H_
43 #define _FDC37C935A_H_
44
45 #include <t_config.h>
46
47 /*
48  * ベースアドレス 
49  */
50 //#define SMSC_BASE_ADDR 0xB0400000
51
52 #define SMSC_CONFIG_PORT (SMSC_BASE_ADDR + 0x7E0)  /* H */
53 #define SMSC_INDEX_PORT  (SMSC_BASE_ADDR + 0x7E0)  /* H */
54 #define SMSC_DATA_PORT   (SMSC_BASE_ADDR + 0x7E2)  /* H */
55
56
57 #ifndef _MACRO_ONLY
58
59 Inline void
60 smsc_config_write(UH index, UH data)
61 {
62     sil_wrh_mem((VP)SMSC_INDEX_PORT, (index << 8));
63     sil_wrh_mem((VP)SMSC_DATA_PORT, (data << 8));
64 }
65
66 Inline UH
67 smsc_config_read(UH index)
68 {
69     sil_wrh_mem((VP)SMSC_INDEX_PORT, (index << 8));
70     return(sil_reh_mem((VP)SMSC_DATA_PORT) >> 8);
71 }
72
73 /*
74  *  初期化
75  */
76 extern void smsc_init(void);
77
78
79
80 #endif /*  _MACRO_ONLY */
81
82
83 /*
84  * SCI0
85  */
86 #define SMSC_SCI0_BASE_ADDR  0x03f8
87
88 #define SMSC_SCI0_RBR (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0x0)  /* H */
89 #define SMSC_SCI0_THR (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0x0)  /* H */
90 #define SMSC_SCI0_DLL (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0x0)  /* H */
91 #define SMSC_SCI0_IER (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0x2)  /* H */
92 #define SMSC_SCI0_DLM (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0x2)  /* H */
93 #define SMSC_SCI0_IIR (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0x4)  /* H */
94 #define SMSC_SCI0_FCR (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0x4)  /* H */
95 #define SMSC_SCI0_LCR (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0x6)  /* H */
96 #define SMSC_SCI0_MCR (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0x8)  /* H */
97 #define SMSC_SCI0_LSR (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0xA)  /* H */
98 #define SMSC_SCI0_MSR (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0xC)  /* H */
99 #define SMSC_SCI0_SCR (SMSC_BASE_ADDR + SMSC_SCI0_BASE_ADDR * 2 + 0xE)  /* H */
100
101 /*
102  *  スーパーI/O(FDC37C935A)用 簡易SIOドライバ
103  */
104
105 #ifndef _MACRO_ONLY
106
107 /*
108  *  割込み以外の初期化
109  *  カーネル起動時用の初期化(sys_putcを使用するため)
110  */
111 extern void fdc37c935a_init(void);
112
113
114 /*
115  *  シリアルI/Oポート管理ブロックの定義
116  */
117 typedef struct sio_port_control_block   SIOPCB;
118
119 /*
120  *  コールバックルーチンの識別番号
121  */
122 #define SIO_ERDY_SND    1u      /* 送信可能コールバック */
123 #define SIO_ERDY_RCV    2u      /* 受信通知コールバック */
124
125
126 /*
127  *  SIOドライバの初期化ルーチン
128  */
129 extern void smsc_sci0_initialize(void);
130
131
132 /*
133  *  オープンしているポートがあるか?
134  */
135 extern BOOL smsc_sci0_openflag(void);
136
137
138 /*
139  *  シリアルI/Oポートのオープン
140  */
141 extern SIOPCB   *smsc_sci0_opn_por(ID siopid, VP_INT exinf);
142
143
144 /*
145  *  シリアルI/Oポートのクローズ
146  */
147 extern void smsc_sci0_cls_por(SIOPCB *siopcb);
148
149
150 /*
151  *  シリアルI/Oポートへの文字送信
152  */
153 extern BOOL smsc_sci0_snd_chr(SIOPCB *siopcb, char c);
154
155
156 /*
157  *  シリアルI/Oポートからの文字受信
158  */
159 extern INT  smsc_sci0_rcv_chr(SIOPCB *siopcb);
160
161
162 /*
163  *  シリアルI/Oポートからのコールバックの許可
164  */
165 extern void smsc_sci0_ena_cbr(SIOPCB *siopcb, UINT cbrtn);
166
167
168 /*
169  *  シリアルI/Oポートからのコールバックの禁止
170  */
171 extern void smsc_sci0_dis_cbr(SIOPCB *siopcb, UINT cbrtn);
172
173
174 /*
175  *  SIOの割込みサービスルーチン
176  */
177 extern void smsc_sci0_isr(void);
178
179
180 /*
181  *  シリアルI/Oポートからの送信可能コールバック
182  */
183 extern void smsc_sci0_ierdy_snd(VP_INT exinf);
184
185
186 /*
187  *  シリアルI/Oポートからの受信通知コールバック
188  */
189 extern void smsc_sci0_ierdy_rcv(VP_INT exinf);
190
191
192
193
194 #endif /* _MACRO_ONLY */
195
196
197 #endif /* _FDC37C935A_H_ */