Lwazi Dube
f3ddb3ffac
drivers/serial: Make the 16550 rx trigger level configurable
...
To avoid breaking other configs, the default value 2 is equal to the original
hard coded value.
2024-08-03 10:31:36 +08:00
hujun5
a4fece3450
spin_lock: inline spin_lock
...
test:
We can use qemu for testing.
compiling
make distclean -j20; ./tools/configure.sh -l qemu-armv8a:nsh_smp ;make -j20
running
qemu-system-aarch64 -cpu cortex-a53 -smp 4 -nographic -machine virt,virtualization=on,gic-version=3 -net none -chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline -kernel ./nuttx
2024-07-15 02:29:30 +08:00
hujun5
5cee996588
up_putc: int up_putc, enter_critical_section may be called
...
before kernel has been iniitialized,we use spin_lock_irqsave to replace.
Signed-off-by: hujun5 <hujun5@xiaomi.com>
2024-05-09 13:45:02 +08:00
chao an
d11b1ba9cb
drivers/serial/16550: remove unused function
...
drivers/serial/uart_16550.c:690:20: warning: unused function 'u16550_restoreuartint' [-Wunused-function]
static inline void u16550_restoreuartint(FAR struct u16550_s *priv,
^
Signed-off-by: chao an <anchao@lixiang.com>
2024-04-19 20:13:16 +08:00
Lee Lup Yuen
b2c1930825
serial/uart_16550: Wait before setting Line Control Register (Synopsys DesignWare 8250)
...
Some UART Controllers (Synopsys DesignWare 8250) will trigger spurious interrupts when the Line Control Register (LCR) is set while the UART is busy. This patch provides the option (16550_WAIT_LCR) to wait for UART until it's not busy, before setting the LCR. (16550_WAIT_LCR is disabled by default)
This patch fixes the spurious UART interrupts for the upcoming port of NuttX to StarFive JH7110 SoC (with Synopsys DesignWare 8250 UART). [The patch is explained here](https://lupyuen.github.io/articles/plic#appendix-fix-the-spurious-uart-interrupts )
drivers/serial/uart_16550.c: If 16550_WAIT_LCR is enabled, wait until UART is not busy before setting LCR
include/nuttx/serial/uart_16550.h: Define the UART Status Register (USR) for checking if UART is busy
drivers/serial/Kconfig-16550: Added option 16550_WAIT_LCR to 16550 UART Config, disabled by default
2023-08-03 08:38:07 +02:00
Xiang Xiao
87aa067ab3
serial/16550: Include nuttx/clk/clk.h
...
to avoid the build break when CONFIG_CLK is enabled
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2023-06-04 11:37:59 +03:00
zhanghu5
a043657323
dma support 16550 uart
...
Signed-off-by: zhanghu5 <zhanghu5@xiaomi.com>
2023-05-23 01:32:03 +08:00
hujun5
6da335cd81
driver/uart_16550: serial output can cause deadlock
...
All interrupts must be disabled to prevent re-entrancy and to prevent
interrupts from firing in the serial driver code.
Signed-off-by: hujun5 <hujun5@xiaomi.com>
2023-05-16 15:11:38 +08:00
Xiang Xiao
bc3e6c84e1
arch: Rename up_[early]serialinit to [arm64|riscv|x86_64][early]serialinit
...
The naming standard at:
https://cwiki.apache.org/confluence/display/NUTTX/Naming+of+Architecture%2C+MCU%2C+and+Board+Interfaces
requires that all MCU-private function begin with the name of the architecture, not up_.
follow the change from: https://github.com/apache/nuttx/pull/930
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2023-03-27 12:35:04 +03:00
Nathan Hartman
5f9cb6faf4
drivers/serial: Fix docstrings on UART interrupt handlers
2023-02-07 04:41:36 +08:00
Xiang Xiao
4c167b0729
Correct the code alignment
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-02-01 21:22:21 -03:00
Huang Qi
3d4be7089c
drivers/serial/uart_16550: Fix warning for format
...
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
2021-12-07 23:28:33 -06:00
Huang Qi
a24005b70b
drivers/serial: Fix offset calculation in 16550
...
Signed-off-by: Huang Qi <no1wudi@qq.com>
2021-12-05 07:02:40 -06:00
Xiang Xiao
2e54df0f35
Don't include assert.h from public header file
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2021-06-03 08:36:03 -07:00
Alin Jerpelea
e5b6305f4a
drivers: Author Gregory Nutt: update licenses to Apache
...
Gregory Nutt has submitted the SGA and we can migrate the licenses
to Apache.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2021-03-04 18:32:27 -08:00
zhongan
d5d6690ebc
drivers/serial/uart_16550.c: fix complie warning and writing style.
...
change argue type from 'uint32_t' to 'unsigned int' in fucntion
'u16550_receive'.
Signed-off-by: zhongan <zhongan@xiaomi.com>
2020-12-24 10:51:46 -06:00
Xiang Xiao
5c80b94820
Replace #include <semaphore.h> to #include <nuttx/semaphore.h>
...
Since the kernel side should call nxsem_xxx instead and remove the unused inclusion
2020-02-01 08:27:30 -06:00
Xiang Xiao
6a3c2aded6
Fix wait loop and void cast ( #24 )
...
* Simplify EINTR/ECANCEL error handling
1. Add semaphore uninterruptible wait function
2 .Replace semaphore wait loop with a single uninterruptible wait
3. Replace all sem_xxx to nxsem_xxx
* Unify the void cast usage
1. Remove void cast for function because many place ignore the returned value witout cast
2. Replace void cast for variable with UNUSED macro
2020-01-02 10:54:43 -06:00
Gregory Nutt
0d203fd535
drivers/serial: The upper half serial driver configuration CONFIG_SERIAL_DMA used to enable DMA on both RX and TX streams. This was replaced with CONFIG_SERIAL_RXDMA and CONFIG_SERIAKL_TXDMA which will permit supporting DMA on only one or both streams.
2019-04-24 12:11:40 -06:00
Gregory Nutt
7310fb7018
drivers/serial/uart_16550.c: Fix typo for UART1 flow field initialization
2019-01-27 10:57:41 -06:00
Xiang Xiao
c07ba1eac1
drivers/serial/uart_16550.c: Fix error: 'g_uart0port' undeclared.
2019-01-27 10:57:41 -06:00
ligd
5223d7a391
drivers/serial/uart_16550.c: Remove disabling of interrupts in up_earlyserialinit. up_irqinitialize() already disable all interrupts
2018-11-08 10:21:49 -06:00
zhangyuan7
a7d9d4bc1e
drivers/serial/uart_16550.c: Fox UART flow control issue. UART_MCR_RTS need be high even UART_MCR_AFCE is enabled
2018-11-08 10:21:16 -06:00
Gregory Nutt
8530fe0a7c
Update some comments.
2018-08-26 13:14:26 -06:00
Xiang Xiao
ead2c40cd4
Squashed commit of the following:
...
drivers/serial/uart_16550.c: Support 16550 auto hardware flow control
drivers/serial/uart_16550.c: Add configuration option CONFIG_16550_SUPRESS_INITIAL_CONFIG. This is identical to the standard configuration in arch/Kconfig CONFIG_SUPPRESS_UART_CONFIG, but with scope of only the 16550 driver.
2018-08-26 11:37:16 -06:00
anchao
fa08e69cca
drivers/serial/uart_16550.c: Add serial termios handling
2018-08-26 11:30:51 -06:00
Xiang Xiao
b426e35ed2
drivers/serial/uart_16550.c: Fix UART 16550 warning when disable HAVE_16550_CONSOLE.
2018-08-26 11:28:57 -06:00
ligd
1cbaae77cc
drivers/serial/uart_16550.c: Add stub implementations of DMA-related methods in the 16550 UART v-table.
2018-08-26 11:22:44 -06:00
Xiang Xiao
46e47c8dcf
Squashed commit of the following:
...
drivers/serial/uart_16550.c: Add a configuration, analogous to the STM32 configuration option, to suppress the NuttX standard re-ordering for /dev/ttySN for special case of the 16550 UART.
config/serial: UART 16550: Add CONFIG_SERIAL_UART_ARCH_MMIO option so the a memory mapped device doesn't need to provide uart_getreg() and uart_putreg() implementations.
u16550_txempty() should check UART_LSR_TEMT to avoid some data left in the transmit FIFO
2018-08-26 11:17:33 -06:00
Gregory Nutt
1567b82429
Make sure that labeling is used consistently in all function headers (part 2).
2018-02-01 12:03:55 -06:00
Gregory Nutt
8394f9b60f
Squashed commit of the following:
...
configs/z80sim and xtrs: Serial driver lower halfs ioctl methods should return a negated errno value, not set the errno variable.
drivers/wireless: CC1101 driver not permitted to set errno.
drivers/sensors: LIS331DL driver not permitted to set errno.
drivers/lcd: ILI9341 initialize method not permitted to set errno,
drivers/serial: 16550 UART driver IOCTL method must not set errno; it must return a negated errno value.
2017-09-30 12:59:33 -06:00
Gregory Nutt
e3c9e9e0b8
UART 16550: Missing left parenthesis in function prototype. This is Bitbucket Issue #41 .
2017-04-20 06:50:11 -06:00
Gregory Nutt
b4ff7391f8
Convert more drivers to use use irq_attach with argument.
2017-02-27 10:44:13 -06:00
Mark Schulte
b3222bbc8a
irq_dispatch: Add argument pointer to irq_dispatch
...
Provide a user defined callback context for irq's, such that when
registering a callback users can provide a pointer that will get
passed back when the isr is called.
2017-02-27 06:27:56 -06:00
Gregory Nutt
08c001196b
drivers/: Remove all explicit use of 'hidden' macro _info. Code must never use this directly. Code must always use a debug macro such as info which is basic on _info but can be appropriately filtered.
2017-01-15 13:00:50 -06:00
Heath Petersen
dc72e16625
handle when CONFIG_SERIAL_UART_ARCH_IOCTL is not enabled
2016-07-12 06:50:58 +00:00
Gregory Nutt
0c8c7fecf0
Add _ to the beginning of all debug macros to avoid name collisions
2016-06-16 12:33:32 -06:00
Gregory Nutt
efb02f2ef1
drivers/: Change some nerr() ERRORS to nwarn() WARNINGS. Anomolous network evernts are not errors.
2016-06-12 08:31:22 -06:00
Gregory Nutt
a1469a3e95
Add CONFIG_DEBUG_ERROR. Change names of *dbg() * *err()
2016-06-11 15:50:49 -06:00
Gregory Nutt
fc3540cffe
Replace all occurrences of vdbg with vinfo
2016-06-11 11:59:51 -06:00
Gregory Nutt
050f544782
Fix typo in variable name in serial BREAK logic. Review other serial implementations for similar naming problems.
2016-05-05 11:30:47 -06:00
Gregory Nutt
0fb035f76b
Standardize some naming in code section comments
2016-02-21 18:09:04 -06:00
Gregory Nutt
2244ed46bc
nuttx/drivers: Replace irqsave() with enter_critical_section(); replace irqrestore() with leave_critical_section()
2016-02-14 07:32:58 -06:00
Gregory Nutt
cf14f8d1b5
drivers/: Fixes to spacing and alignement
2015-10-10 10:41:00 -06:00
Gregory Nutt
0b12dbf95d
Fix some spacing problems
2015-10-04 15:04:00 -06:00
Anton D. Kachalov
1bb74504a8
Add support for custom platform IOCTL on UART
...
Signed-off-by: Anton D. Kachalov <mouse@yandex-team.ru>
2015-08-03 15:32:51 +03:00
Anton D. Kachalov
a07ed262b4
Revert "Two more places there THRE is used with inverted sense"
...
Signed-off-by: Anton D. Kachalov <mouse@yandex-team.ru>
2015-08-03 13:21:01 +03:00
Anton D. Kachalov
2fa6237b49
Revert THRNE-patch. The problem was in u16550_putc
...
Regarding to:
https://github.com/tanzilli/ariag25-linux-2.6.39/blob/ariag25/drivers/tty/serial/8250.c#L1584
https://github.com/tanzilli/ariag25-linux-2.6.39/blob/ariag25/drivers/tty/serial/8250.c#L1913
When UART_LSR_THRE bit is set, then we ready to transmit more.
Current u16550_putc loops while UART_LSR_THRE bit is set. This logic have to be inverted.
Signed-off-by: Anton D. Kachalov <mouse@yandex-team.ru>
2015-08-03 13:19:55 +03:00
Anton D. Kachalov
274b7986be
[drivers/serial/uart_16550] Typo fix in data bits setup
...
Signed-off-by: Anton D. Kachalov <mouse@yandex-team.ru>
2015-07-31 20:19:54 +03:00
Gregory Nutt
fb82061bf7
Two more places there THRE is used with inverted sense
2015-07-29 20:42:49 -06:00