OSDN Git Service

Add toppers-jsp/ in nxtOSEK_v205b0.zip. They are licensed under TOPPERS license.
[nxt-jsp/etrobo-atk.git] / nxtOSEK / toppers_jsp / pdic / simple_sio / tl16pir552.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  *  Copyright (C) 2000-2003 by Industrial Technology Institute,
9  *                              Miyagi Prefectural Government, JAPAN
10  * 
11  *  ¾åµ­Ãøºî¸¢¼Ô¤Ï¡¤°Ê²¼¤Î (1)¡Á(4) ¤Î¾ò·ï¤«¡¤Free Software Foundation 
12  *  ¤Ë¤è¤Ã¤Æ¸øɽ¤µ¤ì¤Æ¤¤¤ë GNU General Public License ¤Î Version 2 ¤Ëµ­
13  *  ½Ò¤µ¤ì¤Æ¤¤¤ë¾ò·ï¤òËþ¤¿¤¹¾ì¹ç¤Ë¸Â¤ê¡¤ËÜ¥½¥Õ¥È¥¦¥§¥¢¡ÊËÜ¥½¥Õ¥È¥¦¥§¥¢
14  *  ¤ò²þÊѤ·¤¿¤â¤Î¤ò´Þ¤à¡¥°Ê²¼Æ±¤¸¡Ë¤ò»ÈÍÑ¡¦Ê£À½¡¦²þÊÑ¡¦ºÆÇÛÉۡʰʲ¼¡¤
15  *  ÍøÍѤȸƤ֡ˤ¹¤ë¤³¤È¤ò̵½þ¤ÇµöÂú¤¹¤ë¡¥
16  *  (1) ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ò¥½¡¼¥¹¥³¡¼¥É¤Î·Á¤ÇÍøÍѤ¹¤ë¾ì¹ç¤Ë¤Ï¡¤¾åµ­¤ÎÃøºî
17  *      ¸¢É½¼¨¡¤¤³¤ÎÍøÍѾò·ï¤ª¤è¤Ó²¼µ­¤Î̵Êݾڵ¬Ä꤬¡¤¤½¤Î¤Þ¤Þ¤Î·Á¤Ç¥½¡¼
18  *      ¥¹¥³¡¼¥ÉÃæ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¡¥
19  *  (2) ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ò¡¤¥é¥¤¥Ö¥é¥ê·Á¼°¤Ê¤É¡¤Â¾¤Î¥½¥Õ¥È¥¦¥§¥¢³«È¯¤Ë»È
20  *      ÍѤǤ­¤ë·Á¤ÇºÆÇÛÉÛ¤¹¤ë¾ì¹ç¤Ë¤Ï¡¤ºÆÇÛÉÛ¤Ëȼ¤¦¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
21  *      ¼Ô¥Þ¥Ë¥å¥¢¥ë¤Ê¤É¡Ë¤Ë¡¤¾åµ­¤ÎÃøºî¸¢É½¼¨¡¤¤³¤ÎÍøÍѾò·ï¤ª¤è¤Ó²¼µ­
22  *      ¤Î̵Êݾڵ¬Äê¤ò·ÇºÜ¤¹¤ë¤³¤È¡¥
23  *  (3) ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ò¡¤µ¡´ï¤ËÁȤ߹þ¤à¤Ê¤É¡¤Â¾¤Î¥½¥Õ¥È¥¦¥§¥¢³«È¯¤Ë»È
24  *      ÍѤǤ­¤Ê¤¤·Á¤ÇºÆÇÛÉÛ¤¹¤ë¾ì¹ç¤Ë¤Ï¡¤¼¡¤Î¤¤¤º¤ì¤«¤Î¾ò·ï¤òËþ¤¿¤¹¤³
25  *      ¤È¡¥
26  *    (a) ºÆÇÛÉÛ¤Ëȼ¤¦¥É¥­¥å¥á¥ó¥È¡ÊÍøÍѼԥޥ˥奢¥ë¤Ê¤É¡Ë¤Ë¡¤¾åµ­¤ÎÃø
27  *        ºî¸¢É½¼¨¡¤¤³¤ÎÍøÍѾò·ï¤ª¤è¤Ó²¼µ­¤Î̵Êݾڵ¬Äê¤ò·ÇºÜ¤¹¤ë¤³¤È¡¥
28  *    (b) ºÆÇÛÉۤηÁÂÖ¤ò¡¤Ê̤ËÄê¤á¤ëÊýË¡¤Ë¤è¤Ã¤Æ¡¤TOPPERS¥×¥í¥¸¥§¥¯¥È¤Ë
29  *        Êó¹ð¤¹¤ë¤³¤È¡¥
30  *  (4) ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ÎÍøÍѤˤè¤êľÀÜŪ¤Þ¤¿¤Ï´ÖÀÜŪ¤ËÀ¸¤¸¤ë¤¤¤«¤Ê¤ë»
31  *      ³²¤«¤é¤â¡¤¾åµ­Ãøºî¸¢¼Ô¤ª¤è¤ÓTOPPERS¥×¥í¥¸¥§¥¯¥È¤òÌÈÀÕ¤¹¤ë¤³¤È¡¥
32  * 
33  *  ËÜ¥½¥Õ¥È¥¦¥§¥¢¤Ï¡¤ÌµÊݾڤÇÄ󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡¥¾åµ­Ãøºî¸¢¼Ô¤ª
34  *  ¤è¤ÓTOPPERS¥×¥í¥¸¥§¥¯¥È¤Ï¡¤ËÜ¥½¥Õ¥È¥¦¥§¥¢¤Ë´Ø¤·¤Æ¡¤¤½¤ÎŬÍѲÄǽÀ­¤â
35  *  ´Þ¤á¤Æ¡¤¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤ï¤Ê¤¤¡¥¤Þ¤¿¡¤ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ÎÍøÍѤˤè¤êľ
36  *  ÀÜŪ¤Þ¤¿¤Ï´ÖÀÜŪ¤ËÀ¸¤¸¤¿¤¤¤«¤Ê¤ë»³²¤Ë´Ø¤·¤Æ¤â¡¤¤½¤ÎÀÕǤ¤òÉé¤ï¤Ê¤¤¡¥
37  * 
38  */
39
40 #ifndef _TL16PIR552_H_
41 #define _TL16PIR552_H_
42
43 #include <s_services.h>         /* ¥Ç¥Ð¥¤¥¹¥É¥é¥¤¥ÐÍÑɸ½à¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë */
44
45 /*
46  *  ¥·¥ê¥¢¥ë¡¿¥Ñ¥é¥ì¥ë I/O TL16PIR552(TI) ´ØÏ¢¤ÎÄêµÁ
47  */
48 /* TL16PIR552¤Î¥ì¥¸¥¹¥¿¤Î¥¢¥É¥ì¥¹ */
49 #define RBR     0x00    /* Receiver Buffer (Æɤ߽Ф·) */
50 #define THR     0x00    /* Transmitter Holding Register (½ñ¤­½Ð¤·) */
51 #define DLL     0x00    /* Divisor Latch (LSB) */
52 #define IER     0x10    /* Interrupt-Enable Register */
53 #define DLM     0x10    /* Divisor Latch (MSB) */
54 #define IIR     0x20    /* Interrupt-Ident Register (Æɤ߽Ф·) */
55 #define FCR     0x20    /* FIFO Control Register (½ñ¤­½Ð¤·) */
56 #define LCR     0x30    /* Line-Control Register */
57 #define MCR     0x40    /* Modem-Control Register */
58 #define LSR     0x50    /* Line-Status Register */
59 #define MSR     0x60    /* Modem-Status Register */
60 #define SCR     0x70    /* Scratch Register */
61
62 /* for LCR */
63 #define WORD_LENGTH_8           (BIT1 | BIT0)
64 #define STOP_BITS_1             0u              /* BIT2 */
65 #define PARITY_NON              0u              /* BIT3, 4 */
66 /* BIT5,6 ¾Êά */
67 #define DIVISOR_LATCH_ACC       BIT7
68
69 /* for IER */
70 #define DIS_INT                 0u
71 #define RECEIVE_DATA_AVAILABLE  BIT0
72 #define TRANS_REG_EMPTY         BIT1
73 #define RECEIVE_LINE_STATUS     BIT2
74 #define MODEM_STATUS            BIT3
75
76 /* for MCR */
77 #define DTR                     BIT0
78 #define RTS                     BIT1
79 #define ENABLE_EXT_INT          BIT3
80 #define AUTOFLOW_CONTROL        BIT5
81
82 /* for FCR */
83 #define FIFO_ENABLE             BIT0
84 #define RECEIVE_FIFO_RESET      BIT1
85 #define TRANS_FIFO_RESET        BIT2
86 #define RECEIVE_TRIG_1_BYTE     0u              /* BIT6, 7 */
87 #define RECEIVE_TRIG_4_BYTE     BIT6
88 #define RECEIVE_TRIG_8_BYTE     BIT7
89 #define RECEIVE_TRIG_14_BYTE    (BIT6 | BIT7)
90
91 /* for IIR */
92 #define INT_MASK                0x0f
93 #define INT_RECEIVE_DATA        BIT2
94 #define INT_CHAR_TIME_OUT       (BIT3 | BIT2)
95 #define INT_TRANS_EMPTY         BIT1
96
97 /* for LSR */
98 #define THRE                    BIT5
99 #define TEMT                    BIT6
100
101 /* ¥Ü¡¼¥ì¡¼¥ÈÄêµÁ´Ø·¸ */
102 #define PRE_DIVISOR     4
103 #define DIVISOR         XIN_CLOCK / (8 * DEVIDE_RATIO * PRE_DIVISOR)
104
105 #ifndef _MACRO_ONLY
106
107 /*
108  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È´ÉÍý¥Ö¥í¥Ã¥¯¤ÎÄêµÁ
109  */
110 typedef struct sio_port_control_block   SIOPCB;
111
112 #endif /* _MACRO_ONLY */
113
114 /*
115  *  SIOÍÑ¥·¥¹¥Æ¥à¥¤¥ó¥¿¥Õ¥§¡¼¥¹¥ì¥¤¥ä¡¼
116  */
117 /* x : ¥Ý¡¼¥È¤Î¥Ù¡¼¥¹¥¢¥É¥ì¥¹¡¢y : ¥ì¥¸¥¹¥¿¥ª¥Õ¥»¥Ã¥È¡¢z : ¥ì¥¸¥¹¥¿ÃÍ */
118 #define tl16pir552_wrb( x, y, z )       sil_wrb_mem( (VP)(x + y), z )
119 #define tl16pir552_reb( x, y )          sil_reb_mem( (VP)(x + y) )
120
121 /*
122  *  ¥³¡¼¥ë¥Ð¥Ã¥¯¥ë¡¼¥Á¥ó¤Î¼±ÊÌÈÖ¹æ
123  */
124 #define SIO_ERDY_SND    1u              /* Á÷¿®²Äǽ¥³¡¼¥ë¥Ð¥Ã¥¯ */
125 #define SIO_ERDY_RCV    2u              /* ¼õ¿®ÄÌÃÎ¥³¡¼¥ë¥Ð¥Ã¥¯ */
126
127 #ifndef _MACRO_ONLY
128
129 /*
130  *  SIO¥É¥é¥¤¥Ð¤Î½é´ü²½¥ë¡¼¥Á¥ó
131  */
132 extern void     tl16pir552_initialize(void);
133
134 /*
135  *  ¥ª¡¼¥×¥ó¤·¤Æ¤¤¤ë¥Ý¡¼¥È¤¬¤¢¤ë¤«¡©
136  */
137 extern BOOL     tl16pir552_openflag(void);
138
139 /*
140  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤Î¥ª¡¼¥×¥ó
141  */
142 extern SIOPCB   *tl16pir552_opn_por(ID siopid, VP_INT exinf);
143
144 /*
145  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤Î¥¯¥í¡¼¥º
146  */
147 extern void     tl16pir552_cls_por(SIOPCB *siopcb);
148
149 /*
150  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤Ø¤Îʸ»úÁ÷¿®
151  */
152 extern BOOL     tl16pir552_snd_chr(SIOPCB *siopcb, char c);
153
154 /*
155  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤Îʸ»ú¼õ¿®
156  */
157 extern INT      tl16pir552_rcv_chr(SIOPCB *siopcb);
158
159 /*
160  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤Îµö²Ä
161  */
162 extern void     tl16pir552_ena_cbr(SIOPCB *siopcb, UINT cbrtn);
163
164 /*
165  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤Î¶Ø»ß
166  */
167 extern void     tl16pir552_dis_cbr(SIOPCB *siopcb, UINT cbrtn);
168
169 /*
170  *  SIO¤Î³ä¹þ¤ß¥µ¡¼¥Ó¥¹¥ë¡¼¥Á¥ó
171  */
172 extern void     tl16pir552_uart0_isr(void);
173 extern void     tl16pir552_uart1_isr(void);
174
175 /*
176  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤ÎÁ÷¿®²Äǽ¥³¡¼¥ë¥Ð¥Ã¥¯
177  */
178 extern void     tl16pir552_ierdy_snd(VP_INT exinf);
179
180 /*
181  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤Î¼õ¿®ÄÌÃÎ¥³¡¼¥ë¥Ð¥Ã¥¯
182  */
183 extern void     tl16pir552_ierdy_rcv(VP_INT exinf);
184
185 /*
186  *  ¥«¡¼¥Í¥ëµ¯Æ°»þÍѤνé´ü²½ (sys_putc¤ÇÍøÍÑ)
187  */
188 extern void     tl16pir552_init(void);
189
190 /*
191  *  ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤Ø¤Îʸ»úÁ÷¿®¡Ê¥Ý¡¼¥ê¥ó¥°¡Ë
192  */
193 extern void     tl16pir552_putchar_pol(char c);
194
195 #endif /* _MACRO_ONLY */
196 #endif /* _TL16PIR552_H_ */