public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] serial: CONFIG_ARM_DCC_MULTI failures
@ 2013-01-23  9:40 Michal Simek
  2013-01-23  9:40 ` [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option Michal Simek
  2013-01-23  9:40 ` [U-Boot] [PATCH 2/2] serial: arm_dcc: Fix compilation warning and remove unneeded initialization Michal Simek
  0 siblings, 2 replies; 9+ messages in thread
From: Michal Simek @ 2013-01-23  9:40 UTC (permalink / raw)
  To: u-boot

Hi Marek and others,

I have found that in uboot is arm-dcc driver (drivers/serial/arm_dcc.c)
which is
1. not compiled by any configuration
2. when it is enabled is causing compilation failures because of SERIAL_MULTI removal

The problem is with this code.

#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

It means that CONFIG_ARM_DCC_MULTI should be always enabled and we
can remove this option entirely. 

Then there is missing default_serial_console() if there is no
another serial driver.

Also I am sending the second patch which fix compilation warning.

Thanks,
Michal

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option
  2013-01-23  9:40 [U-Boot] serial: CONFIG_ARM_DCC_MULTI failures Michal Simek
@ 2013-01-23  9:40 ` Michal Simek
  2013-01-23 10:02   ` Wolfgang Denk
                     ` (2 more replies)
  2013-01-23  9:40 ` [U-Boot] [PATCH 2/2] serial: arm_dcc: Fix compilation warning and remove unneeded initialization Michal Simek
  1 sibling, 3 replies; 9+ messages in thread
From: Michal Simek @ 2013-01-23  9:40 UTC (permalink / raw)
  To: u-boot

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

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 2/2] serial: arm_dcc: Fix compilation warning and remove unneeded initialization
  2013-01-23  9:40 [U-Boot] serial: CONFIG_ARM_DCC_MULTI failures Michal Simek
  2013-01-23  9:40 ` [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option Michal Simek
@ 2013-01-23  9:40 ` Michal Simek
  2013-01-26  5:44   ` Marek Vasut
  1 sibling, 1 reply; 9+ messages in thread
From: Michal Simek @ 2013-01-23  9:40 UTC (permalink / raw)
  To: u-boot

- arm_dcc_dev is already initialized.
- Remove unused rc variable
Warning log:
arm_dcc.c: In function 'drv_arm_dcc_init':
arm_dcc.c:145:6: warning: unused variable 'rc' [-Wunused-variable]

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---
 drivers/serial/arm_dcc.c |    5 -----
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/drivers/serial/arm_dcc.c b/drivers/serial/arm_dcc.c
index 812dcf0..c217c88 100644
--- a/drivers/serial/arm_dcc.c
+++ b/drivers/serial/arm_dcc.c
@@ -142,11 +142,6 @@ static struct stdio_dev arm_dcc_dev;
 
 int drv_arm_dcc_init(void)
 {
-	int rc;
-
-	/* Device initialization */
-	memset(&arm_dcc_dev, 0, sizeof(arm_dcc_dev));
-
 	strcpy(arm_dcc_dev.name, "dcc");
 	arm_dcc_dev.ext = 0;	/* No extensions */
 	arm_dcc_dev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_OUTPUT;
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option
  2013-01-23  9:40 ` [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option Michal Simek
@ 2013-01-23 10:02   ` Wolfgang Denk
  2013-01-23 10:20     ` Michal Simek
  2013-01-26  5:43   ` Marek Vasut
  2013-02-04 16:40   ` [U-Boot] [U-Boot, " Tom Rini
  2 siblings, 1 reply; 9+ messages in thread
From: Wolfgang Denk @ 2013-01-23 10:02 UTC (permalink / raw)
  To: u-boot

Dear Michal Simek,

In message <1358934007-14928-2-git-send-email-michal.simek@xilinx.com> you wrote:
> 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.

As you pointed out in the cover letter, CONFIG_ARM_DCC and
CONFIG_ARM_DCC_MULTI are nowhere defined in any mainline U-Boot code.
Instead of fixing and keeping the dead code, we should rather remove
the drivers/serial/arm_dcc.c driver and all references to
CONFIG_ARM_DCC*

If you want, I can prepare a cleanup patch.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Q:  Do you know what the death rate around here is?
A:  One per person.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option
  2013-01-23 10:02   ` Wolfgang Denk
@ 2013-01-23 10:20     ` Michal Simek
  0 siblings, 0 replies; 9+ messages in thread
From: Michal Simek @ 2013-01-23 10:20 UTC (permalink / raw)
  To: u-boot

Dear Wolfgang Denk,

2013/1/23 Wolfgang Denk <wd@denx.de>:
> Dear Michal Simek,
>
> In message <1358934007-14928-2-git-send-email-michal.simek@xilinx.com> you wrote:
>> 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.
>
> As you pointed out in the cover letter, CONFIG_ARM_DCC and
> CONFIG_ARM_DCC_MULTI are nowhere defined in any mainline U-Boot code.
> Instead of fixing and keeping the dead code, we should rather remove
> the drivers/serial/arm_dcc.c driver and all references to
> CONFIG_ARM_DCC*
>
> If you want, I can prepare a cleanup patch.

I have found that we are using this driver for one board.
That's why I prefer to keep this driver in the mainline and enabling
it for arm zynq.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option
  2013-01-23  9:40 ` [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option Michal Simek
  2013-01-23 10:02   ` Wolfgang Denk
@ 2013-01-26  5:43   ` Marek Vasut
  2013-01-28 10:52     ` Michal Simek
  2013-02-04 16:40   ` [U-Boot] [U-Boot, " Tom Rini
  2 siblings, 1 reply; 9+ messages in thread
From: Marek Vasut @ 2013-01-26  5:43 UTC (permalink / raw)
  To: u-boot

Dear Michal Simek,

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

I think it looks good.

Acked-by: Marek Vasut <marex@denx.de>

btw. did I by any chance became serial subsystem custodian without knowing about 
it recently? ;-)

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 2/2] serial: arm_dcc: Fix compilation warning and remove unneeded initialization
  2013-01-23  9:40 ` [U-Boot] [PATCH 2/2] serial: arm_dcc: Fix compilation warning and remove unneeded initialization Michal Simek
@ 2013-01-26  5:44   ` Marek Vasut
  0 siblings, 0 replies; 9+ messages in thread
From: Marek Vasut @ 2013-01-26  5:44 UTC (permalink / raw)
  To: u-boot

Dear Michal Simek,

> - arm_dcc_dev is already initialized.
> - Remove unused rc variable
> Warning log:
> arm_dcc.c: In function 'drv_arm_dcc_init':
> arm_dcc.c:145:6: warning: unused variable 'rc' [-Wunused-variable]
> 
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>

Acked-by: Marek Vasut <marex@denx.de>

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option
  2013-01-26  5:43   ` Marek Vasut
@ 2013-01-28 10:52     ` Michal Simek
  0 siblings, 0 replies; 9+ messages in thread
From: Michal Simek @ 2013-01-28 10:52 UTC (permalink / raw)
  To: u-boot

2013/1/26 Marek Vasut <marex@denx.de>:
> Dear Michal Simek,
>
>> 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>
>
> I think it looks good.
>
> Acked-by: Marek Vasut <marex@denx.de>

Thanks,
Michal



-- 
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [U-Boot, 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option
  2013-01-23  9:40 ` [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option Michal Simek
  2013-01-23 10:02   ` Wolfgang Denk
  2013-01-26  5:43   ` Marek Vasut
@ 2013-02-04 16:40   ` Tom Rini
  2 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2013-02-04 16:40 UTC (permalink / raw)
  To: u-boot

On Tue, Jan 22, 2013 at 11:40:06PM -0000, Michal Simek wrote:

> 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>
> Acked-by: Marek Vasut <marex@denx.de>

Applied to u-boot/master (along with 2/2), thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130204/8c36ee2b/attachment.pgp>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-02-04 16:40 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-23  9:40 [U-Boot] serial: CONFIG_ARM_DCC_MULTI failures Michal Simek
2013-01-23  9:40 ` [U-Boot] [PATCH 1/2] serial: arm_dcc: Remove CONFIG_ARM_DCC_MULTI option Michal Simek
2013-01-23 10:02   ` Wolfgang Denk
2013-01-23 10:20     ` Michal Simek
2013-01-26  5:43   ` Marek Vasut
2013-01-28 10:52     ` Michal Simek
2013-02-04 16:40   ` [U-Boot] [U-Boot, " Tom Rini
2013-01-23  9:40 ` [U-Boot] [PATCH 2/2] serial: arm_dcc: Fix compilation warning and remove unneeded initialization Michal Simek
2013-01-26  5:44   ` Marek Vasut

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox