3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
9 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
10 * によって公表されている GNU General Public License の Version 2 に記
11 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
12 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
33 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
34 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
36 * @(#) $Id: fdc37c935a.h,v 1.1 2009/01/31 05:27:37 suikan Exp $
40 * スーパI/O FDC37C935A 用ドライバ
42 #ifndef _FDC37C935A_H_
43 #define _FDC37C935A_H_
50 //#define SMSC_BASE_ADDR 0xB0400000
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 */
60 smsc_config_write(UH index, UH data)
62 sil_wrh_mem((VP)SMSC_INDEX_PORT, (index << 8));
63 sil_wrh_mem((VP)SMSC_DATA_PORT, (data << 8));
67 smsc_config_read(UH index)
69 sil_wrh_mem((VP)SMSC_INDEX_PORT, (index << 8));
70 return(sil_reh_mem((VP)SMSC_DATA_PORT) >> 8);
76 extern void smsc_init(void);
80 #endif /* _MACRO_ONLY */
86 #define SMSC_SCI0_BASE_ADDR 0x03f8
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 */
102 * スーパーI/O(FDC37C935A)用 簡易SIOドライバ
109 * カーネル起動時用の初期化(sys_putcを使用するため)
111 extern void fdc37c935a_init(void);
115 * シリアルI/Oポート管理ブロックの定義
117 typedef struct sio_port_control_block SIOPCB;
122 #define SIO_ERDY_SND 1u /* 送信可能コールバック */
123 #define SIO_ERDY_RCV 2u /* 受信通知コールバック */
129 extern void smsc_sci0_initialize(void);
135 extern BOOL smsc_sci0_openflag(void);
141 extern SIOPCB *smsc_sci0_opn_por(ID siopid, VP_INT exinf);
147 extern void smsc_sci0_cls_por(SIOPCB *siopcb);
153 extern BOOL smsc_sci0_snd_chr(SIOPCB *siopcb, char c);
159 extern INT smsc_sci0_rcv_chr(SIOPCB *siopcb);
163 * シリアルI/Oポートからのコールバックの許可
165 extern void smsc_sci0_ena_cbr(SIOPCB *siopcb, UINT cbrtn);
169 * シリアルI/Oポートからのコールバックの禁止
171 extern void smsc_sci0_dis_cbr(SIOPCB *siopcb, UINT cbrtn);
177 extern void smsc_sci0_isr(void);
181 * シリアルI/Oポートからの送信可能コールバック
183 extern void smsc_sci0_ierdy_snd(VP_INT exinf);
187 * シリアルI/Oポートからの受信通知コールバック
189 extern void smsc_sci0_ierdy_rcv(VP_INT exinf);
194 #endif /* _MACRO_ONLY */
197 #endif /* _FDC37C935A_H_ */