source: rtems/bsps/include/libchip/ns16550.h @ a7cd4b73

5
Last change on this file since a7cd4b73 was a7cd4b73, checked in by Sebastian Huber <sebastian.huber@…>, on 07/31/18 at 09:38:56

serial/ns16550: Precision clock synthesizer

Set the FIFO control register while DLAB == 1 in the line control
register. At least on the QorIQ T4240 the driver still works with the
re-ordered FIFO control register access.

  • Property mode set to 100644
File size: 2.6 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  bool has_precision_clock_synthesizer;
73  uint8_t modem_control;
74  uint8_t line_control;
75  uint32_t baud_divisor;
76  size_t out_total;
77  size_t out_remaining;
78  size_t out_current;
79  const char *out_buf;
80  rtems_termios_tty *tty;
81} ns16550_context;
82
83extern const rtems_termios_device_handler ns16550_handler_interrupt;
84extern const rtems_termios_device_handler ns16550_handler_polled;
85extern const rtems_termios_device_handler ns16550_handler_task;
86
87extern const rtems_termios_device_flow ns16550_flow_rtscts;
88extern const rtems_termios_device_flow ns16550_flow_dtrcts;
89
90void ns16550_polled_putchar(rtems_termios_device_context *base, char out);
91
92int ns16550_polled_getchar(rtems_termios_device_context *base);
93
94bool ns16550_probe(rtems_termios_device_context *base);
95
96#ifdef __cplusplus
97}
98#endif
99
100#endif /* _NS16550_H_ */
Note: See TracBrowser for help on using the repository browser.