diff mbox series

[v1,1/1] serial: 8250: Preserve original value of DLF register

Message ID 20230628152135.56286-1-luoruihong@xiaomi.com
State Superseded
Headers show
Series [v1,1/1] serial: 8250: Preserve original value of DLF register | expand

Commit Message

Ruihong Luo June 28, 2023, 3:21 p.m. UTC
This commit is aimed at preserving the original value of the
DLF(Divisor Latch Fraction Register). When the DLF register is
modified without preservation, it can disrupt the baudrate settings
established by firmware or bootloader , leading to data corruption
and the generation of unreadable or distorted characters.

Signed-off-by: ruihongluo <luoruihong@xiaomi.com>
---
 drivers/tty/serial/8250/8250_dwlib.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Andy Shevchenko June 29, 2023, 9:20 a.m. UTC | #1
On Wed, Jun 28, 2023 at 11:21:37PM +0800, ruihongluo wrote:
> This commit is aimed at preserving the original value of the

"This commit is aimed at preserving the original..." -->
"Preserve the original..."

> DLF(Divisor Latch Fraction Register). When the DLF register is
> modified without preservation, it can disrupt the baudrate settings
> established by firmware or bootloader , leading to data corruption
> and the generation of unreadable or distorted characters.

You have From different to SoB. You need to fix this.
It can be done by setting corresponding values in the ~/.gitconfig
of your machine where you are making patches on.

Quick fix is to run

	git commit --amend --author="ruihongluo <luoruihong@xiaomi.com>"

and resend as a v2.

Code wise looks good to me, thank you for fixing this.
Perhaps it needs a Fixes tag, as

Fixes: 701c5e73b296 ("serial: 8250_dw: add fractional divisor support")

added before your SoB line. (Again, use `git commit --amend` to address
this.)

> Signed-off-by: ruihongluo <luoruihong@xiaomi.com>
> ---

Also don't forget to add a changelog here for v2 to describe your changes.
Andy Shevchenko June 29, 2023, 11:06 a.m. UTC | #2
On Thu, Jun 29, 2023 at 05:42:05PM +0800, ruihongluo wrote:
> This commit is aimed at preserving the original value of the
> DLF(Divisor Latch Fraction Register). When the DLF register is
> modified without preservation, it can disrupt the baudrate settings
> established by firmware or bootloader , leading to data corruption
> and the generation of unreadable or distorted characters.

> Fixes: 701c5e73b296 ("serial: 8250_dw: add fractional divisor support")
> 

To make it a tag you should avoid blank lines in the tag block.

> Signed-off-by: ruihongluo <luoruihong@xiaomi.com>
> ---
> v2:
> - added fixes tag

Actually not. See above.

And what about the  rest of the comments?

...

> Just wanted to drop a quick note to say thanks for your help with git
> send-email and code modifications.
> Your assistance on the details was much appreciated.

You're welcome!

> Ruihong Luo

This seems needs to be in your Git config:

$ cat ~/.gitconfig
[user]
	name = Ruihong Luo
	email = luoruihon@xiaomi.com
diff mbox series

Patch

diff --git a/drivers/tty/serial/8250/8250_dwlib.c b/drivers/tty/serial/8250/8250_dwlib.c
index 75f32f054ebb..d30957722da8 100644
--- a/drivers/tty/serial/8250/8250_dwlib.c
+++ b/drivers/tty/serial/8250/8250_dwlib.c
@@ -244,7 +244,7 @@  void dw8250_setup_port(struct uart_port *p)
 	struct dw8250_port_data *pd = p->private_data;
 	struct dw8250_data *data = to_dw8250_data(pd);
 	struct uart_8250_port *up = up_to_u8250p(p);
-	u32 reg;
+	u32 reg, orig;
 
 	pd->hw_rs485_support = dw8250_detect_rs485_hw(p);
 	if (pd->hw_rs485_support) {
@@ -270,9 +270,11 @@  void dw8250_setup_port(struct uart_port *p)
 	dev_dbg(p->dev, "Designware UART version %c.%c%c\n",
 		(reg >> 24) & 0xff, (reg >> 16) & 0xff, (reg >> 8) & 0xff);
 
+	/* Preserve value written by firmware or bootloader  */
+	orig = dw8250_readl_ext(p, DW_UART_DLF);
 	dw8250_writel_ext(p, DW_UART_DLF, ~0U);
 	reg = dw8250_readl_ext(p, DW_UART_DLF);
-	dw8250_writel_ext(p, DW_UART_DLF, 0);
+	dw8250_writel_ext(p, DW_UART_DLF, orig);
 
 	if (reg) {
 		pd->dlf_size = fls(reg);