[U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option

Michal Simek
2013-01-23T09:40:06Z

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
--
1.7.0.4