source: rtems/bsps/include/dev/serial/zynq-uart.h @ 5686b44d

Last change on this file since 5686b44d was 5686b44d, checked in by Kinsey Moore <kinsey.moore@…>, on Dec 2, 2020 at 7:20:36 PM

zynq-uart: Fix set_attributes implementation

The zynq-uart set_attributes implementation was configured to always
return false which causes spconsole01 to fail. This restores the
disabled implementation which sets the baud rate registers
appropriately and allows spconsole01 to pass. This also expands the
set_attributes functionality to allow setting of the stop bits,
character width, and parity.

  • Property mode set to 100644
File size: 2.6 KB
Line 
1/**
2 * @file
3 * @ingroup zynq_uart
4 * @brief UART support.
5 */
6
7/*
8 * SPDX-License-Identifier: BSD-2-Clause
9 *
10 * Copyright (C) 2013, XXX embedded brains GmbH
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 *    notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 *    notice, this list of conditions and the following disclaimer in the
19 *    documentation and/or other materials provided with the distribution.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#ifndef LIBBSP_ARM_XILINX_ZYNQ_UART_H
35#define LIBBSP_ARM_XILINX_ZYNQ_UART_H
36
37#include <rtems/termiostypes.h>
38
39#ifdef __cplusplus
40extern "C" {
41#endif /* __cplusplus */
42
43/**
44 * @defgroup zynq_uart UART Support
45 * @ingroup RTEMSBSPsARMZynq
46 * @brief UART Support
47 *
48 * This driver operates an instance of the Cadence UART present in the
49 * family of Xilinx Zynq SoCs.
50 */
51
52typedef struct {
53  rtems_termios_device_context base;
54  volatile struct zynq_uart *regs;
55  bool transmitting;
56  rtems_vector_number irq;
57} zynq_uart_context;
58
59extern const rtems_termios_device_handler zynq_uart_handler;
60
61#define ZYNQ_UART_DEFAULT_BAUD 115200
62
63#ifndef ZYNQ_CLOCK_UART
64#define ZYNQ_CLOCK_UART 100000000
65#endif
66
67void zynq_uart_initialize(rtems_termios_device_context *base);
68
69int zynq_uart_read_polled(rtems_termios_device_context *base);
70
71void zynq_uart_write_polled(
72  rtems_termios_device_context *base,
73  char c
74);
75
76/**
77  * Flush TX FIFO and wait until it is empty. Used in bsp_reset.
78  */
79void zynq_uart_reset_tx_flush(zynq_uart_context *ctx);
80
81int zynq_cal_baud_rate(
82  uint32_t  baudrate,
83  uint32_t* brgr,
84  uint32_t* bauddiv,
85  uint32_t  modereg
86);
87
88#ifdef __cplusplus
89}
90#endif /* __cplusplus */
91
92#endif /* LIBBSP_ARM_XILINX_ZYNQ_UART_H */
Note: See TracBrowser for help on using the repository browser.