[U-Boot] [PATCH 1/3] serial: push default_serial_console to drivers

Rather than sticking arch/board/driver specific logic in the common serial code, push it all out to the respective drivers. The serial drivers declare these funcs weak so that boards can still override things with their own definition.
Signed-off-by: Mike Frysinger vapier@gentoo.org CC: Heiko Schocher hs@denx.de CC: Anatolij Gustschin agust@denx.de CC: Tom Rix Tom.Rix@windriver.com CC: Minkyu Kang mk7.kang@samsung.com CC: Craig Nauman cnauman@diagraph.com CC: Prafulla Wadaskar prafulla@marvell.com CC: Mahavir Jain mjain@marvell.com --- note: while i've compiled tested all of these, i obviously can't runtime test them ... i have runtime tested the common code though on a Blackfin part ...
arch/powerpc/cpu/mpc512x/serial.c | 12 ++++++ arch/powerpc/cpu/mpc5xxx/serial.c | 6 +++ arch/powerpc/cpu/mpc8xx/serial.c | 10 +++++ board/logicpd/zoom2/zoom2_serial.c | 5 +++ common/serial.c | 68 ------------------------------------ drivers/serial/serial.c | 17 +++++++++ drivers/serial/serial_s3c24x0.c | 14 +++++++ drivers/serial/serial_s5p.c | 16 ++++++++ 8 files changed, 80 insertions(+), 68 deletions(-)
diff --git a/arch/powerpc/cpu/mpc512x/serial.c b/arch/powerpc/cpu/mpc512x/serial.c index cb5bbf0..558e4e2 100644 --- a/arch/powerpc/cpu/mpc512x/serial.c +++ b/arch/powerpc/cpu/mpc512x/serial.c @@ -30,6 +30,7 @@ */
#include <common.h> +#include <linux/compiler.h> #include <asm/io.h> #include <asm/processor.h> #include <serial.h> @@ -354,6 +355,17 @@ struct serial_device serial6_device = INIT_PSC_SERIAL_STRUCTURE(6, "psc6", "UART6"); #endif
+__weak struct serial_device *default_serial_console(void) +{ +#if (CONFIG_PSC_CONSOLE == 3) + return &serial3_device; +#elif (CONFIG_PSC_CONSOLE == 6) + return &serial6_device; +#else +#error "invalid CONFIG_PSC_CONSOLE" +#endif +} + #else
void serial_setbrg(void) diff --git a/arch/powerpc/cpu/mpc5xxx/serial.c b/arch/powerpc/cpu/mpc5xxx/serial.c index 0127065..0e1a8ec 100644 --- a/arch/powerpc/cpu/mpc5xxx/serial.c +++ b/arch/powerpc/cpu/mpc5xxx/serial.c @@ -34,6 +34,7 @@ */
#include <common.h> +#include <linux/compiler.h> #include <mpc5xxx.h>
#if defined (CONFIG_SERIAL_MULTI) @@ -348,6 +349,11 @@ struct serial_device serial0_device = serial0_puts, };
+__weak struct serial_device *default_serial_console(void) +{ + return &serial0_device; +} + struct serial_device serial1_device = { "serial1", diff --git a/arch/powerpc/cpu/mpc8xx/serial.c b/arch/powerpc/cpu/mpc8xx/serial.c index 9514c66..21803f5 100644 --- a/arch/powerpc/cpu/mpc8xx/serial.c +++ b/arch/powerpc/cpu/mpc8xx/serial.c @@ -26,6 +26,7 @@ #include <command.h> #include <serial.h> #include <watchdog.h> +#include <linux/compiler.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -673,6 +674,15 @@ struct serial_device serial_scc_device =
#endif /* CONFIG_8xx_CONS_SCCx */
+__weak struct serial_device *default_serial_console(void) +{ +#if defined(CONFIG_8xx_CONS_SMC1) || defined(CONFIG_8xx_CONS_SMC2) + return &serial_smc_device; +#else + return &serial_scc_device; +#endif +} + #ifdef CONFIG_MODEM_SUPPORT void disable_putc(void) { diff --git a/board/logicpd/zoom2/zoom2_serial.c b/board/logicpd/zoom2/zoom2_serial.c index fcfe624..74f165f 100644 --- a/board/logicpd/zoom2/zoom2_serial.c +++ b/board/logicpd/zoom2/zoom2_serial.c @@ -132,3 +132,8 @@ QUAD_INIT (0) QUAD_INIT (1) QUAD_INIT (2) QUAD_INIT (3) + +struct serial_device *default_serial_console(void) +{ + return ZOOM2_DEFAULT_SERIAL_DEVICE; +} diff --git a/common/serial.c b/common/serial.c index 8ebf9a5..505c2c6 100644 --- a/common/serial.c +++ b/common/serial.c @@ -30,74 +30,6 @@ DECLARE_GLOBAL_DATA_PTR; static struct serial_device *serial_devices = NULL; static struct serial_device *serial_current = NULL;
-#if !defined(CONFIG_LWMON) && !defined(CONFIG_PXA250) && !defined(CONFIG_PXA27X) -struct serial_device *__default_serial_console (void) -{ -#if defined(CONFIG_8xx_CONS_SMC1) || defined(CONFIG_8xx_CONS_SMC2) - return &serial_smc_device; -#elif defined(CONFIG_8xx_CONS_SCC1) || defined(CONFIG_8xx_CONS_SCC2) \ - || defined(CONFIG_8xx_CONS_SCC3) || defined(CONFIG_8xx_CONS_SCC4) - return &serial_scc_device; -#elif defined(CONFIG_4xx) \ - || defined(CONFIG_MB86R0x) || defined(CONFIG_MPC5xxx) \ - || defined(CONFIG_MPC83xx) || defined(CONFIG_MPC85xx) \ - || defined(CONFIG_MPC86xx) || defined(CONFIG_SYS_SC520) \ - || defined(CONFIG_TEGRA2) -#if defined(CONFIG_CONS_INDEX) && defined(CONFIG_SYS_NS16550_SERIAL) -#if (CONFIG_CONS_INDEX==1) - return &eserial1_device; -#elif (CONFIG_CONS_INDEX==2) - return &eserial2_device; -#elif (CONFIG_CONS_INDEX==3) - return &eserial3_device; -#elif (CONFIG_CONS_INDEX==4) - return &eserial4_device; -#else -#error "Bad CONFIG_CONS_INDEX." -#endif -#else - return &serial0_device; -#endif -#elif defined(CONFIG_MPC512X) -#if (CONFIG_PSC_CONSOLE == 3) - return &serial3_device; -#elif (CONFIG_PSC_CONSOLE == 6) - return &serial6_device; -#else -#error "Bad CONFIG_PSC_CONSOLE." -#endif -#elif defined(CONFIG_S3C2410) -#if defined(CONFIG_SERIAL1) - return &s3c24xx_serial0_device; -#elif defined(CONFIG_SERIAL2) - return &s3c24xx_serial1_device; -#elif defined(CONFIG_SERIAL3) - return &s3c24xx_serial2_device; -#else -#error "CONFIG_SERIAL? missing." -#endif -#elif defined(CONFIG_S5P) -#if defined(CONFIG_SERIAL0) - return &s5p_serial0_device; -#elif defined(CONFIG_SERIAL1) - return &s5p_serial1_device; -#elif defined(CONFIG_SERIAL2) - return &s5p_serial2_device; -#elif defined(CONFIG_SERIAL3) - return &s5p_serial3_device; -#else -#error "CONFIG_SERIAL? missing." -#endif -#elif defined(CONFIG_OMAP3_ZOOM2) - return ZOOM2_DEFAULT_SERIAL_DEVICE; -#else -#error No default console -#endif -} - -struct serial_device *default_serial_console(void) __attribute__((weak, alias("__default_serial_console"))); -#endif - int serial_register (struct serial_device *dev) { #ifdef CONFIG_NEEDS_MANUAL_RELOC diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index 4032dfd..4afdd41 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -22,6 +22,7 @@ */
#include <common.h> +#include <linux/compiler.h>
#include <ns16550.h> #ifdef CONFIG_NS87308 @@ -335,4 +336,20 @@ struct serial_device eserial3_device = DECLARE_ESERIAL_FUNCTIONS(4); struct serial_device eserial4_device = INIT_ESERIAL_STRUCTURE(4,"eserial3","EUART4"); + +__weak struct serial_device *default_serial_console(void) +{ +#if CONFIG_CONS_INDEX == 1 + return &eserial1_device; +#elif CONFIG_CONS_INDEX == 2 + return &eserial2_device; +#elif CONFIG_CONS_INDEX == 3 + return &eserial3_device; +#elif CONFIG_CONS_INDEX == 4 + return &eserial4_device; +#else +#error "Bad CONFIG_CONS_INDEX." +#endif +} + #endif /* CONFIG_SERIAL_MULTI */ diff --git a/drivers/serial/serial_s3c24x0.c b/drivers/serial/serial_s3c24x0.c index f42b15e..ec1fe80 100644 --- a/drivers/serial/serial_s3c24x0.c +++ b/drivers/serial/serial_s3c24x0.c @@ -19,6 +19,7 @@ */
#include <common.h> +#include <linux/compiler.h> #include <asm/arch/s3c24x0_cpu.h>
DECLARE_GLOBAL_DATA_PTR; @@ -316,4 +317,17 @@ INIT_S3C_SERIAL_STRUCTURE(1, "s3ser1", "S3UART2"); DECLARE_S3C_SERIAL_FUNCTIONS(2); struct serial_device s3c24xx_serial2_device = INIT_S3C_SERIAL_STRUCTURE(2, "s3ser2", "S3UART3"); + +__weak struct serial_device *default_serial_console(void) +{ +#if defined(CONFIG_SERIAL1) + return &s3c24xx_serial0_device; +#elif defined(CONFIG_SERIAL2) + return &s3c24xx_serial1_device; +#elif defined(CONFIG_SERIAL3) + return &s3c24xx_serial2_device; +#else +#error "CONFIG_SERIAL? missing." +#endif +} #endif /* CONFIG_SERIAL_MULTI */ diff --git a/drivers/serial/serial_s5p.c b/drivers/serial/serial_s5p.c index f1ffa29..6604aa9 100644 --- a/drivers/serial/serial_s5p.c +++ b/drivers/serial/serial_s5p.c @@ -22,6 +22,7 @@ */
#include <common.h> +#include <linux/compiler.h> #include <asm/io.h> #include <asm/arch/uart.h> #include <asm/arch/clk.h> @@ -205,3 +206,18 @@ struct serial_device s5p_serial2_device = DECLARE_S5P_SERIAL_FUNCTIONS(3); struct serial_device s5p_serial3_device = INIT_S5P_SERIAL_STRUCTURE(3, "s5pser3", "S5PUART3"); + +__weak struct serial_device *default_serial_console(void) +{ +#if defined(CONFIG_SERIAL0) + return &s5p_serial0_device; +#elif defined(CONFIG_SERIAL1) + return &s5p_serial1_device; +#elif defined(CONFIG_SERIAL2) + return &s5p_serial2_device; +#elif defined(CONFIG_SERIAL3) + return &s5p_serial3_device; +#else +#error "CONFIG_SERIAL? missing." +#endif +}

The serial_register function never fails (always return 0), so change it to a void function to avoid wasting overhead on it.
Signed-off-by: Mike Frysinger vapier@gentoo.org --- common/serial.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/common/serial.c b/common/serial.c index 505c2c6..bf77409 100644 --- a/common/serial.c +++ b/common/serial.c @@ -30,7 +30,7 @@ DECLARE_GLOBAL_DATA_PTR; static struct serial_device *serial_devices = NULL; static struct serial_device *serial_current = NULL;
-int serial_register (struct serial_device *dev) +void serial_register(struct serial_device *dev) { #ifdef CONFIG_NEEDS_MANUAL_RELOC dev->init += gd->reloc_off; @@ -43,8 +43,6 @@ int serial_register (struct serial_device *dev)
dev->next = serial_devices; serial_devices = dev; - - return 0; }
void serial_initialize (void)

Dear Mike Frysinger,
In message 1304136211-1316-2-git-send-email-vapier@gentoo.org you wrote:
The serial_register function never fails (always return 0), so change it to a void function to avoid wasting overhead on it.
Signed-off-by: Mike Frysinger vapier@gentoo.org
common/serial.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk

The multi serial support has a "ctlr" field which almost no one uses, but everyone is forced to set to useless strings. So punt it.
Funny enough, the only code that actually reads this field (the mpc8xx driver) has a typo where it meant to look for the SCC driver. Fix it while converting the check to use the name field.
Signed-off-by: Mike Frysinger vapier@gentoo.org CC: Heiko Schocher hs@denx.de CC: Anatolij Gustschin agust@denx.de CC: Tom Rix Tom.Rix@windriver.com CC: Minkyu Kang mk7.kang@samsung.com CC: Craig Nauman cnauman@diagraph.com CC: Marek Vasut marek.vasut@gmail.com CC: Prafulla Wadaskar prafulla@marvell.com CC: Mahavir Jain mjain@marvell.com --- note: while i've compiled tested all of these, i obviously can't runtime test them ... i have runtime tested the common code though on a Blackfin part ...
arch/powerpc/cpu/mpc512x/serial.c | 11 +++++------ arch/powerpc/cpu/mpc5xxx/serial.c | 2 -- arch/powerpc/cpu/mpc8xx/serial.c | 8 +++----- board/logicpd/zoom2/zoom2_serial.h | 2 -- drivers/serial/serial.c | 11 +++++------ drivers/serial/serial_pxa.c | 3 --- drivers/serial/serial_s3c24x0.c | 9 ++++----- drivers/serial/serial_s5p.c | 11 +++++------ include/serial.h | 2 -- 9 files changed, 22 insertions(+), 37 deletions(-)
diff --git a/arch/powerpc/cpu/mpc512x/serial.c b/arch/powerpc/cpu/mpc512x/serial.c index 558e4e2..5ee9cef 100644 --- a/arch/powerpc/cpu/mpc512x/serial.c +++ b/arch/powerpc/cpu/mpc512x/serial.c @@ -319,9 +319,8 @@ int serial_getcts_dev(unsigned int idx) serial_puts_dev(port, s); \ }
-#define INIT_PSC_SERIAL_STRUCTURE(port, name, bus) { \ +#define INIT_PSC_SERIAL_STRUCTURE(port, name) { \ name, \ - bus, \ serial##port##_init, \ serial##port##_uninit, \ serial##port##_setbrg, \ @@ -334,25 +333,25 @@ int serial_getcts_dev(unsigned int idx) #if defined(CONFIG_SYS_PSC1) DECLARE_PSC_SERIAL_FUNCTIONS(1); struct serial_device serial1_device = -INIT_PSC_SERIAL_STRUCTURE(1, "psc1", "UART1"); +INIT_PSC_SERIAL_STRUCTURE(1, "psc1"); #endif
#if defined(CONFIG_SYS_PSC3) DECLARE_PSC_SERIAL_FUNCTIONS(3); struct serial_device serial3_device = -INIT_PSC_SERIAL_STRUCTURE(3, "psc3", "UART3"); +INIT_PSC_SERIAL_STRUCTURE(3, "psc3"); #endif
#if defined(CONFIG_SYS_PSC4) DECLARE_PSC_SERIAL_FUNCTIONS(4); struct serial_device serial4_device = -INIT_PSC_SERIAL_STRUCTURE(4, "psc4", "UART4"); +INIT_PSC_SERIAL_STRUCTURE(4, "psc4"); #endif
#if defined(CONFIG_SYS_PSC6) DECLARE_PSC_SERIAL_FUNCTIONS(6); struct serial_device serial6_device = -INIT_PSC_SERIAL_STRUCTURE(6, "psc6", "UART6"); +INIT_PSC_SERIAL_STRUCTURE(6, "psc6"); #endif
__weak struct serial_device *default_serial_console(void) diff --git a/arch/powerpc/cpu/mpc5xxx/serial.c b/arch/powerpc/cpu/mpc5xxx/serial.c index 0e1a8ec..aa09f67 100644 --- a/arch/powerpc/cpu/mpc5xxx/serial.c +++ b/arch/powerpc/cpu/mpc5xxx/serial.c @@ -339,7 +339,6 @@ int serial1_tstc(void) struct serial_device serial0_device = { "serial0", - "UART0", serial0_init, NULL, serial0_setbrg, @@ -357,7 +356,6 @@ __weak struct serial_device *default_serial_console(void) struct serial_device serial1_device = { "serial1", - "UART1", serial1_init, NULL, serial1_setbrg, diff --git a/arch/powerpc/cpu/mpc8xx/serial.c b/arch/powerpc/cpu/mpc8xx/serial.c index 21803f5..9239b24 100644 --- a/arch/powerpc/cpu/mpc8xx/serial.c +++ b/arch/powerpc/cpu/mpc8xx/serial.c @@ -391,7 +391,6 @@ smc_tstc(void) struct serial_device serial_smc_device = { "serial_smc", - "SMC", smc_init, NULL, smc_setbrg, @@ -662,7 +661,6 @@ scc_tstc(void) struct serial_device serial_scc_device = { "serial_scc", - "SCC", scc_init, NULL, scc_setbrg, @@ -702,7 +700,7 @@ kgdb_serial_init(void) { int i = -1;
- if (strcmp(default_serial_console()->ctlr, "SMC") == 0) + if (strcmp(default_serial_console()->name, "serial_smc") == 0) { #if defined(CONFIG_8xx_CONS_SMC1) i = 1; @@ -710,7 +708,7 @@ kgdb_serial_init(void) i = 2; #endif } - else if (strcmp(default_serial_console()->ctlr, "SMC") == 0) + else if (strcmp(default_serial_console()->name, "serial_scc") == 0) { #if defined(CONFIG_8xx_CONS_SCC1) i = 1; @@ -725,7 +723,7 @@ kgdb_serial_init(void)
if (i >= 0) { - serial_printf("[on %s%d] ", default_serial_console()->ctlr, i); + serial_printf("[on %s%d] ", default_serial_console()->name, i); } }
diff --git a/board/logicpd/zoom2/zoom2_serial.h b/board/logicpd/zoom2/zoom2_serial.h index a6d2427..4e30587 100644 --- a/board/logicpd/zoom2/zoom2_serial.h +++ b/board/logicpd/zoom2/zoom2_serial.h @@ -33,7 +33,6 @@ extern int zoom2_debug_board_connected (void);
#define S(a) #a #define N(a) S(quad##a) -#define U(a) S(UART##a)
#define QUAD_INIT(n) \ int quad_init_##n(void) \ @@ -63,7 +62,6 @@ int quad_tstc_##n(void) \ struct serial_device zoom2_serial_device##n = \ { \ N(n), \ - U(n), \ quad_init_##n, \ NULL, \ quad_setbrg_##n, \ diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index 4afdd41..0d56e78 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -118,9 +118,8 @@ static NS16550_t serial_ports[4] = { serial_puts_dev(port, s);}
/* Serial device descriptor */ -#define INIT_ESERIAL_STRUCTURE(port,name,bus) {\ +#define INIT_ESERIAL_STRUCTURE(port, name) {\ name,\ - bus,\ eserial##port##_init,\ NULL,\ eserial##port##_setbrg,\ @@ -326,16 +325,16 @@ serial_setbrg(void)
DECLARE_ESERIAL_FUNCTIONS(1); struct serial_device eserial1_device = - INIT_ESERIAL_STRUCTURE(1,"eserial0","EUART1"); + INIT_ESERIAL_STRUCTURE(1, "eserial0"); DECLARE_ESERIAL_FUNCTIONS(2); struct serial_device eserial2_device = - INIT_ESERIAL_STRUCTURE(2,"eserial1","EUART2"); + INIT_ESERIAL_STRUCTURE(2, "eserial1"); DECLARE_ESERIAL_FUNCTIONS(3); struct serial_device eserial3_device = - INIT_ESERIAL_STRUCTURE(3,"eserial2","EUART3"); + INIT_ESERIAL_STRUCTURE(3, "eserial2"); DECLARE_ESERIAL_FUNCTIONS(4); struct serial_device eserial4_device = - INIT_ESERIAL_STRUCTURE(4,"eserial3","EUART4"); + INIT_ESERIAL_STRUCTURE(4, "eserial3");
__weak struct serial_device *default_serial_console(void) { diff --git a/drivers/serial/serial_pxa.c b/drivers/serial/serial_pxa.c index e457980..68469a4 100644 --- a/drivers/serial/serial_pxa.c +++ b/drivers/serial/serial_pxa.c @@ -268,7 +268,6 @@ static int ffuart_tstc(void) struct serial_device serial_ffuart_device = { "serial_ffuart", - "PXA", ffuart_init, NULL, ffuart_setbrg, @@ -313,7 +312,6 @@ static int btuart_tstc(void) struct serial_device serial_btuart_device = { "serial_btuart", - "PXA", btuart_init, NULL, btuart_setbrg, @@ -358,7 +356,6 @@ static int stuart_tstc(void) struct serial_device serial_stuart_device = { "serial_stuart", - "PXA", stuart_init, NULL, stuart_setbrg, diff --git a/drivers/serial/serial_s3c24x0.c b/drivers/serial/serial_s3c24x0.c index ec1fe80..49ede59 100644 --- a/drivers/serial/serial_s3c24x0.c +++ b/drivers/serial/serial_s3c24x0.c @@ -75,9 +75,8 @@ DECLARE_GLOBAL_DATA_PTR; serial_puts_dev(port, s); \ }
-#define INIT_S3C_SERIAL_STRUCTURE(port, name, bus) { \ +#define INIT_S3C_SERIAL_STRUCTURE(port, name) { \ name, \ - bus, \ s3serial##port##_init, \ NULL,\ s3serial##port##_setbrg, \ @@ -310,13 +309,13 @@ void serial_puts(const char *s) #if defined(CONFIG_SERIAL_MULTI) DECLARE_S3C_SERIAL_FUNCTIONS(0); struct serial_device s3c24xx_serial0_device = -INIT_S3C_SERIAL_STRUCTURE(0, "s3ser0", "S3UART1"); +INIT_S3C_SERIAL_STRUCTURE(0, "s3ser0"); DECLARE_S3C_SERIAL_FUNCTIONS(1); struct serial_device s3c24xx_serial1_device = -INIT_S3C_SERIAL_STRUCTURE(1, "s3ser1", "S3UART2"); +INIT_S3C_SERIAL_STRUCTURE(1, "s3ser1"); DECLARE_S3C_SERIAL_FUNCTIONS(2); struct serial_device s3c24xx_serial2_device = -INIT_S3C_SERIAL_STRUCTURE(2, "s3ser2", "S3UART3"); +INIT_S3C_SERIAL_STRUCTURE(2, "s3ser2");
__weak struct serial_device *default_serial_console(void) { diff --git a/drivers/serial/serial_s5p.c b/drivers/serial/serial_s5p.c index 6604aa9..6819bb0 100644 --- a/drivers/serial/serial_s5p.c +++ b/drivers/serial/serial_s5p.c @@ -183,9 +183,8 @@ int s5p_serial##port##_tstc(void) { return serial_tstc_dev(port); } \ void s5p_serial##port##_putc(const char c) { serial_putc_dev(c, port); } \ void s5p_serial##port##_puts(const char *s) { serial_puts_dev(s, port); }
-#define INIT_S5P_SERIAL_STRUCTURE(port, name, bus) { \ +#define INIT_S5P_SERIAL_STRUCTURE(port, name) { \ name, \ - bus, \ s5p_serial##port##_init, \ NULL, \ s5p_serial##port##_setbrg, \ @@ -196,16 +195,16 @@ void s5p_serial##port##_puts(const char *s) { serial_puts_dev(s, port); }
DECLARE_S5P_SERIAL_FUNCTIONS(0); struct serial_device s5p_serial0_device = - INIT_S5P_SERIAL_STRUCTURE(0, "s5pser0", "S5PUART0"); + INIT_S5P_SERIAL_STRUCTURE(0, "s5pser0"); DECLARE_S5P_SERIAL_FUNCTIONS(1); struct serial_device s5p_serial1_device = - INIT_S5P_SERIAL_STRUCTURE(1, "s5pser1", "S5PUART1"); + INIT_S5P_SERIAL_STRUCTURE(1, "s5pser1"); DECLARE_S5P_SERIAL_FUNCTIONS(2); struct serial_device s5p_serial2_device = - INIT_S5P_SERIAL_STRUCTURE(2, "s5pser2", "S5PUART2"); + INIT_S5P_SERIAL_STRUCTURE(2, "s5pser2"); DECLARE_S5P_SERIAL_FUNCTIONS(3); struct serial_device s5p_serial3_device = - INIT_S5P_SERIAL_STRUCTURE(3, "s5pser3", "S5PUART3"); + INIT_S5P_SERIAL_STRUCTURE(3, "s5pser3");
__weak struct serial_device *default_serial_console(void) { diff --git a/include/serial.h b/include/serial.h index f21d961..e6d3859 100644 --- a/include/serial.h +++ b/include/serial.h @@ -2,11 +2,9 @@ #define __SERIAL_H__
#define NAMESIZE 16 -#define CTLRSIZE 8
struct serial_device { char name[NAMESIZE]; - char ctlr[CTLRSIZE];
int (*init) (void); int (*uninit) (void);

Dear Mike Frysinger,
In message 1304136211-1316-3-git-send-email-vapier@gentoo.org you wrote:
The multi serial support has a "ctlr" field which almost no one uses, but everyone is forced to set to useless strings. So punt it.
Funny enough, the only code that actually reads this field (the mpc8xx driver) has a typo where it meant to look for the SCC driver. Fix it while converting the check to use the name field.
Signed-off-by: Mike Frysinger vapier@gentoo.org CC: Heiko Schocher hs@denx.de CC: Anatolij Gustschin agust@denx.de CC: Tom Rix Tom.Rix@windriver.com CC: Minkyu Kang mk7.kang@samsung.com CC: Craig Nauman cnauman@diagraph.com CC: Marek Vasut marek.vasut@gmail.com CC: Prafulla Wadaskar prafulla@marvell.com CC: Mahavir Jain mjain@marvell.com
note: while i've compiled tested all of these, i obviously can't runtime test them ... i have runtime tested the common code though on a Blackfin part ...
arch/powerpc/cpu/mpc512x/serial.c | 11 +++++------ arch/powerpc/cpu/mpc5xxx/serial.c | 2 -- arch/powerpc/cpu/mpc8xx/serial.c | 8 +++----- board/logicpd/zoom2/zoom2_serial.h | 2 -- drivers/serial/serial.c | 11 +++++------ drivers/serial/serial_pxa.c | 3 --- drivers/serial/serial_s3c24x0.c | 9 ++++----- drivers/serial/serial_s5p.c | 11 +++++------ include/serial.h | 2 -- 9 files changed, 22 insertions(+), 37 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk

Dear Mike Frysinger,
On 30 April 2011 13:03, Mike Frysinger vapier@gentoo.org wrote:
Rather than sticking arch/board/driver specific logic in the common serial code, push it all out to the respective drivers. The serial drivers declare these funcs weak so that boards can still override things with their own definition.
Signed-off-by: Mike Frysinger vapier@gentoo.org CC: Heiko Schocher hs@denx.de CC: Anatolij Gustschin agust@denx.de CC: Tom Rix Tom.Rix@windriver.com CC: Minkyu Kang mk7.kang@samsung.com CC: Craig Nauman cnauman@diagraph.com CC: Prafulla Wadaskar prafulla@marvell.com CC: Mahavir Jain mjain@marvell.com
note: while i've compiled tested all of these, i obviously can't runtime test them ... i have runtime tested the common code though on a Blackfin part ...
arch/powerpc/cpu/mpc512x/serial.c | 12 ++++++ arch/powerpc/cpu/mpc5xxx/serial.c | 6 +++ arch/powerpc/cpu/mpc8xx/serial.c | 10 +++++ board/logicpd/zoom2/zoom2_serial.c | 5 +++ common/serial.c | 68 ------------------------------------ drivers/serial/serial.c | 17 +++++++++ drivers/serial/serial_s3c24x0.c | 14 +++++++ drivers/serial/serial_s5p.c | 16 ++++++++ 8 files changed, 80 insertions(+), 68 deletions(-)
Tested on S5P based boards.
Tested-by: Minkyu Kang mk7.kang@samsung.com
Thanks Minkyu Kang

Dear Mike Frysinger,
In message 1304136211-1316-1-git-send-email-vapier@gentoo.org you wrote:
Rather than sticking arch/board/driver specific logic in the common serial code, push it all out to the respective drivers. The serial drivers declare these funcs weak so that boards can still override things with their own definition.
Signed-off-by: Mike Frysinger vapier@gentoo.org CC: Heiko Schocher hs@denx.de CC: Anatolij Gustschin agust@denx.de CC: Tom Rix Tom.Rix@windriver.com CC: Minkyu Kang mk7.kang@samsung.com CC: Craig Nauman cnauman@diagraph.com CC: Prafulla Wadaskar prafulla@marvell.com CC: Mahavir Jain mjain@marvell.com
note: while i've compiled tested all of these, i obviously can't runtime test them ... i have runtime tested the common code though on a Blackfin part ...
arch/powerpc/cpu/mpc512x/serial.c | 12 ++++++ arch/powerpc/cpu/mpc5xxx/serial.c | 6 +++ arch/powerpc/cpu/mpc8xx/serial.c | 10 +++++ board/logicpd/zoom2/zoom2_serial.c | 5 +++ common/serial.c | 68 ------------------------------------ drivers/serial/serial.c | 17 +++++++++ drivers/serial/serial_s3c24x0.c | 14 +++++++ drivers/serial/serial_s5p.c | 16 ++++++++ 8 files changed, 80 insertions(+), 68 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
participants (3)
-
Mike Frysinger
-
Minkyu Kang
-
Wolfgang Denk