RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
bsps
include
libchip
serial.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-2-Clause */
2
8
9
10
/*
11
* This file contains the TTY driver table definition
12
*
13
* This driver uses the termios pseudo driver.
14
*
15
* COPYRIGHT (c) 1989-1999.
16
* On-Line Applications Research Corporation (OAR).
17
*
18
* Redistribution and use in source and binary forms, with or without
19
* modification, are permitted provided that the following conditions
20
* are met:
21
* 1. Redistributions of source code must retain the above copyright
22
* notice, this list of conditions and the following disclaimer.
23
* 2. Redistributions in binary form must reproduce the above copyright
24
* notice, this list of conditions and the following disclaimer in the
25
* documentation and/or other materials provided with the distribution.
26
*
27
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
31
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37
* POSSIBILITY OF SUCH DAMAGE.
38
*/
39
40
#ifndef __LIBCHIP_SERIAL_h
41
#define __LIBCHIP_SERIAL_h
42
43
#include <termios.h>
44
45
#include <
rtems.h
>
46
47
#ifdef __cplusplus
48
extern
"C"
{
49
#endif
50
51
/*
52
* Types for get and set register routines
53
*/
54
61
typedef
uint8_t (*getRegister_f)(uintptr_t port, uint8_t reg);
62
70
typedef
void (*setRegister_f)(uintptr_t port, uint8_t reg, uint8_t value);
71
78
typedef
uint8_t (*
getData_f
)(uintptr_t port);
79
86
typedef
void (*
setData_f
)(uintptr_t port, uint8_t value);
87
95
typedef
struct
_console_fns
{
96
bool (*deviceProbe)(
int
minor);
97
int (*deviceFirstOpen)(
int
major,
int
minor,
void
*arg);
98
int (*deviceLastClose)(
int
major,
int
minor,
void
*arg);
99
int (*deviceRead)(
int
minor);
100
ssize_t (*deviceWrite)(
int
minor,
const
char
*buf,
size_t
len);
101
void (*deviceInitialize)(
int
minor);
102
void (*deviceWritePolled)(
int
minor,
char
cChar);
103
int (*deviceSetAttributes)(
int
minor,
const
struct
termios *t);
104
bool
deviceOutputUsesInterrupts;
105
} console_fns;
106
113
typedef
struct
_console_flow
{
114
int (*deviceStopRemoteTx)(
int
minor);
115
int (*deviceStartRemoteTx)(
int
minor);
116
} console_flow;
117
118
123
typedef
enum
{
124
SERIAL_MC68681,
/* Motorola MC68681 or Exar 88681 */
125
SERIAL_NS16550,
/* National Semiconductor NS16550 */
126
SERIAL_NS16550_WITH_FDR,
/* National Semiconductor NS16550
127
with Fractional Divider Register (FDR) */
128
SERIAL_Z85C30,
/* Zilog Z85C30 */
129
SERIAL_CUSTOM
/* BSP specific driver */
130
}
console_devs
;
131
136
typedef
struct
_console_tbl
{
138
const
char
*
sDeviceName
;
143
console_devs
deviceType
;
145
const
console_fns *
pDeviceFns
;
149
bool (*
deviceProbe
)(
int
minor);
157
const
console_flow *
pDeviceFlow
;
168
uint32_t
ulMargin
;
176
uint32_t
ulHysteresis
;
181
void
*
pDeviceParams
;
185
uint32_t
ulCtrlPort1
;
189
uint32_t
ulCtrlPort2
;
191
uint32_t
ulDataPort
;
193
getRegister_f
getRegister
;
195
setRegister_f
setRegister
;
197
getData_f
getData
;
198
/* This is the routine used to write the data register (TX). */
199
setData_f
setData;
201
uint32_t
ulClock
;
203
unsigned
int
ulIntVector
;
204
} console_tbl;
205
209
typedef
struct
_console_data
{
210
void
*termios_data;
211
volatile
bool
bActive;
213
void
*
pDeviceContext
;
214
}
console_data
;
215
220
extern
console_tbl **
Console_Port_Tbl
;
224
extern
unsigned
long
Console_Port_Count
;
225
230
extern
console_tbl
Console_Configuration_Ports
[];
234
extern
unsigned
long
Console_Configuration_Count
;
235
239
extern
console_data
*
Console_Port_Data
;
240
241
extern
rtems_device_minor_number
Console_Port_Minor;
242
248
void
bsp_console_select
(
void
);
249
250
#ifdef __cplusplus
251
}
252
#endif
253
254
#endif
Console_Configuration_Count
unsigned long Console_Configuration_Count
Definition
console-config.c:89
Console_Configuration_Ports
console_tbl Console_Configuration_Ports[]
Definition
console-config.c:68
bsp_console_select
void bsp_console_select(void)
Selects the minor number of the console device.
Definition
console_select.c:237
rtems_device_minor_number
uint32_t rtems_device_minor_number
This integer type represents the minor number of devices.
Definition
io.h:115
rtems.h
This header file defines the RTEMS Classic API.
console_devs
console_devs
Definition
serial.h:123
Console_Port_Count
unsigned long Console_Port_Count
Definition
legacy-console.c:50
console_data
struct _console_data console_data
Console_Port_Tbl
console_tbl ** Console_Port_Tbl
Definition
legacy-console.c:51
setData_f
void(*) setData_f(uintptr_t port, uint8_t value)
Definition
serial.h:86
getData_f
uint8_t(*) getData_f(uintptr_t port)
Definition
serial.h:78
Console_Port_Data
console_data * Console_Port_Data
Definition
legacy-console.c:52
_console_data
Definition
serial.h:209
_console_data::pDeviceContext
void * pDeviceContext
Definition
serial.h:213
_console_flow
Definition
serial.h:113
_console_fns
Definition
serial.h:95
_console_tbl
Definition
serial.h:136
_console_tbl::ulClock
uint32_t ulClock
Definition
serial.h:201
_console_tbl::setRegister
setRegister_f setRegister
Definition
serial.h:195
_console_tbl::pDeviceParams
void * pDeviceParams
Definition
serial.h:181
_console_tbl::ulCtrlPort1
uint32_t ulCtrlPort1
Definition
serial.h:185
_console_tbl::ulDataPort
uint32_t ulDataPort
Definition
serial.h:191
_console_tbl::pDeviceFlow
const console_flow * pDeviceFlow
Definition
serial.h:157
_console_tbl::ulIntVector
unsigned int ulIntVector
Definition
serial.h:203
_console_tbl::ulMargin
uint32_t ulMargin
Definition
serial.h:168
_console_tbl::ulCtrlPort2
uint32_t ulCtrlPort2
Definition
serial.h:189
_console_tbl::getData
getData_f getData
Definition
serial.h:197
_console_tbl::ulHysteresis
uint32_t ulHysteresis
Definition
serial.h:176
_console_tbl::deviceProbe
bool(*) deviceProbe(int minor)
Definition
serial.h:149
_console_tbl::getRegister
getRegister_f getRegister
Definition
serial.h:193
_console_tbl::deviceType
console_devs deviceType
Definition
serial.h:143
_console_tbl::pDeviceFns
const console_fns * pDeviceFns
Definition
serial.h:145
_console_tbl::sDeviceName
const char * sDeviceName
Definition
serial.h:138
Generated by
1.18.0