source: rtems/c/src/libchip/serial/ns16550_p.h @ f619250

4.115
Last change on this file since f619250 was 65cd5e9, checked in by Sebastian Huber <sebastian.huber@…>, on 04/08/13 at 14:12:20

libchip/serial: Fix warnings

  • Property mode set to 100644
File size: 4.4 KB
Line 
1/**
2 *  @file
3 * 
4 */
5
6/*
7 *  COPYRIGHT (c) 1998 by Radstone Technology
8 *
9 *
10 *  THIS FILE IS PROVIDED TO YOU, THE USER, "AS IS", WITHOUT WARRANTY OF ANY
11 *  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
12 *  IMPLIED WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK
13 *  AS TO THE QUALITY AND PERFORMANCE OF ALL CODE IN THIS FILE IS WITH YOU.
14 *
15 *  You are hereby granted permission to use, copy, modify, and distribute
16 *  this file, provided that this notice, plus the above copyright notice
17 *  and disclaimer, appears in all copies. Radstone Technology will provide
18 *  no support for this code.
19 *
20 *  COPYRIGHT (c) 1989-2012.
21 *  On-Line Applications Research Corporation (OAR).
22 *
23 *  The license and distribution terms for this file may be
24 *  found in the file LICENSE in this distribution or at
25 *  http://www.rtems.com/license/LICENSE.
26 */
27
28#ifndef _NS16550_P_H_
29#define _NS16550_P_H_
30
31#include <libchip/serial.h>
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37/*
38 *  Define NS16550_STATIC to nothing while debugging so the entry points
39 *  will show up in the symbol table.
40 */
41
42#define NS16550_STATIC static
43
44#define NS16550_RECEIVE_BUFFER   0
45#define NS16550_TRANSMIT_BUFFER  0
46#define NS16550_INTERRUPT_ENABLE 1
47#define NS16550_INTERRUPT_ID     2
48#define NS16550_FIFO_CONTROL     2
49#define NS16550_LINE_CONTROL     3
50#define NS16550_MODEM_CONTROL    4
51#define NS16550_LINE_STATUS      5
52#define NS16550_MODEM_STATUS     6
53#define NS16550_SCRATCH_PAD      7
54#define NS16550_FRACTIONAL_DIVIDER 10
55
56/*
57 * Define serial port interrupt enable register structure.
58 */
59
60#define SP_INT_RX_ENABLE  0x01
61#define SP_INT_TX_ENABLE  0x02
62#define SP_INT_LS_ENABLE  0x04
63#define SP_INT_MS_ENABLE  0x08
64
65#define NS16550_ENABLE_ALL_INTR           (SP_INT_RX_ENABLE | SP_INT_TX_ENABLE)
66#define NS16550_DISABLE_ALL_INTR          0x00
67#define NS16550_ENABLE_ALL_INTR_EXCEPT_TX (SP_INT_RX_ENABLE)
68
69/*
70 * Define serial port interrupt ID register structure.
71 */
72
73#define SP_IID_0 0x01
74#define SP_IID_1 0x02
75#define SP_IID_2 0x04
76#define SP_IID_3 0x08
77
78/*
79 * Define serial port fifo control register structure.
80 */
81
82#define SP_FIFO_ENABLE  0x01
83#define SP_FIFO_RXRST 0x02
84#define SP_FIFO_TXRST 0x04
85#define SP_FIFO_DMA   0x08
86#define SP_FIFO_RXLEVEL 0xc0
87
88#define SP_FIFO_SIZE 16
89
90/*
91 * Define serial port line control register structure.
92 */
93
94#define SP_LINE_SIZE  0x03
95#define SP_LINE_STOP  0x04
96#define SP_LINE_PAR   0x08
97#define SP_LINE_ODD   0x10
98#define SP_LINE_STICK 0x20
99#define SP_LINE_BREAK 0x40
100#define SP_LINE_DLAB  0x80
101
102/*
103 * Line status register character size definitions.
104 */
105
106#define FIVE_BITS 0x0                   /* five bits per character */
107#define SIX_BITS 0x1                    /* six bits per character */
108#define SEVEN_BITS 0x2                  /* seven bits per character */
109#define EIGHT_BITS 0x3                  /* eight bits per character */
110
111/*
112 * Define serial port modem control register structure.
113 */
114
115#define SP_MODEM_DTR  0x01
116#define SP_MODEM_RTS  0x02
117#define SP_MODEM_IRQ  0x08
118#define SP_MODEM_LOOP 0x10
119#define SP_MODEM_DIV4 0x80
120
121/*
122 * Define serial port line status register structure.
123 */
124
125#define SP_LSR_RDY    0x01
126#define SP_LSR_EOVRUN 0x02
127#define SP_LSR_EPAR   0x04
128#define SP_LSR_EFRAME 0x08
129#define SP_LSR_BREAK  0x10
130#define SP_LSR_THOLD  0x20
131#define SP_LSR_TX   0x40
132#define SP_LSR_EFIFO  0x80
133
134typedef struct {
135  uint8_t ucModemCtrl;
136  int transmitFifoChars;
137} ns16550_context;
138
139/*
140 * Driver functions
141 */
142
143void ns16550_init(int minor);
144
145int ns16550_open(
146  int major,
147  int minor,
148  void  * arg
149);
150
151int ns16550_close(
152  int major,
153  int minor,
154  void  * arg
155);
156
157void ns16550_write_polled(
158  int   minor,
159  char  cChar
160);
161
162NS16550_STATIC int ns16550_assert_RTS(
163  int minor
164);
165
166NS16550_STATIC int ns16550_negate_RTS(
167  int minor
168);
169
170NS16550_STATIC int ns16550_assert_DTR(
171  int minor
172);
173
174NS16550_STATIC int ns16550_negate_DTR(
175  int minor
176);
177
178NS16550_STATIC void ns16550_initialize_interrupts(int minor);
179
180NS16550_STATIC void ns16550_cleanup_interrupts(int minor);
181
182ssize_t ns16550_write_support_int(
183  int   minor,
184  const char *buf,
185  size_t len
186);
187
188ssize_t ns16550_write_support_polled(
189  int   minor,
190  const char *buf,
191  size_t len
192  );
193
194int ns16550_inbyte_nonblocking_polled(
195  int minor
196);
197
198NS16550_STATIC void ns16550_enable_interrupts(
199  console_tbl *c,
200  int         mask
201);
202
203int ns16550_set_attributes(
204  int                   minor,
205  const struct termios *t
206);
207
208void ns16550_isr(void *arg);
209
210#ifdef __cplusplus
211}
212#endif
213
214#endif /* _NS16550_P_H_ */
Note: See TracBrowser for help on using the repository browser.