
CONFIG_ARM_DCC_MULTI should be also removed in the patch "serial: Remove CONFIG_SERIAL_MULTI from serial drivers" (sha1: a3827250606895ec2dd4b8d867342b7cabf3692f) Because the driver defines serial_* functions which cause conflict with serial.c (multiple definition of serial_*)
Removing CONFIG_SERIAL_MULTI function also require to define default_serial_console for cases where another serial driver is not available in the system.
Signed-off-by: Michal Simek michal.simek@xilinx.com --- Error log: serial.o: In function `serial_init': /mnt/projects/u-boot/drivers/serial/serial.c:402: multiple definition of `serial_init' arm_dcc.o:/mnt/projects/u-boot/drivers/serial/arm_dcc.c:104: first defined here serial.o: In function `serial_setbrg': /mnt/projects/u-boot/drivers/serial/serial.c:417: multiple definition of `serial_setbrg' arm_dcc.o:/mnt/projects/u-boot/drivers/serial/arm_dcc.c:94: first defined here serial.o: In function `serial_getc': /mnt/projects/u-boot/drivers/serial/serial.c:433: multiple definition of `serial_getc' arm_dcc.o:/mnt/projects/u-boot/drivers/serial/arm_dcc.c:112: first defined here serial.o: In function `serial_tstc': /mnt/projects/u-boot/drivers/serial/serial.c:448: multiple definition of `serial_tstc' arm_dcc.o:/mnt/projects/u-boot/drivers/serial/arm_dcc.c:145: first defined here serial.o: In function `serial_putc': /mnt/projects/u-boot/drivers/serial/serial.c:464: multiple definition of `serial_putc' arm_dcc.o:/mnt/projects/u-boot/drivers/serial/arm_dcc.c:124: first defined here serial.o: In function `serial_puts': /mnt/projects/u-boot/drivers/serial/serial.c:482: multiple definition of `serial_puts' arm_dcc.o:/mnt/projects/u-boot/drivers/serial/arm_dcc.c:136: first defined here
The second error log: /mnt/projects/u-boot/drivers/serial/serial.c:374: undefined reference to `default_serial_console' drivers/serial/libserial.o: In function `serial_initialize': --- common/stdio.c | 2 +- drivers/serial/arm_dcc.c | 16 +++++----------- include/stdio_dev.h | 2 +- 3 files changed, 7 insertions(+), 13 deletions(-)
diff --git a/common/stdio.c b/common/stdio.c index 97ff9cf..5d5117c 100644 --- a/common/stdio.c +++ b/common/stdio.c @@ -207,7 +207,7 @@ int stdio_init (void) /* Initialize the list */ INIT_LIST_HEAD(&(devs.list));
-#ifdef CONFIG_ARM_DCC_MULTI +#ifdef CONFIG_ARM_DCC drv_arm_dcc_init (); #endif #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) diff --git a/drivers/serial/arm_dcc.c b/drivers/serial/arm_dcc.c index 7b5ecb5..812dcf0 100644 --- a/drivers/serial/arm_dcc.c +++ b/drivers/serial/arm_dcc.c @@ -89,15 +89,6 @@
#define TIMEOUT_COUNT 0x4000000
-#ifndef CONFIG_ARM_DCC_MULTI -#define arm_dcc_init serial_init -void serial_setbrg(void) {} -#define arm_dcc_getc serial_getc -#define arm_dcc_putc serial_putc -#define arm_dcc_puts serial_puts -#define arm_dcc_tstc serial_tstc -#endif - int arm_dcc_init(void) { return 0; @@ -147,7 +138,6 @@ int arm_dcc_tstc(void) return reg; }
-#ifdef CONFIG_ARM_DCC_MULTI static struct stdio_dev arm_dcc_dev;
int drv_arm_dcc_init(void) @@ -167,4 +157,8 @@ int drv_arm_dcc_init(void)
return stdio_register(&arm_dcc_dev); } -#endif + +__weak struct serial_device *default_serial_console(void) +{ + return NULL; +} diff --git a/include/stdio_dev.h b/include/stdio_dev.h index 932d093..9451740 100644 --- a/include/stdio_dev.h +++ b/include/stdio_dev.h @@ -99,7 +99,7 @@ struct list_head* stdio_get_list(void); struct stdio_dev* stdio_get_by_name(const char* name); struct stdio_dev* stdio_clone(struct stdio_dev *dev);
-#ifdef CONFIG_ARM_DCC_MULTI +#ifdef CONFIG_ARM_DCC int drv_arm_dcc_init(void); #endif #ifdef CONFIG_LCD