Commit Graph

39 Commits

Author SHA1 Message Date
Gedare Bloom
0149e6e749 spdx: add 2-BSD SPDX tags on relicensed files
Updates the recently merged relicensed files with the 2-Clause BSD
SPDX annotation.

Closes #5208.
2025-03-01 04:14:54 +00:00
Gedare Bloom
9a1efe6f91 bsps/shared: relicense to 2BSD
Updates #3053.
2025-02-07 14:53:18 +00:00
Reinking, Janosch
1a4e26e3ea bsps/shared: NS16550 driver updates the line control register during operation
Fixes: #5179
2025-01-23 13:51:07 +00:00
Sebastian Huber
1f52965f98 dev/serial: Fix uninitialized variable warnings
Use the reset values to get rid of uninitialized variable warnings.
2024-09-19 04:17:53 +02:00
Utkarsh Verma
0f42153959 dev/serial: Refactor the pl011 driver
- Refactor the pl011 driver to be extensible.
- Add IRQ support and baudrate configuration support for pl011 driver.
- Modify related BSP.
- Add doxygen comments for arm-pl011.

Close #5026

Co-authored-by: Ning Yang <yangn0@qq.com>
2024-09-18 19:30:21 +00:00
Sebastian Huber
d304a817db dev/serial: Move zynq_uart_input_clock()
This allows to wrap this function using the linker.
2024-09-17 01:53:58 +00:00
Sebastian Huber
3fe69b03a3 dev/serial: Optimize Zynq UART control reg writes
Just disable RX/TX to start the initialization sequence.  Do not double
disable RX/TX.  Enable RX/TX after the mode is set.
2024-09-17 01:53:58 +00:00
Sebastian Huber
ff9b19ad7c dev/serial: Rework Zynq UART baud calculation
Calculate the best approximation for the desired baud and return the
error.
2024-09-17 01:53:58 +00:00
Sebastian Huber
6efbf0c7b8 dev/serial: Rework Zynq UART Doxygen groups 2024-09-17 01:53:58 +00:00
Sebastian Huber
5d8d55a1cd dev/serial: Simplify zynq_uart_reset_tx_flush()
Load the status register only once.  Use _IO_Relax() to reduce bus
traffic while waiting and simplify testing.
2024-09-17 01:53:58 +00:00
Sebastian Huber
6757607199 dev/serial: Do not output '\r' during reset
It is not clear why this is necessary.  For example, the
zynq_uart_initialize() does not issue the '\r' before waiting for an
inactive transmission state.
2024-09-17 01:53:58 +00:00
Sebastian Huber
a078b091c1 dev/serial: Use _IO_Relax()
This reduces the system bus load while waiting for a state change.  In
addition, it simplifies testing by using a wrapped _IO_Relax().
2024-09-17 01:53:58 +00:00
Adrien Chardon
7be49773c0 bsps/shared/zynq-uart-polled: fix bug in zynq_uart_initialize()
Similar to the recent commit in tms570-sci.c, the assumption that a UART will
only see printable ASCII characters, instead of any value in the range
0x00-0xFF, is wrong.

A non forgiving binary protocol will be thrown off by this driver sending
"\r\r\r\r" when initializing.

If a user wants to flush the interface, they should explicitely use the
dedicated function `tcflush(fd, TCIOFLUSH);`.
2024-09-17 01:53:58 +00:00
Amar Takhar
a5370d1870 bsps: Fold various files into README.md 2024-08-05 21:41:15 +00:00
Amar Takhar
28180a1fa9 bsps: Convert README to MarkDown 2024-08-05 21:37:42 +00:00
Sebastian Huber
53d092471f dev/serial: Add Zynq UART kernel I/O support
Replace the BSP_CONSOLE_MINOR BSP option for the Xilinx Zynq BSPs with the new
BSP option ZYNQ_UART_KERNEL_IO_BASE_ADDR.  Move the kernel I/O support to a
shared file.
2024-04-04 12:53:53 +02:00
Sebastian Huber
4c2da2c343 dev/serial: Simplify some Zynq UART functions
Make the initialization and polled functions independent of the Termios
context.  This helps to implement the kernel I/O support without a dependency
on the Termios framework.
2024-03-27 20:22:53 +01:00
Kinsey Moore
150dcf5e47 libio: Clean up usage of rtems_termios_device_mode
This cleans up outputUsesInterrupts usage with rtems_termios_device_mode
enum values. The outputUsesInterrupts member was typed as an int, named
as if it were a boolean value, and used as if it were a
rtems_termios_device_mode enum. In this patch, values assigned to
outputUsesInterrupts have been converted to the corresponding
rtems_termios_device_mode enum value, conversions from
deviceOutputUsesInterrupts have been made explicit, and uses of
rtems_termios_device_mode enum values with deviceOutputUsesInterrupts
have been converted to booleans.
2024-01-10 14:43:53 -06:00
Sebastian Huber
0c3d6f58f1 termios: Add <rtems/termiosdevice.h>
Add <rtems/termiosdevice.h> which does not depend on <rtems/libio.h> to
provide rtems_termios_device_context and rtems_termios_device_handler.
For polled serial device drivers, this removes a header file dependency
to the full file system support.
2023-05-31 10:07:17 +02:00
Sebastian Huber
49720a90d8 arm/xilinx-zynq: Improve Doxygen file comments 2023-05-26 06:56:11 +02:00
Sebastian Huber
bcef89f236 Update company name
The embedded brains GmbH & Co. KG is the legal successor of embedded
brains GmbH.
2023-05-20 11:05:26 +02:00
Joel Sherrill
d6ebf4067e bsps/shared/*: Change license to BSD-2
Updates #3053.
2022-06-15 12:35:18 -05:00
Joel Sherrill
9bf813c5f1 bsps/shared/: Scripted embedded brains header file clean up
Updates #4625.
2022-03-10 08:43:50 +01:00
Chris Johns
691d0edd34 arm/xilinx: Fix zynq-uart interrupt receive
- Trigger on a single character entering the RX FIFO

- Disable the RX timeout

- Send up to a FIFO full of data
2021-09-16 11:11:13 +10:00
Kinsey Moore
26d61c8670 bsps/zynq-uart: Make post baud change kick global
The existing fix for the ZynqMP UART hardware bug only caught the vast
majority of instances where it could occur. To fully fix the data
corruption, this fix must be applied after every baud rate change. This
makes the logic reset and kick apply in any locations where the baud
rate could be changed.
2021-06-29 11:42:06 -05:00
Kinsey Moore
3ea43bc9e7 bsps/xilinx-zynqmp: Avoid constant UART reinit
Constantly reinitializing the Cadence UART on every character output
causes data corruption/loss on some ZynqMP hardware. Only initialize
the UART once for early output and give it a kick on startup.
2021-04-19 10:51:02 -05:00
Jan Sommer
6ebf376bf2 bsps/shared: Allow setting baud rate for zynq uart 2021-03-05 19:06:25 +01:00
Kinsey Moore
5686b44d13 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.
2020-12-03 17:35:28 -06:00
Kinsey Moore
f0859573f9 bsps: Move zynq-uart to bsps/shared
This moves the zynq-uart driver from bsps/arm/shared to bsps/shared to
accomodate use by AArch64 BSPs.
2020-12-02 18:51:40 -06:00
Kinsey Moore
1c03649312 Move ARM PL011 UART driver
This UART driver is now needed for BSPs other than ARM.
2020-10-05 16:11:39 -05:00
G S Niteesh
5857e83cfc libchip/ns16550: Allow user calculate baud divisor
This patch will allow the user to pass a function to calculate
the baud divisor.
This will allow for more flexibility, since for some BSPs
like raspberrypi, the calculation of baud divisor is different
from what is in the current driver.
2020-02-16 16:55:20 +01:00
Joel Sherrill
90232bcf45 z85c30.c: Do not process 0 baud and return an error (CID 1399713) 2019-03-14 08:21:43 -05:00
Sebastian Huber
143c8d0d94 serial/ns16550: Fix precision clock synthesizer
The precision clock synthesizer support broke the driver on the QorIQ
P1020.  On this device the Alternate Function Register is accessed with
DLAB == 1 instead of the FIFO Control Register (FCR).  Restructure the
code to account for this.
2018-10-17 09:58:14 +02:00
Sebastian Huber
a7cd4b737c 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.
2018-08-01 11:13:58 +02:00
Sebastian Huber
8a78b784c4 serial/ns16550: Use standard register names
Use the standard register names for the divisor latches.  This makes it
easier to compare the code with other driver implementations.
2018-08-01 10:08:59 +02:00
Sebastian Huber
d7d66d7d45 bsps: Move console drivers to bsps
This patch is a part of the BSP source reorganization.

Update #3285.
2018-04-20 13:08:32 +02:00
Sebastian Huber
223e22f1ed bsps: Move uart-output-char.c to bsps
This patch is a part of the BSP source reorganization.

Update #3285.
2018-04-16 14:56:10 +02:00
Sebastian Huber
b43ea9fed2 bsps: Move legacy console driver to bsps
This patch is a part of the BSP source reorganization.

Update #3285.
2018-04-12 07:09:10 +02:00
Sebastian Huber
27de4e1fb8 bsps: Move libchip to bsps
This patch is a part of the BSP source reorganization.

Update #3285.
2018-04-04 10:13:28 +02:00