Skip to contentSkip to conversation

Revert "serial: ns16550: fix debug uart putc called before init"

PATCH In review Simon Goldschmidt 4 participants 5 messages Dec 3, 2018 – Dec 4, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Revert "serial: ns16550: fix debug uart putc called before init"

This reverts commit 6f57c34473d37b8da5e6a3764d0d377d748aeef1 since it does not seem to work at least on rk3399.

The Rockchip Technical Reference Manual (TRM) for the rk3399 says the baud rate prescaler register is readable only when USR[0] is zero. Since this bit is defined as "reserved" in the socfpga cylcone5 TRM, let's rather drop this than making the ns16550 debug uart more platform specific.

---

 drivers/serial/ns16550.c | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)
drivers/serial/ns16550.c +2 -16
index f21c240e64..25b9d17243 100644
@@ -272,26 +272,12 @@ static inline void _debug_uart_init(void)
 	serial_dout(&com_port->lcr, UART_LCRVAL);
 }
 
-static inline int NS16550_read_baud_divisor(struct NS16550 *com_port)
-{
-	int ret;
-
-	serial_dout(&com_port->lcr, UART_LCR_BKSE | UART_LCRVAL);
-	ret = serial_din(&com_port->dll) & 0xff;
-	ret |= (serial_din(&com_port->dlm) & 0xff) << 8;
-	serial_dout(&com_port->lcr, UART_LCRVAL);
-
-	return ret;
-}
-
 static inline void _debug_uart_putc(int ch)
 {
 	struct NS16550 *com_port = (struct NS16550 *)CONFIG_DEBUG_UART_BASE;
 
-	while (!(serial_din(&com_port->lsr) & UART_LSR_THRE)) {
-		if (!NS16550_read_baud_divisor(com_port))
-			return;
-	}
+	while (!(serial_din(&com_port->lsr) & UART_LSR_THRE))
+		;
 	serial_dout(&com_port->thr, ch);
 }
 
Signature · 1 line
2.17.1
#1 lore raw

PATCH 1/1 Revert "serial: ns16550: fix debug uart putc called before init"

Quoted 7 lines · Simon Goldschmidt

This reverts commit 6f57c34473d37b8da5e6a3764d0d377d748aeef1 since it does not seem to work at least on rk3399.

Quoted 7 lines

The Rockchip Technical Reference Manual (TRM) for the rk3399 says the baud rate prescaler register is readable only when USR[0] is zero. Since this bit is defined as "reserved" in the socfpga cylcone5 TRM, let's rather drop this than making the ns16550 debug uart more platform specific.

#2 lore raw

PATCH 1/1 Revert "serial: ns16550: fix debug uart putc called before init"

Quoted 12 lines · Philipp Tomsich
Quoted 12 lines · Simon Goldschmidt

This reverts commit 6f57c34473d37b8da5e6a3764d0d377d748aeef1 since it does not seem to work at least on rk3399.

The Rockchip Technical Reference Manual (TRM) for the rk3399 says the baud rate prescaler register is readable only when USR[0] is zero. Since this bit is defined as "reserved" in the socfpga cylcone5 TRM, let's rather drop this than making the ns16550 debug uart more platform specific.

Quoted 4 lines
Quoted 2 lines

Thanks, I will apply this before release.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181203/fc0f88fa/attachment.sig>
#3 lore raw

PATCH 1/1 Revert "serial: ns16550: fix debug uart putc called before init"

In reply to Simon Goldschmidt

Hi Simon,

Quoted 10 lines · Simon Goldschmidt

This reverts commit 6f57c34473d37b8da5e6a3764d0d377d748aeef1 since it does not seem to work at least on rk3399.

The Rockchip Technical Reference Manual (TRM) for the rk3399 says the baud rate prescaler register is readable only when USR[0] is zero. Since this bit is defined as "reserved" in the socfpga cylcone5 TRM, let's rather drop this than making the ns16550 debug uart more platform specific.

Thanks,
- Kever

Quoted 38 lines

---

 drivers/serial/ns16550.c | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)
drivers/serial/ns16550.c +2 -16
index f21c240e64..25b9d17243 100644
@@ -272,26 +272,12 @@ static inline void _debug_uart_init(void)
 	serial_dout(&com_port->lcr, UART_LCRVAL);
 }
 
-static inline int NS16550_read_baud_divisor(struct NS16550 *com_port)
-{
-	int ret;
-
-	serial_dout(&com_port->lcr, UART_LCR_BKSE | UART_LCRVAL);
-	ret = serial_din(&com_port->dll) & 0xff;
-	ret |= (serial_din(&com_port->dlm) & 0xff) << 8;
-	serial_dout(&com_port->lcr, UART_LCRVAL);
-
-	return ret;
-}
-
 static inline void _debug_uart_putc(int ch)
 {
 	struct NS16550 *com_port = (struct NS16550 *)CONFIG_DEBUG_UART_BASE;
 
-	while (!(serial_din(&com_port->lsr) & UART_LSR_THRE)) {
-		if (!NS16550_read_baud_divisor(com_port))
-			return;
-	}
+	while (!(serial_din(&com_port->lsr) & UART_LSR_THRE))
+		;
 	serial_dout(&com_port->thr, ch);
 }
 
#4 lore raw
In reply to Simon Goldschmidt
Quoted 11 lines · Simon Goldschmidt

This reverts commit 6f57c34473d37b8da5e6a3764d0d377d748aeef1 since it does not seem to work at least on rk3399.

The Rockchip Technical Reference Manual (TRM) for the rk3399 says the baud rate prescaler register is readable only when USR[0] is zero. Since this bit is defined as "reserved" in the socfpga cylcone5 TRM, let's rather drop this than making the ns16550 debug uart more platform specific.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20181203/0ed8582d/attachment.sig>