diff mbox series

MIPS: pic32: treat port as signed integer

Message ID 20221028132344.1993934-1-Jason@zx2c4.com (mailing list archive)
State Accepted
Commit 648060902aa302331b5d6e4f26d8ee0761d239ab
Headers show
Series MIPS: pic32: treat port as signed integer | expand

Commit Message

Jason A. Donenfeld Oct. 28, 2022, 1:23 p.m. UTC
get_port_from_cmdline() returns an int, yet is assigned to a char, which
is wrong in its own right, but also, with char becoming unsigned, this
poses problems, because -1 is used as an error value. Further
complicating things, fw_init_early_console() is only ever called with a
-1 argument. Fix this up by removing the unused argument from
fw_init_early_console() and treating port as a proper signed integer.

Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
---
Thomas - this is part of the -funsigned-char work I've been accumulating
in my unsigned-char branch. If you want to take this as a fix for 6.1,
go ahead. Otherwise, Linus asked me to keep the 6.2 unsigned-char
patches together in my branch, so I'll take this, pending your Ack.
-Jason

 arch/mips/include/asm/fw/fw.h             |  2 +-
 arch/mips/pic32/pic32mzda/early_console.c | 13 ++++++-------
 arch/mips/pic32/pic32mzda/init.c          |  2 +-
 3 files changed, 8 insertions(+), 9 deletions(-)

Comments

Thomas Bogendoerfer Nov. 11, 2022, 3:05 p.m. UTC | #1
On Fri, Oct 28, 2022 at 03:23:44PM +0200, Jason A. Donenfeld wrote:
> get_port_from_cmdline() returns an int, yet is assigned to a char, which
> is wrong in its own right, but also, with char becoming unsigned, this
> poses problems, because -1 is used as an error value. Further
> complicating things, fw_init_early_console() is only ever called with a
> -1 argument. Fix this up by removing the unused argument from
> fw_init_early_console() and treating port as a proper signed integer.
> 
> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> ---
> Thomas - this is part of the -funsigned-char work I've been accumulating
> in my unsigned-char branch. If you want to take this as a fix for 6.1,
> go ahead. Otherwise, Linus asked me to keep the 6.2 unsigned-char
> patches together in my branch, so I'll take this, pending your Ack.
> -Jason
> 
>  arch/mips/include/asm/fw/fw.h             |  2 +-
>  arch/mips/pic32/pic32mzda/early_console.c | 13 ++++++-------
>  arch/mips/pic32/pic32mzda/init.c          |  2 +-
>  3 files changed, 8 insertions(+), 9 deletions(-)

applied to mips-fixes.

Thomas.
diff mbox series

Patch

diff --git a/arch/mips/include/asm/fw/fw.h b/arch/mips/include/asm/fw/fw.h
index d0ef8b4892bb..d0494ce4b337 100644
--- a/arch/mips/include/asm/fw/fw.h
+++ b/arch/mips/include/asm/fw/fw.h
@@ -26,6 +26,6 @@  extern char *fw_getcmdline(void);
 extern void fw_meminit(void);
 extern char *fw_getenv(char *name);
 extern unsigned long fw_getenvl(char *name);
-extern void fw_init_early_console(char port);
+extern void fw_init_early_console(void);
 
 #endif /* __ASM_FW_H_ */
diff --git a/arch/mips/pic32/pic32mzda/early_console.c b/arch/mips/pic32/pic32mzda/early_console.c
index 25372e62783b..3cd1b408fa1c 100644
--- a/arch/mips/pic32/pic32mzda/early_console.c
+++ b/arch/mips/pic32/pic32mzda/early_console.c
@@ -27,7 +27,7 @@ 
 #define U_BRG(x)	(UART_BASE(x) + 0x40)
 
 static void __iomem *uart_base;
-static char console_port = -1;
+static int console_port = -1;
 
 static int __init configure_uart_pins(int port)
 {
@@ -47,7 +47,7 @@  static int __init configure_uart_pins(int port)
 	return 0;
 }
 
-static void __init configure_uart(char port, int baud)
+static void __init configure_uart(int port, int baud)
 {
 	u32 pbclk;
 
@@ -60,7 +60,7 @@  static void __init configure_uart(char port, int baud)
 		     uart_base + PIC32_SET(U_STA(port)));
 }
 
-static void __init setup_early_console(char port, int baud)
+static void __init setup_early_console(int port, int baud)
 {
 	if (configure_uart_pins(port))
 		return;
@@ -130,16 +130,15 @@  static int __init get_baud_from_cmdline(char *arch_cmdline)
 	return baud;
 }
 
-void __init fw_init_early_console(char port)
+void __init fw_init_early_console(void)
 {
 	char *arch_cmdline = pic32_getcmdline();
-	int baud = -1;
+	int baud, port;
 
 	uart_base = ioremap(PIC32_BASE_UART, 0xc00);
 
 	baud = get_baud_from_cmdline(arch_cmdline);
-	if (port == -1)
-		port = get_port_from_cmdline(arch_cmdline);
+	port = get_port_from_cmdline(arch_cmdline);
 
 	if (port == -1)
 		port = EARLY_CONSOLE_PORT;
diff --git a/arch/mips/pic32/pic32mzda/init.c b/arch/mips/pic32/pic32mzda/init.c
index 08c46cf122d7..53b227a9074c 100644
--- a/arch/mips/pic32/pic32mzda/init.c
+++ b/arch/mips/pic32/pic32mzda/init.c
@@ -47,7 +47,7 @@  void __init plat_mem_setup(void)
 		strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
 
 #ifdef CONFIG_EARLY_PRINTK
-	fw_init_early_console(-1);
+	fw_init_early_console();
 #endif
 	pic32_config_init();
 }