source: rtems/c/src/libchip/serial/ns16550.h @ 6279149

4.115
Last change on this file since 6279149 was 8a9bdc5, checked in by Sebastian Huber <sebastian.huber@…>, on Oct 7, 2014 at 9:37:55 AM

libchip/serial: Task driven mode for NS16550

  • Property mode set to 100644
File size: 2.5 KB
Line 
1/**
2 *  @file
3 * 
4 */
5
6/*
7 *  COPYRIGHT (c) 1998 by Radstone Technology
8 *
9 *  THIS FILE IS PROVIDED TO YOU, THE USER, "AS IS", WITHOUT WARRANTY OF ANY
10 *  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
11 *  IMPLIED WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK
12 *  AS TO THE QUALITY AND PERFORMANCE OF ALL CODE IN THIS FILE IS WITH YOU.
13 *
14 *  You are hereby granted permission to use, copy, modify, and distribute
15 *  this file, provided that this notice, plus the above copyright notice
16 *  and disclaimer, appears in all copies. Radstone Technology will provide
17 *  no support for this code.
18 *
19 *  COPYRIGHT (c) 1989-2012.
20 *  On-Line Applications Research Corporation (OAR).
21 *
22 *  The license and distribution terms for this file may be
23 *  found in the file LICENSE in this distribution or at
24 *  http://www.rtems.org/license/LICENSE.
25 */
26
27#ifndef _NS16550_H_
28#define _NS16550_H_
29
30#include <rtems/termiostypes.h>
31#include <libchip/serial.h>
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37/*
38 * Driver function table
39 */
40
41extern const console_fns ns16550_fns;
42extern const console_fns ns16550_fns_polled;
43
44/*
45 * Flow control function tables
46 */
47
48extern const console_flow ns16550_flow_RTSCTS;
49extern const console_flow ns16550_flow_DTRCTS;
50
51/*
52 *  Helpers for printk
53 */
54void ns16550_outch_polled(console_tbl *c, char out);
55int ns16550_inch_polled(console_tbl *c);
56
57/* Alternative NS16550 driver using the Termios device context */
58
59typedef uint8_t (*ns16550_get_reg)(uintptr_t port, uint8_t reg);
60
61typedef void (*ns16550_set_reg)(uintptr_t port, uint8_t reg, uint8_t value);
62
63typedef struct {
64  rtems_termios_device_context base;
65  ns16550_get_reg get_reg;
66  ns16550_set_reg set_reg;
67  uintptr_t port;
68  rtems_vector_number irq;
69  uint32_t clock;
70  uint32_t initial_baud;
71  bool has_fractional_divider_register;
72  uint8_t modem_control;
73  size_t out_total;
74  size_t out_remaining;
75  size_t out_current;
76  const char *out_buf;
77  rtems_termios_tty *tty;
78} ns16550_context;
79
80extern const rtems_termios_device_handler ns16550_handler_interrupt;
81extern const rtems_termios_device_handler ns16550_handler_polled;
82extern const rtems_termios_device_handler ns16550_handler_task;
83
84extern const rtems_termios_device_flow ns16550_flow_rtscts;
85extern const rtems_termios_device_flow ns16550_flow_dtrcts;
86
87void ns16550_polled_putchar(rtems_termios_device_context *base, char out);
88
89int ns16550_polled_getchar(rtems_termios_device_context *base);
90
91bool ns16550_probe(rtems_termios_device_context *base);
92
93#ifdef __cplusplus
94}
95#endif
96
97#endif /* _NS16550_H_ */
Note: See TracBrowser for help on using the repository browser.