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>
This commit is contained in:
parent
2ca1dd6efe
commit
2fa6237b49
@ -337,18 +337,7 @@ config 16550_ADDRWIDTH
|
||||
---help---
|
||||
The bit width of registers. Options are 8, 16, or 32. Default: 8
|
||||
|
||||
config 16550_THRNE
|
||||
bool "Use THRNE"
|
||||
default n if !ARCH_CHIP_MOXART
|
||||
default y if ARCH_CHIP_MOXART
|
||||
---help---
|
||||
The 16550 UART has a bit in the line status register, THRE, that
|
||||
indicates that the Transmit Holding Register (THR) is Empty (N).
|
||||
This bit is inverted in at least one variant (the moxART SoC).
|
||||
In that case, this setting must be included to use this bit as
|
||||
THR *Not* Empty (THRNE).
|
||||
|
||||
endif # 16550_UART
|
||||
endif
|
||||
|
||||
#
|
||||
# MCU serial peripheral driver?
|
||||
|
@ -1065,11 +1065,7 @@ static bool u16550_txempty(struct uart_dev_s *dev)
|
||||
|
||||
static void u16550_putc(struct u16550_s *priv, int ch)
|
||||
{
|
||||
#ifdef CONFIG_16550_THRNE
|
||||
while ((u16550_serialin(priv, UART_LSR_OFFSET) & UART_LSR_THRNE) == 0);
|
||||
#else
|
||||
while ((u16550_serialin(priv, UART_LSR_OFFSET) & UART_LSR_THRE) != 0);
|
||||
#endif
|
||||
while ((u16550_serialin(priv, UART_LSR_OFFSET) & UART_LSR_THRE) == 0);
|
||||
u16550_serialout(priv, UART_THR_OFFSET, (uart_datawidth_t)ch);
|
||||
}
|
||||
|
||||
|
@ -299,11 +299,7 @@
|
||||
#define UART_LSR_PE (1 << 2) /* Bit 2: Parity Error */
|
||||
#define UART_LSR_FE (1 << 3) /* Bit 3: Framing Error */
|
||||
#define UART_LSR_BI (1 << 4) /* Bit 4: Break Interrupt */
|
||||
#ifdef CONFIG_16550_THRNE
|
||||
# define UART_LSR_THRNE (1 << 5) /* Bit 5: Transmitter Holding Register Not Empty */
|
||||
#else
|
||||
# define UART_LSR_THRE (1 << 5) /* Bit 5: Transmitter Holding Register Empty */
|
||||
#endif
|
||||
#define UART_LSR_THRE (1 << 5) /* Bit 5: Transmitter Holding Register Empty */
|
||||
#define UART_LSR_TEMT (1 << 6) /* Bit 6: Transmitter Empty */
|
||||
#define UART_LSR_RXFE (1 << 7) /* Bit 7: Error in RX FIFO (RXFE) */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user