Re: [U-Boot] Cache alignment warnings on Tegra (ARM)

2012-09-16 Thread Thierry Reding
On Sat, Sep 15, 2012 at 07:45:30PM -0700, Simon Glass wrote:
 Hi,
 
 On Sat, Sep 15, 2012 at 1:41 PM, Thierry Reding
 thierry.red...@avionic-design.de wrote:
  On Sat, Sep 15, 2012 at 10:11:54PM +0200, Marek Vasut wrote:
  Dear Thierry Reding,
 
   On Fri, Sep 14, 2012 at 08:53:32AM -0700, Simon Glass wrote:
Hi,
   
On Wed, Sep 12, 2012 at 4:42 PM, Marek Vasut ma...@denx.de wrote:
 Dear Stephen Warren,

 On 09/12/2012 04:38 PM, Marek Vasut wrote:
  Dear Stephen Warren,
 
  On 09/12/2012 10:19 AM, Tom Warren wrote:
  Folks,
 
  Stephen Warren has posted an internal bug regarding the cache
  alignment 'warnings' seen on Tegra20 boards when accessing MMC.
  Here's the gist:
 
  Executing mmc dev 0 still yields cache warnings:
 
  Tegra20 (Harmony) # mmc dev 0
  ERROR: v7_dcache_inval_range- stop address is not aligned-
  0x3fb69908 mmc0 is current device
 
  ...
 
  There have been patches in the past (IIRC) that have tried to
  ensure all callers (FS, MMC driver, USB driver, etc.) force 
  their
  buffers to the appropriate alignment, but I don't know that we
  can ever correct every instance, now or in the future.
 
  Can we start a discussion about what we can do about this 
  warning?
  Adding an appropriate #ifdef
  (CONFIG_SYS_NO_CACHE_ALIGNMENT_WARNINGS, etc.) where Stephen put
  his #if 0's would be one approach, or changing the printf() to a
  debug(), perhaps. As far as I can tell, these alignment 'errors'
  don't seem to produce bad data in the transfer.
 
  I don't think simply turning off the warning is the correct
  approach; I believe they represent real problems that can in fact
  cause data corruption. I don't believe we have any choice other
  than to fully solve the root-cause.
   
Yes I agree, and I think it is pretty close - certainly much better
than it used to be. The good thing about them being annoying is that
they will likely get fixed :-)
  
   I think I traced this to the copying of CSD a while back. The problem is
   that the transferred buffer is 8 bytes, so there's no way to make it
   aligned properly. Unfortunately the entailing discussion did not yield a
   solution at the time.
 
  And how exactly does the MMC bounce buffer not help here?
 
  The problem solved by the bounce buffer is that it is properly cache-
  line aligned. However the issue here is not that the buffer is not
  properly aligned but rather that the transfer is too small.
 
  When the MMC core transfers the SCR, it requests 8 bytes. The buffer
  used to store these 8 bytes is properly allocated. However, those 8
  bytes eventually end up as the size of the range that is to be
  invalidated. This is the reason for the warning. Address x of the buffer
  is cache-line aligned, but x + 8 is never properly aligned and therefore
  the code complains.
 
 Would it be too dreadful to define a minimum MMC transfer size, and
 set that to the cache line size?

I did try setting the data size to the cache line size back then, but
that resulted in an error. After that I gave up. I think what we really
need to do is separate the invalidation size from the transfer size in
order to properly handle these situations. Or alternatively pass an
additional buffer size so the code knows how much needs to be
invalidated. AFAICT this is the only location where this actually
happens. All other transfers are typically block sized so they'll be a
multiple of the cache line anyway.

Thierry


pgpJyioYEDbDY.pgp
Description: PGP signature
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] Problem Booting RTEMS with u-boot on Phycore LPC3250

2012-09-16 Thread SAeeD
Hello

I have built an RTEMS 4.10.2 elf image for Phycore LPC3250. I am using
u-boot as my bootloader. Although I can boot the image in binary format,
unfortunately there is a problem to boot elf image with bootelf  command.
after executing bootelf command u-boot get stuck in an infinite loop with
the following messages:

Loading .start @ 0x8000 (1120 bytes)

Clearing .vector @ 0x8000 (5952 bytes)

Loading .text @ 0x8460 (68576 bytes)

Loading .rodata @ 0x80011040 (6208 bytes)

Clearing .robarrier @ 0x800012880 (972672 bytes)

Loading .data @ 0x8010 (2016 bytes)

Clearing .bss @ 0x801007e0 (5504 bytes)

Clearing .work @ 0x80101d60( 66036384 bytes)

I have tried both u-boot 1.3.3 and u-boot 2009.03 and have not found any
improvements.

RAM address info is located in range of 0x800 to 0x83ff; U-boot is
located in 0x83fc.
bootelf is called with argument 0x8100.
Any idea, hint, and advice on how to solve the problem would be appreciated.

Thanks.
SAeeD
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] Limit of kernel size

2012-09-16 Thread Dan Malek


On Sep 15, 2012, at 4:40 PM, J.Hwan Kim wrote:


Is there limitation of the kernel size which u-boot loads?


No.


My kernel is very big, because I included the ramdisk into the kernel.
My kernel size is over 40MB.
When I load the kernel through u-boot, the prcedure hangs in the  
boot step.

The step is Uncompressing Linux done, booting the kernel


Yeah, I don't know what architecture you are using or the format of  
your image, but I suspect the problem is with the wrapper or start up  
code of the image.


There are lots of ways split/format such an image, I'd suggest asking  
on the architecture specific Linux mailing list.


Thanks.

-- Dan

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 11/11] S3C24XX: Add support to MINI2416 board

2012-09-16 Thread José Miguel Gonçalves

On 09/14/2012 07:58 PM, Tom Rini wrote:

On Fri, Sep 14, 2012 at 06:29:02PM +0100, Jos?? Miguel Gon??alves wrote:


The MINI2416 board is based on a Samsung's S3C2416 SoC and has 64MB DDR2 SDRAM,
256MB NAND Flash, a LAN9220 Ethernet Controller and a WM8731 Audio CODEC.
This U-Boot port was implemented and tested on a unit bought to Boardcon
(http://www.armdesigner.com/) but there are some other chinese providers
that can supply it with a selectable NAND chip from 128MB to 1GB.

[snip]

Can you please try this on top of my SPL framework series?  Thanks!



I thought I was using the latest SPL framework!
Can you please detail on what I should do different?

Best regards,
José Gonçalves

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 09/11] S3C24XX: Add NAND Flash driver

2012-09-16 Thread José Miguel Gonçalves

On 09/14/2012 08:01 PM, Tom Rini wrote:

On Fri, Sep 14, 2012 at 07:45:40PM +0100, Jos? Miguel Gon?alves wrote:

On 14-09-2012 19:21, Marek Vasut wrote:

Dear Jos? Miguel Gon?alves,


NAND Flash driver with HW ECC for the S3C24XX SoCs.
Currently it only supports SLC NAND chips.

Signed-off-by: Jos? Miguel Gon?alves jose.goncal...@inov.pt

[...]


+#include common.h
+#include nand.h
+#include asm/io.h
+#include asm/arch/s3c24xx_cpu.h
+#include asm/errno.h
+
+#define MAX_CHIPS  2
+static int nand_cs[MAX_CHIPS] = { 0, 1 };
+
+#ifdef CONFIG_SPL_BUILD
+#define printf(arg...) do {} while (0)

This doesn't seem quite right ...

1) this should be in CPU directory
2) should be enabled only if CONFIG_SPL_SERIAL_SUPPORT is not set
3) should be inline function, not a macro

1) and 3) OK.
Don't quite understand 2). I want to remove the printfs in the SPL
build, as it would blown up the internal SoC RAM space available.
So why add a condition with CONFIG_SPL_SERIAL_SUPPORT?

You've got 8KB, based on the final patch in the series.  At least in my
SPL series that's still enough to get you printf/puts (I believe 4kb was
the cutoff where that had to be dropped).



Barely:

$ size u-boot-spl
   text   databssdechexfilename
   3337  8588   3933f5du-boot-spl

$ size u-boot-spl-printf
   text   databssdechexfilename
   7968  8604   8580   2184 u-boot-spl-printf

The printf is not so important that justifies exhausting the IRAM space 
available and preventing any future SPL expansion...



___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] Don't get any interrupts once I boot into Linux

2012-09-16 Thread Stefano Babic
On 14/09/2012 18:13, Benoît Thébaudeau wrote:
 Hi Stefano,
 

Hi Benoît,

 On Friday, September 14, 2012 6:06:16 PM, Benoît Thébaudeau wrote:
 Hi Fabio, Greg,

 On Friday, September 14, 2012 5:15:17 PM, Fabio Estevam wrote:
 On Fri, Sep 14, 2012 at 12:04 PM, Greg Topmiller
 greg.topmil...@jdsu.com wrote:
 I downloaded the V2012.07 version of u-boot from the git.denx.de
 repository and built it for our target.  U-boot boots up properly
 and I can use the commands but now when I boot into Linux I don't
 seem to be getting interrupts.  The Linux kernel hangs in the
 calculate_delay function waiting for ticks != jiffies.  I do not
 get the interrupt for the timer.  I have verified that our
 previous u-boot that is based on the 2009.12 version with
 Freescale patches does work.  The timer interrupt occurs and
 jiffies is incremented allowing the loop to exit.  Any help would
 be appreciated.


 Which board are you using?

 Same here with a custom i.MX51-based board and a FSL-based Linux. It
 works fine
 with the FSL-based U-Boot (2009.12).

 Some debugging has shown that:
  - The Linux timer is based on GPT.
  - The GPT counter runs fine at 8 Mincrements/s as expected.
  - The interrupt handler is never called.
  - The interrupt is based on output compare, but forcing the OC value
  a little
bit after the counter value does not trigger the interrupt
handler.
  - Resetting the GPT and clearing its registers prior to Linux timer
  init does
not help.
  - There does not seem to be any wait or sleep modes involved.
  - In this loop, CPSR shows supervisor mode with FIQ disabled and IRQ
  enabled
(same for both U-Boot versions).
  - This version of Linux does not set VBAR. Neither does the older
  U-Boot
contrary to the latest, but setting VBAR to 0 like with the older
U-Boot does
not help.

 The differences in system registers between these U-Boots are really
 small and
 seem insignificant. The GPT clock source used by these versions is
 different,
 but that should not be an issue with proper reinitialization in
 Linux.

 The i.MX51 errata don't mention any issue like that, at least for
 GPT.
 ENGcm09114 is similar, but in a very different context.

 The next step is to dig into the interrupt controller settings and
 vectors to
 check that Linux sets up everything properly. This issue is very
 likely caused
 by this FSL Linux that unduly relies on the bootloader to initialize
 something.
 
 As the maintainer of mx51evk, have you tested that it works fine with U-Boot
 2012.07 with both mainline Linux and FSL's Linux?

I do not test with FSL Linux, sorry. Users should test themselves and
report if they have problems - FSL's kernel is an ancient version
respect kernel.org.

We discussed also in the past if u-boot should anyway support very old
versions of the kernel. My simply position was that if patches do not
hurt the current development, they can be integrated.

This issue was already seen for MX53 in the past, see the following
Fabio's commit:

commit 54cd1dee8f9537c2e3d5bfe2029bf31b2b1cf2f3
Author: Fabio Estevam fabio.este...@freescale.com
Date:   Tue May 8 03:40:49 2012 +

mx53loco: Add CONFIG_REVISION_TAG

FSL 2.6.35 kernel assumes that the bootloader passes the
CONFIG_REVISION_TAG information.

The kernel uses this data to distinguish between Dialog versus
mc34708 based boards,
and also to distinguish between revA and revB of the mc34708 based
boards.

Suggested-by: Yu Li y...@magniel.com
Signed-off-by: Fabio Estevam fabio.este...@freescale.com
Acked-by: Stefano Babic sba...@denx.de

Best regards,
Stefano Babic

-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 10/11] Add u-boot-ubl.bin target to the Makefile

2012-09-16 Thread José Miguel Gonçalves

On 09/14/2012 08:08 PM, Tom Rini wrote:

On Fri, Sep 14, 2012 at 06:29:01PM +0100, Jos?? Miguel Gon??alves wrote:


Samsung's S3C24XX SoCs need this in order to generate a binary image
with the SPL and U-Boot concatenated.

Signed-off-by: Jos?? Miguel Gon??alves jose.goncal...@inov.pt
---
Changes for v2:
- None
---
  Makefile |7 ---
  1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 058fb53..595b5f6 100644
--- a/Makefile
+++ b/Makefile
@@ -442,13 +442,14 @@ $(obj)u-boot.sha1:$(obj)u-boot.bin
  $(obj)u-boot.dis: $(obj)u-boot
$(OBJDUMP) -d $  $@
  
-$(obj)u-boot.ubl:   $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin

+$(obj)u-boot-ubl.bin:   $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
$(OBJCOPY) ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary 
$(obj)spl/u-boot-spl $(obj)spl/u-boot-spl-pad.bin
cat $(obj)spl/u-boot-spl-pad.bin $(obj)u-boot.bin  
$(obj)u-boot-ubl.bin
+   rm $(obj)spl/u-boot-spl-pad.bin
+
+$(obj)u-boot.ubl:   $(obj)u-boot-ubl.bin
$(obj)tools/mkimage -n $(UBL_CONFIG) -T ublimage \
-e $(CONFIG_SYS_TEXT_BASE) -d $(obj)u-boot-ubl.bin 
$(obj)u-boot.ubl
-   rm $(obj)u-boot-ubl.bin
-   rm $(obj)spl/u-boot-spl-pad.bin
  
  $(obj)u-boot.ais:   $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin

$(obj)tools/mkimage -s -n $(if 
$(CONFIG_AIS_CONFIG_FILE),$(CONFIG_AIS_CONFIG_FILE),/dev/null) \

This diff is hard to read, but what exactly are you changing?  The
u-boot-ubl target is also used on TI platforms.  It looks like you're
making it such that u-boot-ubl.bin produces the old binary and
u-boot-ubl adds a new target which is the mkimage header on top of the
same bits as before, but without possibly padding the output image.  I
suspect in your case you could just set PAD_TO to 8192 in
board/../config.mk and use the existing target.



In the S3C2416 I don't need the mkimage stuff. I only need the raw SPL 
image padded at 8KB concatenated with the standard U-Boot. What I've 
done was to split the existing u-boot-ubl target in two; u-boot-ubl.bin, 
that I use to program the Flash, and u-boot-ubl that remains with the 
same functionality as before, just now it depends on u-boot-ubl.bin.


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 01/11] ARM: fix relocation on ARM926EJS

2012-09-16 Thread José Miguel Gonçalves

On 09/15/2012 07:03 PM, Marek Vasut wrote:

Dear José Miguel Gonçalves,


Jumping to board_init_r is not performed due to a bug on address
computation.

Is your CONFIG_SYS_TEXT_BASE configured correctly? I don't detect any
misbehavior on my arm926 boards.


Maybe because you are not using it to build an SPL?
Please check the same chunk of code in other start.S for arm1176 and 
armv7. They have the same code that I put for arm926ejs.





Relocation offsets are not needed when building SPL.

Do they cause any trouble?


No! Just not needed.




Signed-off-by: José Miguel Gonçalves jose.goncal...@inov.pt
---
Changes for v2:
- None
---
  arch/arm/cpu/arm926ejs/start.S |4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm/cpu/arm926ejs/start.S
b/arch/arm/cpu/arm926ejs/start.S index 6f05f1a..2da5342 100644
--- a/arch/arm/cpu/arm926ejs/start.S
+++ b/arch/arm/cpu/arm926ejs/start.S
@@ -325,7 +325,7 @@ _nand_boot_ofs:
.word nand_boot
  #else
ldr r0, _board_init_r_ofs
-   ldr r1, _TEXT_BASE
+   adr r1, _start
add lr, r0, r1
add lr, lr, r9
/* setup parameters for board_init_r */
@@ -338,12 +338,14 @@ _board_init_r_ofs:
.word board_init_r - _start
  #endif

+#ifndef CONFIG_SPL_BUILD
  _rel_dyn_start_ofs:
.word __rel_dyn_start - _start
  _rel_dyn_end_ofs:
.word __rel_dyn_end - _start
  _dynsym_start_ofs:
.word __dynsym_start - _start
+#endif

  /*
   *

Best regards,
Marek Vasut



Best regards,
José Gonçalves
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 01/11] ARM: fix relocation on ARM926EJS

2012-09-16 Thread Marek Vasut
Dear José Miguel Gonçalves,

 On 09/15/2012 07:03 PM, Marek Vasut wrote:
  Dear José Miguel Gonçalves,
  
  Jumping to board_init_r is not performed due to a bug on address
  computation.
  
  Is your CONFIG_SYS_TEXT_BASE configured correctly? I don't detect any
  misbehavior on my arm926 boards.
 
 Maybe because you are not using it to build an SPL?

I do ... and I use CONFIG_SPL_TEXT_BASE properly .

 Please check the same chunk of code in other start.S for arm1176 and
 armv7. They have the same code that I put for arm926ejs.

Please wait and please first explain what is the issue.

  Relocation offsets are not needed when building SPL.
  
  Do they cause any trouble?
 
 No! Just not needed.
 
  Signed-off-by: José Miguel Gonçalves jose.goncal...@inov.pt
  ---
  
  Changes for v2:
  - None
  
  ---
  
arch/arm/cpu/arm926ejs/start.S |4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
  
  diff --git a/arch/arm/cpu/arm926ejs/start.S
  b/arch/arm/cpu/arm926ejs/start.S index 6f05f1a..2da5342 100644
  --- a/arch/arm/cpu/arm926ejs/start.S
  +++ b/arch/arm/cpu/arm926ejs/start.S
  
  @@ -325,7 +325,7 @@ _nand_boot_ofs:
 .word nand_boot

#else

 ldr r0, _board_init_r_ofs
  
  -  ldr r1, _TEXT_BASE
  +  adr r1, _start
  
 add lr, r0, r1
 add lr, lr, r9
 /* setup parameters for board_init_r */
  
  @@ -338,12 +338,14 @@ _board_init_r_ofs:
 .word board_init_r - _start

#endif
  
  +#ifndef CONFIG_SPL_BUILD
  
_rel_dyn_start_ofs:
 .word __rel_dyn_start - _start

_rel_dyn_end_ofs:
 .word __rel_dyn_end - _start

_dynsym_start_ofs:
 .word __dynsym_start - _start
  
  +#endif
  
/*

 *
 
  
  Best regards,
  Marek Vasut
 
 Best regards,
 José Gonçalves

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 01/11] ARM: fix relocation on ARM926EJS

2012-09-16 Thread José Miguel Gonçalves

On 09/16/2012 11:06 AM, Marek Vasut wrote:

Dear José Miguel Gonçalves,


On 09/15/2012 07:03 PM, Marek Vasut wrote:

Dear José Miguel Gonçalves,


Jumping to board_init_r is not performed due to a bug on address
computation.

Is your CONFIG_SYS_TEXT_BASE configured correctly? I don't detect any
misbehavior on my arm926 boards.

Maybe because you are not using it to build an SPL?

I do ... and I use CONFIG_SPL_TEXT_BASE properly .


Please check the same chunk of code in other start.S for arm1176 and
armv7. They have the same code that I put for arm926ejs.

Please wait and please first explain what is the issue.


The issue is what I've explained in the patch comments. Without this 
change the code never reaches board_init_r in the SPL and I think I have 
all the configurations correctly set. If the bug is not from here please 
suggest me what I need to change in the configuration in order to 
correctly boot my board.





Relocation offsets are not needed when building SPL.

Do they cause any trouble?

No! Just not needed.


Signed-off-by: José Miguel Gonçalves jose.goncal...@inov.pt
---

Changes for v2:
 - None

---

   arch/arm/cpu/arm926ejs/start.S |4 +++-
   1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm/cpu/arm926ejs/start.S
b/arch/arm/cpu/arm926ejs/start.S index 6f05f1a..2da5342 100644
--- a/arch/arm/cpu/arm926ejs/start.S
+++ b/arch/arm/cpu/arm926ejs/start.S

@@ -325,7 +325,7 @@ _nand_boot_ofs:
.word nand_boot
   
   #else
   
   	ldr	r0, _board_init_r_ofs


-   ldr r1, _TEXT_BASE
+   adr r1, _start

add lr, r0, r1
add lr, lr, r9
/* setup parameters for board_init_r */

@@ -338,12 +338,14 @@ _board_init_r_ofs:
.word board_init_r - _start
   
   #endif


+#ifndef CONFIG_SPL_BUILD

   _rel_dyn_start_ofs:
.word __rel_dyn_start - _start
   
   _rel_dyn_end_ofs:

.word __rel_dyn_end - _start
   
   _dynsym_start_ofs:

.word __dynsym_start - _start

+#endif

   /*
   
*



Best regards,
Marek Vasut

Best regards,
José Gonçalves

Best regards,
Marek Vasut


Best regards,
José Gonçalves
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v4 1/2] Loop block device for sandbox

2012-09-16 Thread Pavel Herrmann
Hi

On Thursday 13 September 2012 15:31:39 Tom Rini wrote:
 On Fri, Sep 07, 2012 at 11:19:03AM +0200, Pavel Herrmann wrote:
  On Friday 07 of September 2012 01:29:55 Marek Vasut wrote:
   Dear Pavel Herrmann,
   
This driver uses files as block devices, can be used for testing disk
operations on sandbox.
A new command sata_loop is introduced to load files in runtime.
   
   WARNING: externs should be avoided in .c files
   #141: FILE: drivers/block/sata_loopback.c:39:
   +extern block_dev_desc_t sata_dev_desc[];
   
   total: 0 errors, 1 warnings, 231 lines checked
   
   NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX
   MULTISTATEMENT_MACRO_USE_DO_WHILE
  
  Yes, i know about that, and chose to ignore it.
  i will not create a header file for a single line that checkpatch doesnt
  like (with just a warning), especially when other drivers have such a
  line in them as well.
 
 Please move your extern into sata.h, as the starting point before
 merge.  If you could also go and fix:
 $ git grep -l sata_dev_desc
 common/cmd_sata.c
 drivers/block/ata_piix.c
 drivers/block/dwc_ahsata.c
 drivers/block/dwc_ahsata.h
 drivers/block/fsl_sata.c
 drivers/block/pata_bfin.c
 drivers/block/pata_bfin.h
 drivers/block/sata_dwc.c
 drivers/block/sata_sil.c
 drivers/block/sata_sil.h
 drivers/block/sata_sil3114.c
 
 To use sata.h (some already do) instead of their own private extern
 I'd greatly appreciate it.

I dont think sata.h is the place to put this, as it is a consumer-facing 
header. rather create some common sata header in drivers/block

Pavel Herrmann
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] Fix checkpatch warnings about externs in *.c

2012-09-16 Thread Pavel Herrmann
Move all extern declarations of sata_dev_desc into a single header file.

Signed-off-by: Pavel Herrmann morpheus.i...@gmail.com
---
 drivers/block/ata_piix.c |  4 +---
 drivers/block/dwc_ahsata.c   |  1 +
 drivers/block/dwc_ahsata.h   |  2 --
 drivers/block/fsl_sata.c |  3 +--
 drivers/block/pata_bfin.c|  1 +
 drivers/block/pata_bfin.h|  2 --
 drivers/block/sata_dwc.c |  3 +--
 drivers/block/sata_extern.h  | 30 ++
 drivers/block/sata_sil.c |  1 +
 drivers/block/sata_sil.h |  2 --
 drivers/block/sata_sil3114.c |  2 +-
 11 files changed, 37 insertions(+), 14 deletions(-)
 create mode 100644 drivers/block/sata_extern.h

diff --git a/drivers/block/ata_piix.c b/drivers/block/ata_piix.c
index c81d11a..de8d563 100644
--- a/drivers/block/ata_piix.c
+++ b/drivers/block/ata_piix.c
@@ -34,9 +34,7 @@
 #include part.h
 #include ide.h
 #include ata.h
-
-extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
-extern int sata_curr_device;
+#include sata_extern.h
 
 #define DEBUG_SATA 0   /*For debug prints set DEBUG_SATA to 1 */
 
diff --git a/drivers/block/dwc_ahsata.c b/drivers/block/dwc_ahsata.c
index 2703d3d..4b32466 100644
--- a/drivers/block/dwc_ahsata.c
+++ b/drivers/block/dwc_ahsata.c
@@ -33,6 +33,7 @@
 #include linux/bitops.h
 #include asm/arch/clock.h
 #include dwc_ahsata.h
+#include sata_extern.h
 
 struct sata_port_regs {
u32 clb;
diff --git a/drivers/block/dwc_ahsata.h b/drivers/block/dwc_ahsata.h
index 84860ea..4dac5dc 100644
--- a/drivers/block/dwc_ahsata.h
+++ b/drivers/block/dwc_ahsata.h
@@ -330,6 +330,4 @@
 #define READ_CMD   0
 #define WRITE_CMD  1
 
-extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
-
 #endif /* __FSL_SATA_H__ */
diff --git a/drivers/block/fsl_sata.c b/drivers/block/fsl_sata.c
index 3026ade..9691f2e 100644
--- a/drivers/block/fsl_sata.c
+++ b/drivers/block/fsl_sata.c
@@ -27,8 +27,7 @@
 #include libata.h
 #include fis.h
 #include fsl_sata.h
-
-extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
+#include sata_extern.h
 
 #ifndef CONFIG_SYS_SATA1_FLAGS
#define CONFIG_SYS_SATA1_FLAGS  FLAGS_DMA
diff --git a/drivers/block/pata_bfin.c b/drivers/block/pata_bfin.c
index cce21fb..6aacde0 100644
--- a/drivers/block/pata_bfin.c
+++ b/drivers/block/pata_bfin.c
@@ -19,6 +19,7 @@
 #include ata.h
 #include libata.h
 #include pata_bfin.h
+#include sata_extern.h
 
 static struct ata_port port[CONFIG_SYS_SATA_MAX_DEVICE];
 
diff --git a/drivers/block/pata_bfin.h b/drivers/block/pata_bfin.h
index 2b3425b..2093cf0 100644
--- a/drivers/block/pata_bfin.h
+++ b/drivers/block/pata_bfin.h
@@ -41,8 +41,6 @@ struct ata_port {
unsigned char dev_mask;
 };
 
-extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
-
 #define DRV_NAME   pata-bfin
 #define DRV_VERSION0.9
 #define __iomem
diff --git a/drivers/block/sata_dwc.c b/drivers/block/sata_dwc.c
index 75101b5..cc41316 100644
--- a/drivers/block/sata_dwc.c
+++ b/drivers/block/sata_dwc.c
@@ -38,6 +38,7 @@
 #include linux/ctype.h
 
 #include sata_dwc.h
+#include sata_extern.h
 
 #define DMA_NUM_CHANS  1
 #define DMA_NUM_CHAN_REGS  8
@@ -268,8 +269,6 @@ static int ata_dev_read_id(struct ata_device *dev, unsigned 
int *p_class,
unsigned int flags, u16 *id);
 static int check_sata_dev_state(void);
 
-extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
-
 static const struct ata_port_info sata_dwc_port_info[] = {
{
.flags  = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
diff --git a/drivers/block/sata_extern.h b/drivers/block/sata_extern.h
new file mode 100644
index 000..3bf9df9
--- /dev/null
+++ b/drivers/block/sata_extern.h
@@ -0,0 +1,30 @@
+/*
+ * (C) Copyright 2012
+ * Pavel Herrmann morpheus.i...@gmail.com
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _BLOCK_SATA_EXTERN_H_
+#define _BLOCK_SATA_EXTERN_H_
+
+extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
+extern int sata_curr_device;
+
+#endif
diff --git a/drivers/block/sata_sil.c b/drivers/block/sata_sil.c
index fb7cd2a..ee9194c 100644
--- a/drivers/block/sata_sil.c

[U-Boot] [PATCH v5 1/2] Loop block device for sandbox

2012-09-16 Thread Pavel Herrmann
This driver uses files as block devices, can be used for testing disk
operations on sandbox.
A new command sata_loop is introduced to load files in runtime.

Signed-off-by: Pavel Herrmann morpheus.i...@gmail.com
---
Changes for v5:
  use common sata extern header - this requires [PATCH] Fix checkpatch warnings
  about externs in *.c to be merged first
  make sure we have valid callbacks before scanning partitions

Changes for v4:
  checkpatch fixes
  use NULLs instead of 
  extend sata_loop command

Changes for v3:
  introduce sata_loop command

Changes for v2:
  split sandbox config off into separate patch (2/2)
  rename file to signify exported API
  style fixes
  show end of long filenames rather than beginning
  check for lseek errors to indicate non-regular file


 drivers/block/Makefile|   1 +
 drivers/block/sata_loopback.c | 213 ++
 2 files changed, 214 insertions(+)
 create mode 100644 drivers/block/sata_loopback.c

diff --git a/drivers/block/Makefile b/drivers/block/Makefile
index f1ebdcc..c95651a 100644
--- a/drivers/block/Makefile
+++ b/drivers/block/Makefile
@@ -40,6 +40,7 @@ COBJS-$(CONFIG_SATA_SIL) += sata_sil.o
 COBJS-$(CONFIG_IDE_SIL680) += sil680.o
 COBJS-$(CONFIG_SCSI_SYM53C8XX) += sym53c8xx.o
 COBJS-$(CONFIG_SYSTEMACE) += systemace.o
+COBJS-${CONFIG_SATA_LOOP} += sata_loopback.o
 
 COBJS  := $(COBJS-y)
 SRCS   := $(COBJS:.o=.c)
diff --git a/drivers/block/sata_loopback.c b/drivers/block/sata_loopback.c
new file mode 100644
index 000..eb3103b
--- /dev/null
+++ b/drivers/block/sata_loopback.c
@@ -0,0 +1,213 @@
+/*
+ * (C) Copyright 2012
+ * Pavel Herrmann morpheus.i...@gmail.com
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include common.h
+#include part.h
+#include ata.h
+#include libata.h
+#include errno.h
+#include os.h
+#include command.h
+#include malloc.h
+#include sata_extern.h
+
+static const char revision[] = 0.0;
+static const char vendor[] = SATA loopback;
+
+/* this will be auto-initialized to NULLs */
+static char *filenames[CONFIG_SYS_SATA_MAX_DEVICE];
+
+static inline int range_check(int dev)
+{
+   return  (dev  0) || (dev = CONFIG_SYS_SATA_MAX_DEVICE);
+}
+
+int init_sata(int dev)
+{
+   block_dev_desc_t *pdev = sata_dev_desc[dev];
+   int fd, old_fd;
+
+   if (range_check(dev)) {
+   printf(File index %d is out of range.\n, dev);
+   return -EINVAL;
+   }
+
+   if (filenames[dev])
+   fd = os_open(filenames[dev], OS_O_RDWR);
+   else
+   fd = -1;
+
+   old_fd = (long) pdev-priv;
+   /* This is ugly, but saves allocation for 1 int. */
+   pdev-priv = (void *) (long) fd;
+
+   if ((old_fd  2) || (old_fd  0))
+   os_close(old_fd);
+
+   return 0;
+}
+
+ulong sata_read(int dev, ulong start, lbaint_t blkcnt, void *buffer)
+{
+   block_dev_desc_t *pdev = sata_dev_desc[dev];
+   int fd = (long) pdev-priv;
+   lbaint_t start_byte = ATA_SECT_SIZE * start;
+   lbaint_t length_byte = ATA_SECT_SIZE * blkcnt;
+   lbaint_t retval;
+
+   if (os_lseek(fd, start_byte, OS_SEEK_SET) != start_byte)
+   return -1;
+
+   retval = os_read(fd, buffer, length_byte);
+
+   return retval / ATA_SECT_SIZE;
+}
+
+ulong sata_write(int dev, ulong start, lbaint_t blkcnt, const void *buffer)
+{
+   block_dev_desc_t *pdev = sata_dev_desc[dev];
+   int fd = (long) pdev-priv;
+   lbaint_t start_byte = ATA_SECT_SIZE * start;
+   lbaint_t length_byte = ATA_SECT_SIZE * blkcnt;
+   lbaint_t retval;
+
+   if (os_lseek(fd, start_byte, OS_SEEK_SET) != start_byte)
+   return -1;
+
+   retval = os_write(fd, buffer, length_byte);
+
+   return retval / ATA_SECT_SIZE;
+}
+
+int scan_sata(int dev)
+{
+   block_dev_desc_t *pdev = sata_dev_desc[dev];
+   int fd = (long) pdev-priv;
+   int namelen;
+   char *filename;
+   lbaint_t bytes = 0;
+
+   if (range_check(dev)) {
+   printf(File index %d is out of range.\n, dev);
+   return -EINVAL;
+   }
+
+   if (filenames[dev])
+   filename = filenames[dev];
+   else
+   filename = ;
+
+  

Re: [U-Boot] [PATCH] Fix checkpatch warnings about externs in *.c

2012-09-16 Thread Marek Vasut
Dear Pavel Herrmann,

 Move all extern declarations of sata_dev_desc into a single header file.
 
 Signed-off-by: Pavel Herrmann morpheus.i...@gmail.com
 ---
  drivers/block/ata_piix.c |  4 +---
  drivers/block/dwc_ahsata.c   |  1 +
  drivers/block/dwc_ahsata.h   |  2 --
  drivers/block/fsl_sata.c |  3 +--
  drivers/block/pata_bfin.c|  1 +
  drivers/block/pata_bfin.h|  2 --
  drivers/block/sata_dwc.c |  3 +--
  drivers/block/sata_extern.h  | 30 ++
  drivers/block/sata_sil.c |  1 +
  drivers/block/sata_sil.h |  2 --
  drivers/block/sata_sil3114.c |  2 +-
  11 files changed, 37 insertions(+), 14 deletions(-)
  create mode 100644 drivers/block/sata_extern.h

Won't include/sata.h work just fine ?

 diff --git a/drivers/block/ata_piix.c b/drivers/block/ata_piix.c
 index c81d11a..de8d563 100644
 --- a/drivers/block/ata_piix.c
 +++ b/drivers/block/ata_piix.c
 @@ -34,9 +34,7 @@
  #include part.h
  #include ide.h
  #include ata.h
 -
 -extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
 -extern int sata_curr_device;
 +#include sata_extern.h
 
  #define DEBUG_SATA 0 /*For debug prints set DEBUG_SATA to 1 */
 
 diff --git a/drivers/block/dwc_ahsata.c b/drivers/block/dwc_ahsata.c
 index 2703d3d..4b32466 100644
 --- a/drivers/block/dwc_ahsata.c
 +++ b/drivers/block/dwc_ahsata.c
 @@ -33,6 +33,7 @@
  #include linux/bitops.h
  #include asm/arch/clock.h
  #include dwc_ahsata.h
 +#include sata_extern.h
 
  struct sata_port_regs {
   u32 clb;
 diff --git a/drivers/block/dwc_ahsata.h b/drivers/block/dwc_ahsata.h
 index 84860ea..4dac5dc 100644
 --- a/drivers/block/dwc_ahsata.h
 +++ b/drivers/block/dwc_ahsata.h
 @@ -330,6 +330,4 @@
  #define READ_CMD 0
  #define WRITE_CMD1
 
 -extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
 -
  #endif /* __FSL_SATA_H__ */
 diff --git a/drivers/block/fsl_sata.c b/drivers/block/fsl_sata.c
 index 3026ade..9691f2e 100644
 --- a/drivers/block/fsl_sata.c
 +++ b/drivers/block/fsl_sata.c
 @@ -27,8 +27,7 @@
  #include libata.h
  #include fis.h
  #include fsl_sata.h
 -
 -extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
 +#include sata_extern.h
 
  #ifndef CONFIG_SYS_SATA1_FLAGS
   #define CONFIG_SYS_SATA1_FLAGS  FLAGS_DMA
 diff --git a/drivers/block/pata_bfin.c b/drivers/block/pata_bfin.c
 index cce21fb..6aacde0 100644
 --- a/drivers/block/pata_bfin.c
 +++ b/drivers/block/pata_bfin.c
 @@ -19,6 +19,7 @@
  #include ata.h
  #include libata.h
  #include pata_bfin.h
 +#include sata_extern.h
 
  static struct ata_port port[CONFIG_SYS_SATA_MAX_DEVICE];
 
 diff --git a/drivers/block/pata_bfin.h b/drivers/block/pata_bfin.h
 index 2b3425b..2093cf0 100644
 --- a/drivers/block/pata_bfin.h
 +++ b/drivers/block/pata_bfin.h
 @@ -41,8 +41,6 @@ struct ata_port {
   unsigned char dev_mask;
  };
 
 -extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
 -
  #define DRV_NAME pata-bfin
  #define DRV_VERSION  0.9
  #define __iomem
 diff --git a/drivers/block/sata_dwc.c b/drivers/block/sata_dwc.c
 index 75101b5..cc41316 100644
 --- a/drivers/block/sata_dwc.c
 +++ b/drivers/block/sata_dwc.c
 @@ -38,6 +38,7 @@
  #include linux/ctype.h
 
  #include sata_dwc.h
 +#include sata_extern.h
 
  #define DMA_NUM_CHANS1
  #define DMA_NUM_CHAN_REGS8
 @@ -268,8 +269,6 @@ static int ata_dev_read_id(struct ata_device *dev,
 unsigned int *p_class, unsigned int flags, u16 *id);
  static int check_sata_dev_state(void);
 
 -extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
 -
  static const struct ata_port_info sata_dwc_port_info[] = {
   {
   .flags  = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
 diff --git a/drivers/block/sata_extern.h b/drivers/block/sata_extern.h
 new file mode 100644
 index 000..3bf9df9
 --- /dev/null
 +++ b/drivers/block/sata_extern.h
 @@ -0,0 +1,30 @@
 +/*
 + * (C) Copyright 2012
 + * Pavel Herrmann morpheus.i...@gmail.com
 + *
 + * See file CREDITS for list of people who contributed to this
 + * project.
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License as
 + * published by the Free Software Foundation; either version 2 of
 + * the License, or (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software
 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 + * MA 02111-1307 USA
 + */
 +
 +#ifndef _BLOCK_SATA_EXTERN_H_
 +#define _BLOCK_SATA_EXTERN_H_
 +
 +extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
 

Re: [U-Boot] [PATCH] Fix checkpatch warnings about externs in *.c

2012-09-16 Thread Pavel Herrmann
On Sunday 16 September 2012 14:37:16 Marek Vasut wrote:
 Dear Pavel Herrmann,
  ...
 Won't include/sata.h work just fine ?

I feel include/sata.h is a consumer-facing header, and implementation 
details such as the array used for all data-retention for command and drivers 
should not be there.

Therefore i created a new header in drivers/block for this purpose, feel free 
to oppose to its name though.

Pavel Herrmann
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] MX6: drop binary constants from iomux header

2012-09-16 Thread Stefano Babic
Constants set with binary value (0b...) are not compiled
from old toolchain when used by the clrsetbits_le32 macro.
Replaces them with the corresponding hex value.

The error reported (for example with the mx6qsabrelite board)
is something like:

mx6qsabrelite.c:369:1: error: invalid suffix b101 on integer constant
mx6qsabrelite.c:369:1: error: invalid suffix b10010 on integer constant
mx6qsabrelite.c:369:1: error: invalid suffix b on integer constant
mx6qsabrelite.c:369:1: error: invalid suffix b10001 on integer constant

Signed-off-by: Stefano Babic sba...@denx.de
---
 arch/arm/include/asm/arch-mx6/iomux.h |  124 -
 1 file changed, 62 insertions(+), 62 deletions(-)

diff --git a/arch/arm/include/asm/arch-mx6/iomux.h 
b/arch/arm/include/asm/arch-mx6/iomux.h
index a1255f9..d23abd7 100644
--- a/arch/arm/include/asm/arch-mx6/iomux.h
+++ b/arch/arm/include/asm/arch-mx6/iomux.h
@@ -34,21 +34,21 @@
 #define IOMUXC_GPR13_SATA_PHY_2_MASK   (0x1f2)
 #define IOMUXC_GPR13_SATA_PHY_1_MASK   (30)
 
-#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_0P5DB (0b00024)
-#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_1P0DB (0b00124)
-#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_1P5DB (0b01024)
-#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_2P0DB (0b01124)
-#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_2P5DB (0b10024)
-#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P0DB (0b10124)
-#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P5DB (0b11024)
-#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_4P0DB (0b11124)
+#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_0P5DB (024)
+#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_1P0DB (124)
+#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_1P5DB (224)
+#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_2P0DB (324)
+#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_2P5DB (424)
+#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P0DB (524)
+#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P5DB (624)
+#define IOMUXC_GPR13_SATA_PHY_8_RXEQ_4P0DB (724)
 
-#define IOMUXC_GPR13_SATA_PHY_7_SATA1I (0b119)
-#define IOMUXC_GPR13_SATA_PHY_7_SATA1M (0b119)
-#define IOMUXC_GPR13_SATA_PHY_7_SATA1X (0b1101019)
-#define IOMUXC_GPR13_SATA_PHY_7_SATA2I (0b1001019)
-#define IOMUXC_GPR13_SATA_PHY_7_SATA2M (0b1001019)
-#define IOMUXC_GPR13_SATA_PHY_7_SATA2X (0b1101019)
+#define IOMUXC_GPR13_SATA_PHY_7_SATA1I (0x1019)
+#define IOMUXC_GPR13_SATA_PHY_7_SATA1M (0x1019)
+#define IOMUXC_GPR13_SATA_PHY_7_SATA1X (0x1A19)
+#define IOMUXC_GPR13_SATA_PHY_7_SATA2I (0x1219)
+#define IOMUXC_GPR13_SATA_PHY_7_SATA2M (0x1219)
+#define IOMUXC_GPR13_SATA_PHY_7_SATA2X (0x1A19)
 
 #define IOMUXC_GPR13_SATA_SPEED_1P5G   (015)
 #define IOMUXC_GPR13_SATA_SPEED_3G (115)
@@ -63,55 +63,55 @@
 #define IOMUXC_GPR13_SATA_SATA_PHY_4_ATTEN_9_16(411)
 #define IOMUXC_GPR13_SATA_SATA_PHY_4_ATTEN_8_16(511)
 
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P00_DB(0b7)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P37_DB(0b00017)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P74_DB(0b00107)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_1P11_DB(0b00117)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_1P48_DB(0b01007)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_1P85_DB(0b01017)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_2P22_DB(0b01107)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_2P59_DB(0b01117)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_2P96_DB(0b10007)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_3P33_DB(0b10017)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_3P70_DB(0b10107)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_4P07_DB(0b10117)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_4P44_DB(0b11007)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_4P81_DB(0b11017)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_5P28_DB(0b11107)
-#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_5P75_DB(0b7)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P00_DB(07)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P37_DB(17)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P74_DB(27)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_1P11_DB(37)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_1P48_DB(47)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_1P85_DB(57)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_2P22_DB(67)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_2P59_DB(77)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_2P96_DB(87)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_3P33_DB(97)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_3P70_DB(0xA7)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_4P07_DB(0xB7)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_4P44_DB(0xC7)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_4P81_DB(0xD7)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_5P28_DB(0xE7)
+#define IOMUXC_GPR13_SATA_PHY_3_TXBOOST_5P75_DB(0xF7)
 
-#define IOMUXC_GPR13_SATA_PHY_2_TX_0P937V  (0b02)
-#define IOMUXC_GPR13_SATA_PHY_2_TX_0P947V  (0b12)
-#define 

Re: [U-Boot] [PATCH] Fix checkpatch warnings about externs in *.c

2012-09-16 Thread Marek Vasut
Dear Pavel Herrmann,

 On Sunday 16 September 2012 14:37:16 Marek Vasut wrote:
  Dear Pavel Herrmann,
  
   ...
  
  Won't include/sata.h work just fine ?
 
 I feel include/sata.h is a consumer-facing header, and implementation
 details such as the array used for all data-retention for command and
 drivers should not be there.
 
 Therefore i created a new header in drivers/block for this purpose, feel
 free to oppose to its name though.

Just add a comment there, no need to create new file for that.

And using extern keyword in header file is useless.

Actually, proper accessors might be even better idea that directly exporting an 
array.

 Pavel Herrmann

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] Limit of kernel size

2012-09-16 Thread J.Hwan Kim

2012년 09월 16일 14:14, Heiko Schocher 쓴 글:

Hello J.Hwan,

On 16.09.2012 01:40, J.Hwan Kim wrote:

Hi, everyone

Is there limitation of the kernel size which u-boot loads?


Only as I know the maximum RAM size (minus the size U-Boot needs)


My kernel is very big, because I included the ramdisk into the kernel.
My kernel size is over 40MB.
When I load the kernel through u-boot, the prcedure hangs in the boot 
step.

The step is Uncompressing Linux done, booting the kernel


On which board with which RAM size? Please provide more Information
including a u-boot log from reset, your environment ...

and maybe it is a Linux problem ...


I'm using ARM(Cortex A8) architecture and my memory size 512MB.
I used both uImage and zImage, but the result was same.

I found this article in the web.
http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html

It says that
The zImage code is Position Independent Code (PIC) so may be loaded
anywhere within the available address space.
The maximum kernel size after decompression is 4Megabytes.
This is a hard limit and would include the initrd if a bootpImage target 
was used.


If that article is not so obsolete, my kernel size which include initramfs
should be smaller than 4MB.

Best Regards,
J.Hwan Kim
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 01/11] ARM: fix relocation on ARM926EJS

2012-09-16 Thread Marek Vasut
Dear José Miguel Gonçalves,

 On 09/16/2012 11:06 AM, Marek Vasut wrote:
  Dear José Miguel Gonçalves,
  
  On 09/15/2012 07:03 PM, Marek Vasut wrote:
  Dear José Miguel Gonçalves,
  
  Jumping to board_init_r is not performed due to a bug on address
  computation.
  
  Is your CONFIG_SYS_TEXT_BASE configured correctly? I don't detect any
  misbehavior on my arm926 boards.
  
  Maybe because you are not using it to build an SPL?
  
  I do ... and I use CONFIG_SPL_TEXT_BASE properly .

  Please check the same chunk of code in other start.S for arm1176 and
  armv7. They have the same code that I put for arm926ejs.
  
  Please wait and please first explain what is the issue.
 
 The issue is what I've explained in the patch comments.

Jumping to board_init_r is not performed due to a bug on address computation.

Ok, I don't know how to replicate the bug from this comment or what effects it 
causes or ... well, anything. So please, try to be more elaborate in your patch 
description next time. Anyway ..

 Without this
 change the code never reaches board_init_r in the SPL and I think I have
 all the configurations correctly set.

I wonder why you'd ever want to reach board_init_r in the SPL. SPL is there 
only 
to load the real U-Boot from whatever media, so you usually use either NAND SPL 
or something like that.

What do you boot the rest from ?

 If the bug is not from here please
 suggest me what I need to change in the configuration in order to
 correctly boot my board.
 
  Relocation offsets are not needed when building SPL.
  
  Do they cause any trouble?
  
  No! Just not needed.
  
  Signed-off-by: José Miguel Gonçalves jose.goncal...@inov.pt
  ---
  
  Changes for v2:
   - None
  
  ---
  
 arch/arm/cpu/arm926ejs/start.S |4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  
  diff --git a/arch/arm/cpu/arm926ejs/start.S
  b/arch/arm/cpu/arm926ejs/start.S index 6f05f1a..2da5342 100644
  --- a/arch/arm/cpu/arm926ejs/start.S
  +++ b/arch/arm/cpu/arm926ejs/start.S
  
  @@ -325,7 +325,7 @@ _nand_boot_ofs:
   .word nand_boot
 
 #else
 
   ldr r0, _board_init_r_ofs
  
  -ldr r1, _TEXT_BASE
  +adr r1, _start
  
   add lr, r0, r1
   add lr, lr, r9
   /* setup parameters for board_init_r */
  
  @@ -338,12 +338,14 @@ _board_init_r_ofs:
   .word board_init_r - _start
 
 #endif
  
  +#ifndef CONFIG_SPL_BUILD
  
 _rel_dyn_start_ofs:
   .word __rel_dyn_start - _start
 
 _rel_dyn_end_ofs:
   .word __rel_dyn_end - _start
 
 _dynsym_start_ofs:
   .word __dynsym_start - _start
  
  +#endif
  
 /*
 
  **
  *** 
  
  Best regards,
  Marek Vasut
  
  Best regards,
  José Gonçalves
  
  Best regards,
  Marek Vasut
 
 Best regards,
 José Gonçalves
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 01/11] ARM: fix relocation on ARM926EJS

2012-09-16 Thread José Miguel Gonçalves

On 09/16/2012 04:36 PM, Marek Vasut wrote:

Dear José Miguel Gonçalves,


On 09/16/2012 11:06 AM, Marek Vasut wrote:

Dear José Miguel Gonçalves,


On 09/15/2012 07:03 PM, Marek Vasut wrote:

Dear José Miguel Gonçalves,


Jumping to board_init_r is not performed due to a bug on address
computation.

Is your CONFIG_SYS_TEXT_BASE configured correctly? I don't detect any
misbehavior on my arm926 boards.

Maybe because you are not using it to build an SPL?

I do ... and I use CONFIG_SPL_TEXT_BASE properly .

Please check the same chunk of code in other start.S for arm1176 and
armv7. They have the same code that I put for arm926ejs.

Please wait and please first explain what is the issue.

The issue is what I've explained in the patch comments.

Jumping to board_init_r is not performed due to a bug on address computation.

Ok, I don't know how to replicate the bug from this comment or what effects it
causes or ... well, anything. So please, try to be more elaborate in your patch
description next time. Anyway ..


My bad. I should be more explicit on the patch description.


Without this
change the code never reaches board_init_r in the SPL and I think I have
all the configurations correctly set.

I wonder why you'd ever want to reach board_init_r in the SPL. SPL is there only
to load the real U-Boot from whatever media, so you usually use either NAND SPL
or something like that.

What do you boot the rest from ?


Both SPL and U-Boot are in NAND Flash.

The board's SPL code in board/boardcon/mini2416/mini2416_spl.c that 
needs this patch was based on existing code from 
arch/arm/cpu/arm926ejs/davinci/spl.c and arm/cpu/armv7/omap-common/spl.c


The need to call relocate_code() in board_init_f() is explained on the 
SPL source comment, i.e., only to initialize .bss before we could use it 
in board_init_r() (in the serial driver initialization).






If the bug is not from here please
suggest me what I need to change in the configuration in order to
correctly boot my board.


Relocation offsets are not needed when building SPL.

Do they cause any trouble?

No! Just not needed.


Signed-off-by: José Miguel Gonçalves jose.goncal...@inov.pt
---

Changes for v2:
  - None

---

arch/arm/cpu/arm926ejs/start.S |4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm/cpu/arm926ejs/start.S
b/arch/arm/cpu/arm926ejs/start.S index 6f05f1a..2da5342 100644
--- a/arch/arm/cpu/arm926ejs/start.S
+++ b/arch/arm/cpu/arm926ejs/start.S

@@ -325,7 +325,7 @@ _nand_boot_ofs:
.word nand_boot

#else

	ldr	r0, _board_init_r_ofs


-   ldr r1, _TEXT_BASE
+   adr r1, _start

add lr, r0, r1
add lr, lr, r9
/* setup parameters for board_init_r */

@@ -338,12 +338,14 @@ _board_init_r_ofs:
.word board_init_r - _start

#endif


+#ifndef CONFIG_SPL_BUILD

_rel_dyn_start_ofs:
.word __rel_dyn_start - _start

_rel_dyn_end_ofs:

.word __rel_dyn_end - _start

_dynsym_start_ofs:

.word __dynsym_start - _start

+#endif

/*

 **

 *** 

Best regards,
Marek Vasut

Best regards,
José Gonçalves

Best regards,
Marek Vasut

Best regards,
José Gonçalves


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 0/4] Fix gcc warnings on MIPS 64 bit

2012-09-16 Thread daniel . schwierzeck
From: Daniel Schwierzeck daniel.schwierz...@gmail.com

This series fixes the first bunch of gcc warnings appearing
when compiling for MIPS 64 bit.

For testing purposes all patches are also queued in branch testing at
git://git.denx.de/u-boot-mips.git. The support for MIPS64 and qemu_mips64
is already included.


Daniel Schwierzeck (4):
  lib: vsprintf.c: fix checkpath.pl warnings
  lib: vsprintf.c: replace NUM_TYPE with s64/u64 types
  common: cmd_elf.c: fix checkpath.pl warnings
  common: cmd_elf.c: use uintptr_t for casts from u32 to void*

 common/cmd_elf.c | 137 ---
 lib/vsprintf.c   | 134 +++--
 2 files changed, 149 insertions(+), 122 deletions(-)

-- 
1.7.11.3

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 1/4] lib: vsprintf.c: fix checkpath.pl warnings

2012-09-16 Thread daniel . schwierzeck
From: Daniel Schwierzeck daniel.schwierz...@gmail.com

Signed-off-by: Daniel Schwierzeck daniel.schwierz...@gmail.com
---
 lib/vsprintf.c | 127 ++---
 1 file changed, 77 insertions(+), 50 deletions(-)

diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index e38a4b7..92a9232 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -18,7 +18,7 @@
 #include errno.h
 
 #include common.h
-#if !defined (CONFIG_PANIC_HANG)
+#if !defined(CONFIG_PANIC_HANG)
 #include command.h
 #endif
 
@@ -40,9 +40,11 @@ static inline char *pack_hex_byte(char *buf, u8 byte)
return buf;
 }
 
-unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base)
+unsigned long simple_strtoul(const char *cp, char **endp,
+   unsigned int base)
 {
-   unsigned long result = 0,value;
+   unsigned long result = 0;
+   unsigned long value;
 
if (*cp == '0') {
cp++;
@@ -50,20 +52,23 @@ unsigned long simple_strtoul(const char *cp,char 
**endp,unsigned int base)
base = 16;
cp++;
}
-   if (!base) {
+
+   if (!base)
base = 8;
-   }
}
-   if (!base) {
+
+   if (!base)
base = 10;
-   }
+
while (isxdigit(*cp)  (value = isdigit(*cp) ? *cp-'0' : (islower(*cp)
? toupper(*cp) : *cp)-'A'+10)  base) {
result = result*base + value;
cp++;
}
+
if (endp)
*endp = (char *)cp;
+
return result;
 }
 
@@ -91,18 +96,19 @@ int strict_strtoul(const char *cp, unsigned int base, 
unsigned long *res)
return -EINVAL;
 }
 
-long simple_strtol(const char *cp,char **endp,unsigned int base)
+long simple_strtol(const char *cp, char **endp, unsigned int base)
 {
-   if(*cp=='-')
-   return -simple_strtoul(cp+1,endp,base);
-   return simple_strtoul(cp,endp,base);
+   if (*cp == '-')
+   return -simple_strtoul(cp + 1, endp, base);
+
+   return simple_strtoul(cp, endp, base);
 }
 
 int ustrtoul(const char *cp, char **endp, unsigned int base)
 {
unsigned long result = simple_strtoul(cp, endp, base);
switch (**endp) {
-   case 'G' :
+   case 'G':
result *= 1024;
/* fall through */
case 'M':
@@ -121,31 +127,34 @@ int ustrtoul(const char *cp, char **endp, unsigned int 
base)
return result;
 }
 
-unsigned long long simple_strtoull (const char *cp, char **endp, unsigned int 
base)
+unsigned long long simple_strtoull(const char *cp, char **endp,
+   unsigned int base)
 {
unsigned long long result = 0, value;
 
if (*cp == '0') {
cp++;
-   if ((*cp == 'x')  isxdigit (cp[1])) {
+   if ((*cp == 'x')  isxdigit(cp[1])) {
base = 16;
cp++;
}
-   if (!base) {
+
+   if (!base)
base = 8;
-   }
}
-   if (!base) {
+
+   if (!base)
base = 10;
-   }
-   while (isxdigit (*cp)  (value = isdigit (*cp)
-   ? *cp - '0'
-   : (islower (*cp) ? toupper (*cp) : *cp) - 'A' + 
10)  base) {
+
+   while (isxdigit(*cp)  (value = isdigit(*cp) ? *cp - '0'
+   : (islower(*cp) ? toupper(*cp) : *cp) - 'A' + 10)  base) {
result = result * base + value;
cp++;
}
+
if (endp)
*endp = (char *) cp;
+
return result;
 }
 
@@ -154,10 +163,11 @@ unsigned long long simple_strtoull (const char *cp, char 
**endp, unsigned int ba
 
 static int skip_atoi(const char **s)
 {
-   int i=0;
+   int i = 0;
 
while (is_digit(**s))
-   i = i*10 + *((*s)++) - '0';
+   i = i * 10 + *((*s)++) - '0';
+
return i;
 }
 
@@ -171,7 +181,7 @@ static int skip_atoi(const char **s)
 /* Formats correctly any integer in [0,9].
  * Outputs from one to five digits depending on input.
  * On i386 gcc 4.1.2 -O2: ~250 bytes of code. */
-static char* put_dec_trunc(char *buf, unsigned q)
+static char *put_dec_trunc(char *buf, unsigned q)
 {
unsigned d3, d2, d1, d0;
d1 = (q4)  0xf;
@@ -200,14 +210,14 @@ static char* put_dec_trunc(char *buf, unsigned q)
d3 = d3 - 10*q;
*buf++ = d3 + '0';  /* next digit */
if (q != 0)
-   *buf++ = q + '0';  /* most sign. digit 
*/
+   *buf++ = q + '0'; /* most sign. digit */
}
}
}
return buf;
 }
 /* Same with if's removed. Always emits five digits */
-static char* 

[U-Boot] [PATCH 2/4] lib: vsprintf.c: replace NUM_TYPE with s64/u64 types

2012-09-16 Thread daniel . schwierzeck
From: Daniel Schwierzeck daniel.schwierz...@gmail.com

This fixes warnings when compiling with ELDK-5.2.1 for MIPS64:

vsprintf.c: In function 'put_dec':
vsprintf.c:258:9: warning: comparison of distinct pointer types lacks a cast 
[enabled by default]
vsprintf.c:258:3: warning: passing argument 1 of '__div64_32' from incompatible 
pointer type [enabled by default]
include/div64.h:22:17: note: expected 'uint64_t *' but argument is of type 
'long long unsigned int *'

Signed-off-by: Daniel Schwierzeck daniel.schwierz...@gmail.com
---
 lib/vsprintf.c | 11 +--
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index 92a9232..d762763 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -23,7 +23,6 @@
 #endif
 
 #include div64.h
-# define NUM_TYPE long long
 #define noinline __attribute__((noinline))
 
 /* some reluctance to put this into a new limits.h, so it is here */
@@ -259,7 +258,7 @@ static char *put_dec_full(char *buf, unsigned q)
return buf;
 }
 /* No inlining helps gcc to use registers better */
-static noinline char *put_dec(char *buf, unsigned NUM_TYPE num)
+static noinline char *put_dec(char *buf, u64 num)
 {
while (1) {
unsigned rem;
@@ -292,7 +291,7 @@ static noinline char *put_dec(char *buf, unsigned NUM_TYPE 
num)
 #define ADDCH(str, ch) (*(str)++ = (ch))
 #endif
 
-static char *number(char *buf, char *end, unsigned NUM_TYPE num,
+static char *number(char *buf, char *end, u64 num,
int base, int size, int precision, int type)
 {
/* we are called with base 8, 10 or 16, only, thus don't need G...  */
@@ -311,9 +310,9 @@ static char *number(char *buf, char *end, unsigned NUM_TYPE 
num,
type = ~ZEROPAD;
sign = 0;
if (type  SIGN) {
-   if ((signed NUM_TYPE) num  0) {
+   if ((s64) num  0) {
sign = '-';
-   num = -(signed NUM_TYPE) num;
+   num = -(s64) num;
size--;
} else if (type  PLUS) {
sign = '+';
@@ -534,7 +533,7 @@ static char *pointer(const char *fmt, char *buf, char *end, 
void *ptr,
 static int vsnprintf_internal(char *buf, size_t size, const char *fmt,
  va_list args)
 {
-   unsigned NUM_TYPE num;
+   u64 num;
int base;
char *str;
 
-- 
1.7.11.3

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 3/4] common: cmd_elf.c: fix checkpath.pl warnings

2012-09-16 Thread daniel . schwierzeck
From: Daniel Schwierzeck daniel.schwierz...@gmail.com

Signed-off-by: Daniel Schwierzeck daniel.schwierz...@gmail.com
---
 common/cmd_elf.c | 134 +++
 1 file changed, 67 insertions(+), 67 deletions(-)

diff --git a/common/cmd_elf.c b/common/cmd_elf.c
index 8266bba..0ca1ac2 100644
--- a/common/cmd_elf.c
+++ b/common/cmd_elf.c
@@ -24,13 +24,13 @@
 DECLARE_GLOBAL_DATA_PTR;
 #endif
 
-int valid_elf_image (unsigned long addr);
+static int valid_elf_image(unsigned long addr);
 static unsigned long load_elf_image_phdr(unsigned long addr);
 static unsigned long load_elf_image_shdr(unsigned long addr);
 
 /* Allow ports to override the default behavior */
 __attribute__((weak))
-unsigned long do_bootelf_exec (ulong (*entry)(int, char * const[]),
+unsigned long do_bootelf_exec(ulong (*entry)(int, char * const[]),
   int argc, char * const argv[])
 {
unsigned long ret;
@@ -39,18 +39,18 @@ unsigned long do_bootelf_exec (ulong (*entry)(int, char * 
const[]),
 * QNX images require the data cache is disabled.
 * Data cache is already flushed, so just turn it off.
 */
-   int dcache = dcache_status ();
+   int dcache = dcache_status();
if (dcache)
-   dcache_disable ();
+   dcache_disable();
 
/*
 * pass address parameter as argv[0] (aka command name),
 * and all remaining args
 */
-   ret = entry (argc, argv);
+   ret = entry(argc, argv);
 
if (dcache)
-   dcache_enable ();
+   dcache_enable();
 
return ret;
 }
@@ -58,7 +58,7 @@ unsigned long do_bootelf_exec (ulong (*entry)(int, char * 
const[]),
 /* ==
  * Interpreter command to boot an arbitrary ELF image from memory.
  * == */
-int do_bootelf (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+int do_bootelf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
unsigned long addr; /* Address of the ELF image */
unsigned long rc;   /* Return value from user code  */
@@ -83,7 +83,7 @@ int do_bootelf (cmd_tbl_t *cmdtp, int flag, int argc, char * 
const argv[])
else
addr = load_addr;
 
-   if (!valid_elf_image (addr))
+   if (!valid_elf_image(addr))
return 1;
 
if (sload  sload[1] == 'p')
@@ -91,17 +91,17 @@ int do_bootelf (cmd_tbl_t *cmdtp, int flag, int argc, char 
* const argv[])
else
addr = load_elf_image_shdr(addr);
 
-   printf (## Starting application at 0x%08lx ...\n, addr);
+   printf(## Starting application at 0x%08lx ...\n, addr);
 
/*
 * pass address parameter as argv[0] (aka command name),
 * and all remaining args
 */
-   rc = do_bootelf_exec ((void *)addr, argc - 1, argv + 1);
+   rc = do_bootelf_exec((void *)addr, argc - 1, argv + 1);
if (rc != 0)
rcode = 1;
 
-   printf (## Application terminated, rc = 0x%lx\n, rc);
+   printf(## Application terminated, rc = 0x%lx\n, rc);
return rcode;
 }
 
@@ -110,10 +110,10 @@ int do_bootelf (cmd_tbl_t *cmdtp, int flag, int argc, 
char * const argv[])
  * be either an ELF image or a raw binary.  Will attempt to setup the
  * bootline and other parameters correctly.
  * == */
-int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
unsigned long addr; /* Address of image*/
-   unsigned long bootaddr; /* Address to put the bootline */
+   unsigned long bootaddr; /* Address to put the bootline */
char *bootline; /* Text of the bootline*/
char *tmp;  /* Temporary char pointer  */
char build_buf[128];/* Buffer for building the bootline */
@@ -127,16 +127,17 @@ int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char 
* const argv[])
if (argc  2)
addr = load_addr;
else
-   addr = simple_strtoul (argv[1], NULL, 16);
+   addr = simple_strtoul(argv[1], NULL, 16);
 
 #if defined(CONFIG_CMD_NET)
-   /* Check to see if we need to tftp the image ourselves before starting 
*/
-
-   if ((argc == 2)  (strcmp (argv[1], tftp) == 0)) {
+   /*
+* Check to see if we need to tftp the image ourselves before starting
+*/
+   if ((argc == 2)  (strcmp(argv[1], tftp) == 0)) {
if (NetLoop(TFTPGET) = 0)
return 1;
-   printf(Automatic boot of VxWorks image at address 0x%08lx 
-   ...\n, addr);
+   

[U-Boot] [PATCH 4/4] common: cmd_elf.c: use uintptr_t for casts from u32 to void*

2012-09-16 Thread daniel . schwierzeck
From: Daniel Schwierzeck daniel.schwierz...@gmail.com

This fixes warnings when compiling with ELDK-5.2.1 for MIPS64:

cmd_elf.c: In function 'load_elf_image_phdr':
cmd_elf.c:289:15: warning: cast to pointer from integer of different size 
[-Wint-to-pointer-cast]
cmd_elf.c: In function 'load_elf_image_shdr':
cmd_elf.c:343:12: warning: cast to pointer from integer of different size 
[-Wint-to-pointer-cast]
cmd_elf.c:346:12: warning: cast to pointer from integer of different size 
[-Wint-to-pointer-cast]

Signed-off-by: Daniel Schwierzeck daniel.schwierz...@gmail.com

---
 common/cmd_elf.c | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/common/cmd_elf.c b/common/cmd_elf.c
index 0ca1ac2..84d884c 100644
--- a/common/cmd_elf.c
+++ b/common/cmd_elf.c
@@ -285,7 +285,7 @@ static unsigned long load_elf_image_phdr(unsigned long addr)
 
/* Load each program header */
for (i = 0; i  ehdr-e_phnum; ++i) {
-   void *dst = (void *) phdr-p_paddr;
+   void *dst = (void *)(uintptr_t) phdr-p_paddr;
void *src = (void *) addr + phdr-p_offset;
debug(Loading phdr %i to 0x%p (%i bytes)\n,
i, dst, phdr-p_filesz);
@@ -340,10 +340,11 @@ static unsigned long load_elf_image_shdr(unsigned long 
addr)
}
 
if (shdr-sh_type == SHT_NOBITS) {
-   memset((void *)shdr-sh_addr, 0, shdr-sh_size);
+   memset((void *)(uintptr_t) shdr-sh_addr, 0,
+   shdr-sh_size);
} else {
image = (unsigned char *) addr + shdr-sh_offset;
-   memcpy((void *) shdr-sh_addr,
+   memcpy((void *)(uintptr_t) shdr-sh_addr,
(const void *) image,
shdr-sh_size);
}
-- 
1.7.11.3

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 01/11] ARM: fix relocation on ARM926EJS

2012-09-16 Thread Marek Vasut
Dear José Miguel Gonçalves,

 On 09/16/2012 04:36 PM, Marek Vasut wrote:
  Dear José Miguel Gonçalves,
  
  On 09/16/2012 11:06 AM, Marek Vasut wrote:
  Dear José Miguel Gonçalves,
  
  On 09/15/2012 07:03 PM, Marek Vasut wrote:
  Dear José Miguel Gonçalves,
  
  Jumping to board_init_r is not performed due to a bug on address
  computation.
  
  Is your CONFIG_SYS_TEXT_BASE configured correctly? I don't detect any
  misbehavior on my arm926 boards.
  
  Maybe because you are not using it to build an SPL?
  
  I do ... and I use CONFIG_SPL_TEXT_BASE properly .
  
  Please check the same chunk of code in other start.S for arm1176 and
  armv7. They have the same code that I put for arm926ejs.
  
  Please wait and please first explain what is the issue.
  
  The issue is what I've explained in the patch comments.
  
  Jumping to board_init_r is not performed due to a bug on address
  computation.
  
  Ok, I don't know how to replicate the bug from this comment or what
  effects it causes or ... well, anything. So please, try to be more
  elaborate in your patch description next time. Anyway ..
 
 My bad. I should be more explicit on the patch description.
 
  Without this
  change the code never reaches board_init_r in the SPL and I think I have
  all the configurations correctly set.
  
  I wonder why you'd ever want to reach board_init_r in the SPL. SPL is
  there only to load the real U-Boot from whatever media, so you usually
  use either NAND SPL or something like that.
  
  What do you boot the rest from ?
 
 Both SPL and U-Boot are in NAND Flash.
 
 The board's SPL code in board/boardcon/mini2416/mini2416_spl.c that
 needs this patch was based on existing code from
 arch/arm/cpu/arm926ejs/davinci/spl.c and arm/cpu/armv7/omap-common/spl.c

CCing Tom, he's the SPL expert.

 The need to call relocate_code() in board_init_f() is explained on the
 SPL source comment, i.e., only to initialize .bss before we could use it
 in board_init_r() (in the serial driver initialization).
 
  If the bug is not from here please
  suggest me what I need to change in the configuration in order to
  correctly boot my board.
  
  Relocation offsets are not needed when building SPL.
  
  Do they cause any trouble?
  
  No! Just not needed.
  
  Signed-off-by: José Miguel Gonçalves jose.goncal...@inov.pt
  ---
  
  Changes for v2:
- None
  
  ---
  
  arch/arm/cpu/arm926ejs/start.S |4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
  
  diff --git a/arch/arm/cpu/arm926ejs/start.S
  b/arch/arm/cpu/arm926ejs/start.S index 6f05f1a..2da5342 100644
  --- a/arch/arm/cpu/arm926ejs/start.S
  +++ b/arch/arm/cpu/arm926ejs/start.S
  
  @@ -325,7 +325,7 @@ _nand_boot_ofs:
 .word nand_boot
  
  #else
  
 ldr r0, _board_init_r_ofs
  
  -  ldr r1, _TEXT_BASE
  +  adr r1, _start
  
 add lr, r0, r1
 add lr, lr, r9
 /* setup parameters for board_init_r */
  
  @@ -338,12 +338,14 @@ _board_init_r_ofs:
 .word board_init_r - _start
  
  #endif
  
  +#ifndef CONFIG_SPL_BUILD
  
  _rel_dyn_start_ofs:
 .word __rel_dyn_start - _start
  
  _rel_dyn_end_ofs:
 .word __rel_dyn_end - _start
  
  _dynsym_start_ofs:
 .word __dynsym_start - _start
  
  +#endif
  
  /*
  
   ***
   *** *** 
  
  Best regards,
  Marek Vasut
  
  Best regards,
  José Gonçalves
  
  Best regards,
  Marek Vasut
  
  Best regards,
  José Gonçalves
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] common/i2c: Add i2c write command

2012-09-16 Thread York Sun
Add i2c write command to write data from memory to i2c devices.

Signed-off-by: York Sun york...@freescale.com
---
 common/cmd_i2c.c |   50 ++
 1 file changed, 50 insertions(+)

diff --git a/common/cmd_i2c.c b/common/cmd_i2c.c
index 2cdc4ed..6099115 100644
--- a/common/cmd_i2c.c
+++ b/common/cmd_i2c.c
@@ -223,6 +223,54 @@ static int do_i2c_read ( cmd_tbl_t *cmdtp, int flag, int 
argc, char * const argv
return 0;
 }
 
+static int do_i2c_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const 
argv[])
+{
+   u_char  chip;
+   uintdevaddr, alen, length;
+   u_char  *memaddr;
+
+   if (argc != 5)
+   return cmd_usage(cmdtp);
+
+   /*
+* memaddr is the address where to store things in memory
+*/
+   memaddr = (u_char *)simple_strtoul(argv[1], NULL, 16);
+
+   /*
+* I2C chip address
+*/
+   chip = simple_strtoul(argv[2], NULL, 16);
+
+   /*
+* I2C data address within the chip.  This can be 1 or
+* 2 bytes long.  Some day it might be 3 bytes long :-).
+*/
+   devaddr = simple_strtoul(argv[3], NULL, 16);
+   alen = get_alen(argv[3]);
+   if (alen  3)
+   return cmd_usage(cmdtp);
+
+   /*
+* Length is the number of objects, not number of bytes.
+*/
+   length = simple_strtoul(argv[4], NULL, 16);
+
+   while (length--  0) {
+   if (i2c_write(chip, devaddr++, alen, memaddr++, 1) != 0) {
+   puts(Error writing to the chip.\n);
+   return 1;
+   }
+/*
+ * No write delay with FRAM devices.
+ */
+#if !defined(CONFIG_SYS_I2C_FRAM)
+   udelay(11000);
+#endif
+   }
+   return 0;
+}
+
 /*
  * Syntax:
  * i2c md {i2c_chip} {addr}{.0, .1, .2} {len}
@@ -1282,6 +1330,7 @@ static cmd_tbl_t cmd_i2c_sub[] = {
U_BOOT_CMD_MKENT(nm, 2, 1, do_i2c_nm, , ),
U_BOOT_CMD_MKENT(probe, 0, 1, do_i2c_probe, , ),
U_BOOT_CMD_MKENT(read, 5, 1, do_i2c_read, , ),
+   U_BOOT_CMD_MKENT(write, 5, 0, do_i2c_write, , ),
U_BOOT_CMD_MKENT(reset, 0, 1, do_i2c_reset, , ),
 #if defined(CONFIG_CMD_SDRAM)
U_BOOT_CMD_MKENT(sdram, 1, 1, do_sdram, , ),
@@ -1333,6 +1382,7 @@ U_BOOT_CMD(
i2c nm chip address[.0, .1, .2] - write to I2C device (constant 
address)\n
i2c probe - show devices on the I2C bus\n
i2c read chip address[.0, .1, .2] length memaddress - read to memory 
\n
+   i2c write memaddress chip address[.0, .1, .2] length - write memory to 
i2c\n
i2c reset - re-init the I2C Controller\n
 #if defined(CONFIG_CMD_SDRAM)
i2c sdram chip - print SDRAM configuration information\n
-- 
1.7.9.5


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [RFC PATCH v2 1/6] linux/usb/ch9.h: update with the version from Linux tree

2012-09-16 Thread Ilya Yanok

Signed-off-by: Ilya Yanok ilya.ya...@cogentembedded.com
---

 drivers/usb/gadget/config.c  |1 -
 drivers/usb/gadget/epautoconf.c  |1 -
 drivers/usb/gadget/ether.c   |1 -
 drivers/usb/gadget/s3c_udc_otg.c |1 -
 drivers/usb/gadget/usbstring.c   |1 -
 include/linux/usb/ch9.h  |  514 --
 include/usb/s3c_udc.h|1 -
 7 files changed, 499 insertions(+), 21 deletions(-)

diff --git a/drivers/usb/gadget/config.c b/drivers/usb/gadget/config.c
index f88d0c1..f9163a8 100644
--- a/drivers/usb/gadget/config.c
+++ b/drivers/usb/gadget/config.c
@@ -27,7 +27,6 @@
 #include linux/string.h
 
 #include linux/usb/ch9.h
-#include usbdescriptors.h
 #include linux/usb/gadget.h
 
 
diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c
index b656c8b..5b8776e 100644
--- a/drivers/usb/gadget/epautoconf.c
+++ b/drivers/usb/gadget/epautoconf.c
@@ -23,7 +23,6 @@
 
 #include common.h
 #include linux/usb/ch9.h
-#include usbdescriptors.h
 #include asm/errno.h
 #include linux/usb/gadget.h
 #include asm/unaligned.h
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index d975fb6..6f7e4cd 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -24,7 +24,6 @@
 #include asm/errno.h
 #include linux/netdevice.h
 #include linux/usb/ch9.h
-#include usbdescriptors.h
 #include linux/usb/cdc.h
 #include linux/usb/gadget.h
 #include net.h
diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c
index 3fdfdf7..f9d24e3 100644
--- a/drivers/usb/gadget/s3c_udc_otg.c
+++ b/drivers/usb/gadget/s3c_udc_otg.c
@@ -37,7 +37,6 @@
 #include malloc.h
 
 #include linux/usb/ch9.h
-#include usbdescriptors.h
 #include linux/usb/gadget.h
 
 #include asm/byteorder.h
diff --git a/drivers/usb/gadget/usbstring.c b/drivers/usb/gadget/usbstring.c
index 4dbe060..9cf 100644
--- a/drivers/usb/gadget/usbstring.c
+++ b/drivers/usb/gadget/usbstring.c
@@ -13,7 +13,6 @@
 #include common.h
 #include asm/errno.h
 #include linux/usb/ch9.h
-#include usbdescriptors.h
 #include linux/usb/gadget.h
 
 #include asm/unaligned.h
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h
index ce1d1e1..d1d732c 100644
--- a/include/linux/usb/ch9.h
+++ b/include/linux/usb/ch9.h
@@ -28,15 +28,13 @@
  * [c] for consistency, removing all doubt even when it appears to
  * someone that the two other points are non-issues for that
  * particular descriptor type.
- *
- * Ported to U-boot by: Thomas Smits ts.sm...@gmail.com and
- *  Remy Bohmer li...@bohmer.net
  */
 
 #ifndef __LINUX_USB_CH9_H
 #define __LINUX_USB_CH9_H
 
 #include linux/types.h   /* __u8 etc */
+#include asm/byteorder.h /* le16_to_cpu */
 
 /*-*/
 
@@ -70,7 +68,7 @@
 #define USB_RECIP_OTHER0x03
 /* From Wireless USB 1.0 */
 #define USB_RECIP_PORT 0x04
-#define USB_RECIP_RPIPE0x05
+#define USB_RECIP_RPIPE0x05
 
 /*
  * Standard requests, for the bRequest field of a SETUP packet.
@@ -90,6 +88,8 @@
 #define USB_REQ_GET_INTERFACE  0x0A
 #define USB_REQ_SET_INTERFACE  0x0B
 #define USB_REQ_SYNCH_FRAME0x0C
+#define USB_REQ_SET_SEL0x30
+#define USB_REQ_SET_ISOCH_DELAY0x31
 
 #define USB_REQ_SET_ENCRYPTION 0x0D/* Wireless USB */
 #define USB_REQ_GET_ENCRYPTION 0x0E
@@ -105,10 +105,16 @@
 #define USB_REQ_LOOPBACK_DATA_READ 0x16
 #define USB_REQ_SET_INTERFACE_DS   0x17
 
+/* The Link Power Management (LPM) ECN defines USB_REQ_TEST_AND_SET command,
+ * used by hubs to put ports into a new L1 suspend state, except that it
+ * forgot to define its number ...
+ */
+
 /*
  * USB feature flags are written using USB_REQ_{CLEAR,SET}_FEATURE, and
  * are read as a bit array returned by USB_REQ_GET_STATUS.  (So there
- * are at most sixteen features of each type.)
+ * are at most sixteen features of each type.)  Hubs may also support a
+ * new USB_REQ_TEST_AND_SET_FEATURE to put ports into L1 suspend.
  */
 #define USB_DEVICE_SELF_POWERED0   /* (read only) */
 #define USB_DEVICE_REMOTE_WAKEUP   1   /* dev may initiate wakeup */
@@ -120,8 +126,38 @@
 #define USB_DEVICE_A_ALT_HNP_SUPPORT   5   /* (otg) other RH port does */
 #define USB_DEVICE_DEBUG_MODE  6   /* (special devices only) */
 
+/*
+ * Test Mode Selectors
+ * See USB 2.0 spec Table 9-7
+ */
+#defineTEST_J  1
+#defineTEST_K  2
+#defineTEST_SE0_NAK3
+#defineTEST_PACKET 4
+#defineTEST_FORCE_EN   5
+
+/*
+ * New Feature Selectors as added by USB 3.0
+ * See USB 3.0 spec Table 9-6
+ */
+#define USB_DEVICE_U1_ENABLE   48  /* dev may initiate U1 transition */
+#define USB_DEVICE_U2_ENABLE   49  /* dev may initiate U2 transition */

[U-Boot] [RFC PATCH v2 0/6] Port of MUSB driver from Linux

2012-09-16 Thread Ilya Yanok
Current MUSB driver in U-Boot uses old UDC API while new gagdet
client drivers need new gadget API. Also current MUSB driver has
some significant limitations (like inability to handle tx for
endpoints other than ep0). So I think port of new Linux driver is
desirable.

This is initial port, performed mostly by putting DM and OTG
code under #ifndef __UBOOT__ clauses. My intention was to be as
close as possible to the original to ease of possible resyncs.
Some warnings are suppressed via CFLAGS. There are some style
problems but I'm not touching them for now for the above mentioned
reason. There is obviously some room for optimisation, some
structure fields are unused as well as (probably) some code.

This is not a replacement for existing MUSB driver (at least for
now), cause there are still consumers of the old interface and
the only ported backend is for TI AM335X (while the old code
has a bunch of other backends).

OTG and DMA are not supported. The only ported driver
is for TI AM33xx, but others should be easy to port too.

Virtual root hub is not implemented but this shouldn't be
a big problem as the old code has virtual root hub support
enabled only for Blackfin platform.

Tested it on AM335x EVM and BeagleBone with CDC Ethernet gadget
and a bunch of storage devices.

Pathes are rather big because of the original code size (and I didn't
delete unused code, just disabled it). So it's probably better to
look at changes as compared to Linux code. I prepared such version
also, you can find it at [1]. Hopefully it will be also useful
if resync with the kernel will be needed in future.

[1] https://github.com/yanok/u-boot/tree/musb-changes-from-linux


Changes in v2:
 - add missing linux-compat.h header
 - added host support
 - glue code moved from musb_gadget_uboot.c to musb_uboot.c and
   cleaned up slightly.
 - added check for malloc return value
 - define is_{host,peripheral}_capable conditionally to support
   compilation with only host or gadget enabled
 - added some more is_{host,peripheral}_capable guards to core
   code to support compilation with only host or gadget enabled
 - rename backend config option to CONFIG_USB_MUSB_DSPS
 - we are providing host support now so add yourself to usb.h
 - init both musb IPs (conditionally) from arch_init not
   from eth_initialize
 - host support enabled
 - define CONFIG_ARCH_INIT as now musb_register() is called
   from arch_init()
 - use new config options

Ilya Yanok (6):
  linux/usb/ch9.h: update with the version from Linux tree
  usb: use linux/usb/ch9.h instead of usbdescriptors.h
  musb-new: port of Linux musb driver
  musb-new: dsps backend driver
  am33xx: init OTG hardware and new musb gadget driver
  am335x_evm: enable both musb gadget and host

 Makefile  |1 +
 arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c   |2 +-
 arch/arm/cpu/armv7/am33xx/board.c |  107 +-
 arch/arm/cpu/armv7/am33xx/clock.c |8 +
 arch/arm/include/asm/arch-am33xx/cpu.h|   11 +-
 arch/arm/include/asm/arch-am33xx/hardware.h   |4 +
 arch/arm/include/asm/omap_musb.h  |   25 +
 arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c |2 +-
 arch/powerpc/cpu/mpc5xxx/usb_ohci.c   |2 +-
 arch/powerpc/cpu/ppc4xx/usb_ohci.c|2 +-
 common/cmd_usb.c  |2 +-
 common/usb.c  |4 +-
 drivers/usb/gadget/config.c   |1 -
 drivers/usb/gadget/epautoconf.c   |1 -
 drivers/usb/gadget/ether.c|1 -
 drivers/usb/gadget/gadget_chips.h |2 +
 drivers/usb/gadget/s3c_udc_otg.c  |1 -
 drivers/usb/gadget/usbstring.c|1 -
 drivers/usb/host/ehci-hcd.c   |   16 +-
 drivers/usb/host/isp116x-hcd.c|2 +-
 drivers/usb/host/ohci-hcd.c   |2 +-
 drivers/usb/host/sl811-hcd.c  |2 +-
 drivers/usb/musb-new/Makefile |   37 +
 drivers/usb/musb-new/linux-compat.h   |  109 ++
 drivers/usb/musb-new/musb_core.c  | 2497 +
 drivers/usb/musb-new/musb_core.h  |  623 ++
 drivers/usb/musb-new/musb_debug.h |   58 +
 drivers/usb/musb-new/musb_dma.h   |  186 ++
 drivers/usb/musb-new/musb_dsps.c  |  771 
 drivers/usb/musb-new/musb_gadget.c| 2333 +++
 drivers/usb/musb-new/musb_gadget.h|  130 ++
 drivers/usb/musb-new/musb_gadget_ep0.c| 1089 +++
 drivers/usb/musb-new/musb_host.c  | 2400 
 drivers/usb/musb-new/musb_host.h  |  114 ++
 drivers/usb/musb-new/musb_io.h|  146 ++
 drivers/usb/musb-new/musb_regs.h  |  645 +++
 drivers/usb/musb-new/musb_uboot.c |  237 +++
 drivers/usb/musb-new/usb-compat.h |   88 +
 

[U-Boot] [RFC PATCH v2 4/6] musb-new: dsps backend driver

2012-09-16 Thread Ilya Yanok
Backend driver for MUSB OTG controllers found on TI AM33xx and
TI81xx SoCs (tested with AM33xx only).

Signed-off-by: Ilya Yanok ilya.ya...@cogentembedded.com
---
Changes in v2:
 - rename backend config option to CONFIG_USB_MUSB_DSPS
 - we are providing host support now so add yourself to usb.h

 arch/arm/include/asm/omap_musb.h |   25 ++
 drivers/usb/musb-new/Makefile|1 +
 drivers/usb/musb-new/musb_dsps.c |  771 ++
 include/usb.h|3 +-
 4 files changed, 799 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/include/asm/omap_musb.h
 create mode 100644 drivers/usb/musb-new/musb_dsps.c

diff --git a/arch/arm/include/asm/omap_musb.h b/arch/arm/include/asm/omap_musb.h
new file mode 100644
index 000..0081a68
--- /dev/null
+++ b/arch/arm/include/asm/omap_musb.h
@@ -0,0 +1,25 @@
+/*
+ * Board data structure for musb gadget on OMAPs
+ *
+ * Copyright (C) 2012, Ilya Yanok ilya.ya...@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __ASM_ARM_OMAP_MUSB_H
+#define __ASM_ARM_OMAP_MUSB_H
+
+extern struct musb_platform_ops musb_dsps_ops;
+
+struct omap_musb_board_data {
+   void (*set_phy_power)(u8 on);
+};
+#endif /* __ASM_ARM_OMAP_MUSB_H */
diff --git a/drivers/usb/musb-new/Makefile b/drivers/usb/musb-new/Makefile
index f01fb16..a753423 100644
--- a/drivers/usb/musb-new/Makefile
+++ b/drivers/usb/musb-new/Makefile
@@ -9,6 +9,7 @@ LIB := $(obj)libusb_musb-new.o
 COBJS-$(CONFIG_MUSB_GADGET) += musb_gadget.o musb_gadget_ep0.o musb_core.o
 COBJS-$(CONFIG_MUSB_GADGET) += musb_uboot.o
 COBJS-$(CONFIG_MUSB_HOST) += musb_host.o musb_core.o musb_uboot.o
+COBJS-$(CONFIG_USB_MUSB_DSPS) += musb_dsps.o
 
 CFLAGS_NO_WARN := $(call cc-option,-Wno-unused-variable) \
$(call cc-option,-Wno-unused-but-set-variable) \
diff --git a/drivers/usb/musb-new/musb_dsps.c b/drivers/usb/musb-new/musb_dsps.c
new file mode 100644
index 000..9a03917
--- /dev/null
+++ b/drivers/usb/musb-new/musb_dsps.c
@@ -0,0 +1,771 @@
+/*
+ * Texas Instruments DSPS platforms glue layer
+ *
+ * Copyright (C) 2012, by Texas Instruments
+ *
+ * Based on the am35x glue layer code.
+ *
+ * This file is part of the Inventra Controller Driver for Linux.
+ *
+ * The Inventra Controller Driver for Linux is free software; you
+ * can redistribute it and/or modify it under the terms of the GNU
+ * General Public License version 2 as published by the Free Software
+ * Foundation.
+ *
+ * The Inventra Controller Driver for Linux is distributed in
+ * the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with The Inventra Controller Driver for Linux ; if not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA  02111-1307  USA
+ *
+ * musb_dsps.c will be a common file for all the TI DSPS platforms
+ * such as dm64x, dm36x, dm35x, da8x, am35x and ti81x.
+ * For now only ti81x is using this and in future davinci.c, am35x.c
+ * da8xx.c would be merged to this file after testing.
+ */
+
+#define __UBOOT__
+#ifndef __UBOOT__
+#include linux/init.h
+#include linux/io.h
+#include linux/err.h
+#include linux/platform_device.h
+#include linux/dma-mapping.h
+#include linux/pm_runtime.h
+#include linux/module.h
+
+#include linux/of.h
+#include linux/of_device.h
+#include linux/of_address.h
+
+#include plat/usb.h
+#else
+#include common.h
+#include asm/omap_musb.h
+#include linux-compat.h
+#endif
+
+#include musb_core.h
+
+/**
+ * avoid using musb_readx()/musb_writex() as glue layer should not be
+ * dependent on musb core layer symbols.
+ */
+static inline u8 dsps_readb(const void __iomem *addr, unsigned offset)
+   { return __raw_readb(addr + offset); }
+
+static inline u32 dsps_readl(const void __iomem *addr, unsigned offset)
+   { return __raw_readl(addr + offset); }
+
+static inline void dsps_writeb(void __iomem *addr, unsigned offset, u8 data)
+   { __raw_writeb(data, addr + offset); }
+
+static inline void dsps_writel(void __iomem *addr, unsigned offset, u32 data)
+   { __raw_writel(data, addr + offset); }
+
+/**
+ * DSPS musb wrapper register offset.
+ * FIXME: This should be expanded to have all the wrapper registers from TI 
DSPS
+ * musb ips.
+ */
+struct dsps_musb_wrapper {
+   u16 

[U-Boot] [RFC PATCH v2 2/6] usb: use linux/usb/ch9.h instead of usbdescriptors.h

2012-09-16 Thread Ilya Yanok
Linux usb/ch9.h seems to have all the same information (and more)
as usbdescriptors.h so use the former instead of the later one.

As a consequense of this change USB_SPEED_* values don't correspond
directly to EHCI speed encoding anymore, I've added necessary
recoding in EHCI driver. Also there is no point to put speed into
pipe anymore so it's removed and a bunch of host drivers fixed to
look at usb_device-speed instead.

Old usbdescriptors.h included is not removed as it seems to be
used by old USB device code.

Signed-off-by: Ilya Yanok ilya.ya...@cogentembedded.com
---

 arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c   |2 +-
 arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c |2 +-
 arch/powerpc/cpu/mpc5xxx/usb_ohci.c   |2 +-
 arch/powerpc/cpu/ppc4xx/usb_ohci.c|2 +-
 common/cmd_usb.c  |2 +-
 common/usb.c  |4 ++--
 drivers/usb/host/ehci-hcd.c   |   16 ++--
 drivers/usb/host/isp116x-hcd.c|2 +-
 drivers/usb/host/ohci-hcd.c   |2 +-
 drivers/usb/host/sl811-hcd.c  |2 +-
 drivers/usb/musb/musb_hcd.c   |4 ++--
 include/usb.h |   15 +++
 include/usb_defs.h|6 --
 13 files changed, 29 insertions(+), 32 deletions(-)

diff --git a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c 
b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
index cf0335c..fad1d25 100644
--- a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
+++ b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
@@ -620,7 +620,7 @@ static struct ed *ep_add_ed(struct usb_device *usb_dev, 
unsigned long pipe)
  | (usb_pipeisoc(pipe) ? 0x8000 : 0)
  | (usb_pipecontrol(pipe) ? 0 :
 (usb_pipeout(pipe) ? 0x800 : 0x1000))
- | usb_pipeslow(pipe)  13 |
+ | (usb_dev-speed == USB_SPEED_LOW)  13 |
  usb_maxpacket(usb_dev, pipe)  16);
 
return ed_ret;
diff --git a/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c 
b/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c
index 7647e11..07bbf6d 100644
--- a/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c
+++ b/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c
@@ -615,7 +615,7 @@ static ed_t * ep_add_ed (struct usb_device *usb_dev, 
unsigned long pipe)
| usb_pipeendpoint (pipe)  7
| (usb_pipeisoc (pipe)? 0x8000: 0)
| (usb_pipecontrol (pipe)? 0: (usb_pipeout (pipe)? 
0x800: 0x1000))
-   | usb_pipeslow (pipe)  13
+   | (usb_dev-speed == USB_SPEED_LOW)  13
| usb_maxpacket (usb_dev, pipe)  16);
 
return ed_ret;
diff --git a/arch/powerpc/cpu/mpc5xxx/usb_ohci.c 
b/arch/powerpc/cpu/mpc5xxx/usb_ohci.c
index 6d91525..19019b3 100644
--- a/arch/powerpc/cpu/mpc5xxx/usb_ohci.c
+++ b/arch/powerpc/cpu/mpc5xxx/usb_ohci.c
@@ -618,7 +618,7 @@ static ed_t * ep_add_ed (struct usb_device *usb_dev, 
unsigned long pipe)
| usb_pipeendpoint (pipe)  7
| (usb_pipeisoc (pipe)? 0x8000: 0)
| (usb_pipecontrol (pipe)? 0: (usb_pipeout (pipe)? 
0x800: 0x1000))
-   | usb_pipeslow (pipe)  13
+   | (usb_dev-speed == USB_SPEED_LOW)  13
| usb_maxpacket (usb_dev, pipe)  16);
 
return ed_ret;
diff --git a/arch/powerpc/cpu/ppc4xx/usb_ohci.c 
b/arch/powerpc/cpu/ppc4xx/usb_ohci.c
index 14c6a28..33a9d6b 100644
--- a/arch/powerpc/cpu/ppc4xx/usb_ohci.c
+++ b/arch/powerpc/cpu/ppc4xx/usb_ohci.c
@@ -621,7 +621,7 @@ static ed_t * ep_add_ed (struct usb_device *usb_dev, 
unsigned long pipe)
| usb_pipeendpoint (pipe)  7
| (usb_pipeisoc (pipe)? 0x8000: 0)
| (usb_pipecontrol (pipe)? 0: (usb_pipeout (pipe)? 
0x800: 0x1000))
-   | usb_pipeslow (pipe)  13
+   | (usb_dev-speed == USB_SPEED_LOW)  13
| usb_maxpacket (usb_dev, pipe)  16);
 
return ed_ret;
diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index a8e3ae5..203c733 100644
--- a/common/cmd_usb.c
+++ b/common/cmd_usb.c
@@ -192,7 +192,7 @@ void usb_display_desc(struct usb_device *dev)
 
 }
 
-void usb_display_conf_desc(struct usb_configuration_descriptor *config,
+void usb_display_conf_desc(struct usb_config_descriptor *config,
   struct usb_device *dev)
 {
printf(   Configuration: %d\n, config-bConfigurationValue);
diff --git a/common/usb.c b/common/usb.c
index 1b40228..8764820 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -459,9 +459,9 @@ int usb_get_configuration_no(struct usb_device *dev,
 {
int result;
unsigned int tmp;
-   struct 

[U-Boot] [RFC PATCH v2 5/6] am33xx: init OTG hardware and new musb gadget driver

2012-09-16 Thread Ilya Yanok
AM33xx has support for dual port MUSB OTG controller. This patch
adds initialization for the controller using new MUSB gadget
driver and ether gadget.

Signed-off-by: Ilya Yanok ilya.ya...@cogentembedded.com
---
Changes in v2:
 - init both musb IPs (conditionally) from arch_init not
   from eth_initialize

 arch/arm/cpu/armv7/am33xx/board.c   |  107 ++-
 arch/arm/cpu/armv7/am33xx/clock.c   |8 ++
 arch/arm/include/asm/arch-am33xx/cpu.h  |   11 ++-
 arch/arm/include/asm/arch-am33xx/hardware.h |4 +
 4 files changed, 126 insertions(+), 4 deletions(-)

diff --git a/arch/arm/cpu/armv7/am33xx/board.c 
b/arch/arm/cpu/armv7/am33xx/board.c
index b387ac2..9007356 100644
--- a/arch/arm/cpu/armv7/am33xx/board.c
+++ b/arch/arm/cpu/armv7/am33xx/board.c
@@ -33,6 +33,11 @@
 #include i2c.h
 #include miiphy.h
 #include cpsw.h
+#include asm/errno.h
+#include linux/usb/ch9.h
+#include linux/usb/gadget.h
+#include linux/usb/musb.h
+#include asm/omap_musb.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -227,6 +232,88 @@ void setup_clocks_for_console(void)
return;
 }
 
+/* AM33XX has two MUSB controllers which can be host or gadget */
+#if (defined(CONFIG_MUSB_GADGET) || defined(CONFIG_MUSB_HOST))  \
+   (defined(CONFIG_AM335X_USB0) || defined(CONFIG_AM335X_USB1))
+/* USB 2.0 PHY Control */
+#define CM_PHY_PWRDN   (1  0)
+#define CM_PHY_OTG_PWRDN   (1  1)
+#define OTGVDET_EN (1  19)
+#define OTGSESSENDEN   (1  20)
+
+static void am33xx_usb_set_phy_power(u8 on, u32 *reg_addr)
+{
+   u32 usb_ctrl_reg;
+
+   usb_ctrl_reg = readl(reg_addr);
+   if (on) {
+   usb_ctrl_reg = ~(CM_PHY_PWRDN | CM_PHY_OTG_PWRDN);
+   usb_ctrl_reg |= (OTGVDET_EN | OTGSESSENDEN);
+   } else {
+   usb_ctrl_reg |= (CM_PHY_PWRDN | CM_PHY_OTG_PWRDN);
+   }
+   writel(usb_ctrl_reg, reg_addr);
+}
+
+static struct musb_hdrc_config musb_config = {
+   .multipoint = 1,
+   .dyn_fifo   = 1,
+   .num_eps= 16,
+   .ram_bits   = 12,
+};
+
+#ifdef CONFIG_AM335X_USB0
+static void am33xx_otg0_set_phy_power(u8 on)
+{
+   am33xx_usb_set_phy_power(on, cdev-usb_ctrl0);
+}
+
+struct omap_musb_board_data otg0_board_data = {
+   .set_phy_power = am33xx_otg0_set_phy_power,
+};
+
+static struct musb_hdrc_platform_data otg0_plat = {
+   .mode   = CONFIG_AM335X_USB0_MODE,
+   .config = musb_config,
+   .power  = 50,
+   .platform_ops   = musb_dsps_ops,
+   .board_data = otg0_board_data,
+};
+#endif
+
+#ifdef CONFIG_AM335X_USB1
+static void am33xx_otg1_set_phy_power(u8 on)
+{
+   am33xx_usb_set_phy_power(on, cdev-usb_ctrl1);
+}
+
+struct omap_musb_board_data otg1_board_data = {
+   .set_phy_power = am33xx_otg1_set_phy_power,
+};
+
+static struct musb_hdrc_platform_data otg1_plat = {
+   .mode   = CONFIG_AM335X_USB1_MODE,
+   .config = musb_config,
+   .power  = 50,
+   .platform_ops   = musb_dsps_ops,
+   .board_data = otg1_board_data,
+};
+#endif
+#endif
+
+int arch_misc_init(void)
+{
+#ifdef CONFIG_AM335X_USB0
+   musb_register(otg0_plat, otg0_board_data,
+   (void *)AM335X_USB0_OTG_BASE);
+#endif
+#ifdef CONFIG_AM335X_USB1
+   musb_register(otg1_plat, otg1_board_data,
+   (void *)AM335X_USB1_OTG_BASE);
+#endif
+   return 0;
+}
+
 /*
  * Basic board specific setup.  Pinmux has been handled already.
  */
@@ -279,9 +366,14 @@ static struct cpsw_platform_data cpsw_data = {
.host_port_num  = 0,
.version= CPSW_CTRL_VERSION_2,
 };
+#endif
 
+#if defined(CONFIG_DRIVER_TI_CPSW) || \
+   (defined(CONFIG_USB_ETHER)  defined(CONFIG_MUSB_GADGET))
 int board_eth_init(bd_t *bis)
 {
+   int rv, n = 0;
+#ifdef CONFIG_DRIVER_TI_CPSW
uint8_t mac_addr[6];
uint32_t mac_hi, mac_lo;
 
@@ -313,6 +405,19 @@ int board_eth_init(bd_t *bis)
PHY_INTERFACE_MODE_RGMII;
}
 
-   return cpsw_register(cpsw_data);
+   rv = cpsw_register(cpsw_data);
+   if (rv  0)
+   printf(Error %d registering CPSW switch\n, rv);
+   else
+   n += rv;
+#endif
+#ifdef CONFIG_USB_ETHER
+   rv = usb_eth_initialize(bis);
+   if (rv  0)
+   printf(Error %d registering USB_ETHER\n, rv);
+   else
+   n += rv;
+#endif
+   return n;
 }
 #endif
diff --git a/arch/arm/cpu/armv7/am33xx/clock.c 
b/arch/arm/cpu/armv7/am33xx/clock.c
index 2b19506..04841e4 100644
--- a/arch/arm/cpu/armv7/am33xx/clock.c
+++ b/arch/arm/cpu/armv7/am33xx/clock.c
@@ -40,6 +40,7 @@
 #define CLK_MODE_MASK  0xfff8
 #define CLK_DIV_SEL0xFFE0
 #define CPGMAC0_IDLE   0x3
+#define DPLL_CLKDCOLDO_GATE_CTRL0x300
 
 const struct cm_perpll *cmper = (struct cm_perpll *)CM_PER;
 const struct cm_wkuppll 

[U-Boot] [RFC PATCH v2 6/6] am335x_evm: enable both musb gadget and host

2012-09-16 Thread Ilya Yanok
Enable musb gadget in Ethernet mode on port 0 and
musb host on port1.

Signed-off-by: Ilya Yanok ilya.ya...@cogentembedded.com
---
Changes in v2:
 - host support enabled
 - define CONFIG_ARCH_INIT as now musb_register() is called
   from arch_init()
 - use new config options

 include/configs/am335x_evm.h |   27 +++
 1 file changed, 27 insertions(+)

diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index a3752bc..7a357f1 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -233,6 +233,33 @@
 #define CONFIG_SKIP_LOWLEVEL_INIT
 #endif
 
+/*
+ * USB configuration
+ */
+#define CONFIG_USB_MUSB_DSPS
+#define CONFIG_ARCH_MISC_INIT
+#define CONFIG_MUSB_GADGET
+#define CONFIG_MUSB_PIO_ONLY
+#define CONFIG_USB_GADGET_DUALSPEED
+#define CONFIG_MUSB_HOST
+#define CONFIG_AM335X_USB0
+#define CONFIG_AM335X_USB0_MODEMUSB_PERIPHERAL
+#define CONFIG_AM335X_USB1
+#define CONFIG_AM335X_USB1_MODE MUSB_HOST
+
+#ifdef CONFIG_MUSB_HOST
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#endif
+
+#ifdef CONFIG_MUSB_GADGET
+#define CONFIG_USB_ETHER
+#define CONFIG_USB_ETH_RNDIS
+#endif /* CONFIG_MUSB_GADGET */
+
+/* Unsupported features */
+#undef CONFIG_USE_IRQ
+
 #define CONFIG_CMD_NET
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_PING
-- 
1.7.9.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 00/71] serial: Massive rework of the serial subsystem

2012-09-16 Thread Marek Vasut
This patchset is a STAGE 1 of preparation of the stdio and serial subsys
for the driver model.

The idea of this patchset is:

1) Clean up the struct serial_device
   Do a coding style cleanup.
2) Replace .init and .uninit with .start and .stop
   This is to bring struct serial_device much closer to struct stdio_dev
   so later on, these structures can be overlayed and struct serial_device
   can be easily passed to stdio subsystem directly.
3) Do minor cleanups on the PXA and MPC512X
   Basically for PXA this means to remove default_serial_console() call
   from every single PXA board and move it into PXA serial driver. For
   MPC512X, that means properly defining PSC console number.
4) Add support for CONFIG_SERIAL_MULTI into every single driver
   Implement support for both non-multi and multi operation into every
   single serial driver in the U-Boot source tree. This is a vast majority
   of this patchset.
5) Unconditionally enable CONFIG_SERIAL_MULTI
   Enable the multi operation throughout the whole U-Boot tree, both for
   SPL and non-SPL builds. There was also some breakage due to this, so
   this patchset also addresses that with minor fixes.
6) Remove unused code used for the non-multi operation
   Remove code that was used when CONFIG_SERIAL_MULTI was not selected.
   Also remove all occurances of CONFIG_SERIAL_MULTI throughout the source
   tree. Some parts of the code must have been adjusted to cope with this
   since they were initially only written for non-multi operation. These
   were minor adjustments mostly in macros though.

This changeset obviously does mean size growth of U-Boot, therefore some
statistics (stock U-Boot first, patchset last):

Configuring for omap3_beagle board...
   textdata bss dec hex filename
 3256878456  266888  601031   92bc7 ./u-boot
 3269128648  266944  602504   93188 ./u-boot
  430821812  198020  242914   3b4e2 ./spl/u-boot-spl
  457941860  198020  245674   3bfaa ./spl/u-boot-spl

Configuring for P1020RDB-PC_36BIT_SPIFLASH - Board: p1_p2_rdb_pc, Options: 
P1020RDB,36BIT,SPIFLASH
   textdata bss dec hex filename
 392469   30628  267568  690665   a89e9 ./u-boot
 394550   30940  267600  693090   a9362 ./u-boot

Configuring for grsim_leon2 board...
   textdata bss dec hex filename
  9565833282640  101626   18cfa ./u-boot
  9705833842640  103082   192aa ./u-boot

Configuring for sandbox board...
   textdata bss dec hex filename
 1373946364   28488  172246   2a0d6 ./u-boot
 1386746456   28504  173634   2a642 ./u-boot

Marek Vasut (71):
  serial: Coding style cleanup of struct serial_device
  serial: Rename .init() and .uninit() in serial_device
  serial: Properly spell out the structure member names of
serial_driver
  serial: pxa: Implement default_serial_console in serial_pxa.c
  serial: pxa: Make use of default_serial_console in serial_pxa
  serial: pxa: Make local functions static
  serial: mpc512x: Properly define CONFIG_SYS_PSC3 in config files
  serial: Implement serial_initfunc() macro
  serial: mpc8xx: Move serial registration from serial_initialize()
  serial: s3c24xx: Move serial registration from serial_initialize()
  serial: pxa: Move serial registration from serial_initialize()
  serial: s5p: Move serial registration from serial_initialize()
  serial: microblaze: Move serial registration from serial_initialize()
  serial: mpc512x: Move serial registration from serial_initialize()
  serial: ns16550: Move serial registration from serial_initialize()
  serial: bfin: Remove the bfin_serialN_device exports from serial.h
  serial: bfin: Adjust serial_register_bfin_uart()
  serial: zoom2: Remove zoom2 serial prototypes from serial.h
  serial: bfin: Flip the jtag serial console to CONFIG_SERIAL_MULTI
  serial: mips: Implement CONFIG_SERIAL_MULTI into au1x00 serial driver
  serial: mips: Implement CONFIG_SERIAL_MULTI into asc serial driver
  serial: mips: Implement CONFIG_SERIAL_MULTI into JZ serial driver
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into mpc5xx serial
driver
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into mpc8220 serial
driver
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into mpc8260 serial
drivers
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into mpc85xx serial
driver
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into iop480 serial
driver
  serial: sparc: Implement CONFIG_SERIAL_MULTI into leon2 serial driver
  serial: sparc: Implement CONFIG_SERIAL_MULTI into leon3 serial driver
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into marvell serial
driver
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into amirix serial
driver
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into bmw serial driver
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into cogent serial
driver
  serial: powerpc: Implement CONFIG_SERIAL_MULTI into cpci750 serial
driver
  serial: powerpc: Implement 

[U-Boot] [PATCH 04/71] serial: pxa: Implement default_serial_console in serial_pxa.c

2012-09-16 Thread Marek Vasut
Implement weak default_serial_console() function in serial_pxa
driver, which gets available in case CONFIG_SERIAL_MULTI is
enabled. This will get helpful in subsequent patches, which will
encapsulate PXA's struct serial_device instances in serial_pxa
driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 drivers/serial/serial_pxa.c |   16 
 1 file changed, 16 insertions(+)

diff --git a/drivers/serial/serial_pxa.c b/drivers/serial/serial_pxa.c
index 97e3f36..ad2d77e 100644
--- a/drivers/serial/serial_pxa.c
+++ b/drivers/serial/serial_pxa.c
@@ -36,6 +36,7 @@
 #include asm/arch/pxa-regs.h
 #include asm/arch/regs-uart.h
 #include asm/io.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -298,4 +299,19 @@ void pxa_puts_dev(unsigned int uart_index, const char *s)
 
 #ifndefCONFIG_SERIAL_MULTI
pxa_uart(serial, UART)
+#else
+__weak struct serial_device *default_serial_console(void)
+{
+#if CONFIG_CONS_INDEX == 1
+   return serial_hwuart_device;
+#elif CONFIG_CONS_INDEX == 2
+   return serial_stuart_device;
+#elif CONFIG_CONS_INDEX == 3
+   return serial_ffuart_device;
+#elif CONFIG_CONS_INDEX == 4
+   return serial_btuart_device;
+#else
+#error Bad CONFIG_CONS_INDEX.
+#endif
+}
 #endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 01/71] serial: Coding style cleanup of struct serial_device

2012-09-16 Thread Marek Vasut
Do a simple cleanup of the struct serial_device and align it with
current coding style. Checkpatch now reports no errors.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 include/serial.h |   23 +++
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/include/serial.h b/include/serial.h
index cbdf8a9..8433ed7 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -5,20 +5,19 @@
 
 struct serial_device {
/* enough bytes to match alignment of following func pointer */
-   char name[16];
-
-   int  (*init) (void);
-   int  (*uninit) (void);
-   void (*setbrg) (void);
-   int (*getc) (void);
-   int (*tstc) (void);
-   void (*putc) (const char c);
-   void (*puts) (const char *s);
+   charname[16];
+
+   int (*init)(void);
+   int (*uninit)(void);
+   void(*setbrg)(void);
+   int (*getc)(void);
+   int (*tstc)(void);
+   void(*putc)(const char c);
+   void(*puts)(const char *s);
 #if CONFIG_POST  CONFIG_SYS_POST_UART
-   void (*loop) (int);
+   void(*loop)(int);
 #endif
-
-   struct serial_device *next;
+   struct serial_device*next;
 };
 
 extern struct serial_device serial_smc_device;
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 11/71] serial: pxa: Move serial registration from serial_initialize()

2012-09-16 Thread Marek Vasut
Move the registration of serial_XXuart ports from default
serial_initialize() into driver specific function called from
serial_initialize(). This slims down the serial_initialize() call
to a bare tracker of all possible serial port registration routines
in U-Boot.

The newly implemented pxa_serial_initialize() function, which is
implemented inside of the serial_pxa driver allows encapsulation
of serial_XXuart within the serial_pxa driver itself.

Also, remove the exports of serial_XXuart from include/serial.h
as they are no longer needed. This is simply because the implementation of
default_serial_console() is wrapped into the serial_pxa driver and
the default console is picked by CONFIG_CONS_IDX macro in config file.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c |   11 ++-
 drivers/serial/serial_pxa.c |   13 +
 include/serial.h|4 
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index b210b05..d457d23 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -41,6 +41,7 @@ static void serial_null(void)
__attribute__((weak, alias(serial_null)));
 
 serial_initfunc(mpc8xx_serial_initialize);
+serial_initfunc(pxa_serial_initialize);
 serial_initfunc(s3c24xx_serial_initialize);
 
 void serial_register(struct serial_device *dev)
@@ -75,15 +76,7 @@ void serial_initialize(void)
serial_register(eserial4_device);
 #endif
 #endif /* CONFIG_SYS_NS16550_SERIAL */
-#if defined(CONFIG_FFUART)
-   serial_register(serial_ffuart_device);
-#endif
-#if defined(CONFIG_BTUART)
-   serial_register(serial_btuart_device);
-#endif
-#if defined(CONFIG_STUART)
-   serial_register(serial_stuart_device);
-#endif
+   pxa_serial_initialize();
s3c24xx_serial_initialize();
 #if defined(CONFIG_S5P)
serial_register(s5p_serial0_device);
diff --git a/drivers/serial/serial_pxa.c b/drivers/serial/serial_pxa.c
index bd3b3cf..46d7689 100644
--- a/drivers/serial/serial_pxa.c
+++ b/drivers/serial/serial_pxa.c
@@ -314,4 +314,17 @@ __weak struct serial_device *default_serial_console(void)
 #error Bad CONFIG_CONS_INDEX.
 #endif
 }
+
+void pxa_serial_initialize(void)
+{
+#if defined(CONFIG_FFUART)
+   serial_register(serial_ffuart_device);
+#endif
+#if defined(CONFIG_BTUART)
+   serial_register(serial_btuart_device);
+#endif
+#if defined(CONFIG_STUART)
+   serial_register(serial_stuart_device);
+#endif
+}
 #endif
diff --git a/include/serial.h b/include/serial.h
index aec6506..c64bb04 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -70,10 +70,6 @@ extern struct serial_device zoom2_serial_device2;
 extern struct serial_device zoom2_serial_device3;
 #endif
 
-extern struct serial_device serial_ffuart_device;
-extern struct serial_device serial_btuart_device;
-extern struct serial_device serial_stuart_device;
-
 #if defined(CONFIG_SYS_BFIN_UART)
 extern void serial_register_bfin_uart(void);
 extern struct serial_device bfin_serial0_device;
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 08/71] serial: Implement serial_initfunc() macro

2012-09-16 Thread Marek Vasut
This macro simplifies declaration of weak aliases for per-driver
functions, which register these drivers with the serial subsystem.
The idea here is to push serial_register() calls from serial.c into
the drivers. To avoid pile of ifdef construct as it is now, create
weak aliases to these functions, which in case the driver is not
present alias onto an empty function, which is in turn optimized out
altogether.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
Cc: Mike Frysinger vap...@gentoo.org
---
 common/serial.c |8 
 1 file changed, 8 insertions(+)

diff --git a/common/serial.c b/common/serial.c
index 5740d4f..84dbe50 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -32,6 +32,14 @@ DECLARE_GLOBAL_DATA_PTR;
 static struct serial_device *serial_devices;
 static struct serial_device *serial_current;
 
+static void serial_null(void)
+{
+}
+
+#define serial_initfunc(name)  \
+   void name(void) \
+   __attribute__((weak, alias(serial_null)));
+
 void serial_register(struct serial_device *dev)
 {
 #ifdef CONFIG_NEEDS_MANUAL_RELOC
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 03/71] serial: Properly spell out the structure member names of serial_driver

2012-09-16 Thread Marek Vasut
Properly spell out the whole structure member names when an initialized
varible is instantiated from the struct serial_driver. In case the
structure definition for struct serial_driver undergoes reordering,
there will be no impact on variables defined based on this structure.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
Cc: Mike Frysinger vap...@gentoo.org
Cc: C Nauman cnau...@diagraph.com
Cc: Minkyu Kang mk7.k...@samsung.com
Cc: Michal Simek mon...@monstr.eu
---
 arch/powerpc/cpu/mpc512x/serial.c  |   18 +-
 arch/powerpc/cpu/mpc5xxx/serial.c  |   32 
 arch/powerpc/cpu/mpc8xx/serial.c   |   32 
 board/logicpd/zoom2/zoom2_serial.h |   16 
 drivers/serial/serial.c|   19 ++-
 drivers/serial/serial_pxa.c|   16 
 drivers/serial/serial_s3c24x0.c|   18 +-
 drivers/serial/serial_s5p.c|   19 ++-
 drivers/serial/serial_xuartlite.c  |   19 ++-
 9 files changed, 96 insertions(+), 93 deletions(-)

diff --git a/arch/powerpc/cpu/mpc512x/serial.c 
b/arch/powerpc/cpu/mpc512x/serial.c
index 7c53346..f4f52ad 100644
--- a/arch/powerpc/cpu/mpc512x/serial.c
+++ b/arch/powerpc/cpu/mpc512x/serial.c
@@ -319,15 +319,15 @@ int serial_getcts_dev(unsigned int idx)
serial_puts_dev(port, s); \
}
 
-#define INIT_PSC_SERIAL_STRUCTURE(port, name) { \
-   name, \
-   serial##port##_init, \
-   serial##port##_uninit, \
-   serial##port##_setbrg, \
-   serial##port##_getc, \
-   serial##port##_tstc, \
-   serial##port##_putc, \
-   serial##port##_puts, \
+#define INIT_PSC_SERIAL_STRUCTURE(port, __name) {  \
+   .name   = __name,   \
+   .start  = serial##port##_init,  \
+   .stop   = serial##port##_uninit,\
+   .setbrg = serial##port##_setbrg,\
+   .getc   = serial##port##_getc,  \
+   .tstc   = serial##port##_tstc,  \
+   .putc   = serial##port##_putc,  \
+   .puts   = serial##port##_puts,  \
 }
 
 #if defined(CONFIG_SYS_PSC1)
diff --git a/arch/powerpc/cpu/mpc5xxx/serial.c 
b/arch/powerpc/cpu/mpc5xxx/serial.c
index aa09f67..9bebff8 100644
--- a/arch/powerpc/cpu/mpc5xxx/serial.c
+++ b/arch/powerpc/cpu/mpc5xxx/serial.c
@@ -338,14 +338,14 @@ int serial1_tstc(void)
 
 struct serial_device serial0_device =
 {
-   serial0,
-   serial0_init,
-   NULL,
-   serial0_setbrg,
-   serial0_getc,
-   serial0_tstc,
-   serial0_putc,
-   serial0_puts,
+   .name   = serial0,
+   .start  = serial0_init,
+   .stop   = NULL,
+   .setbrg = serial0_setbrg,
+   .getc   = serial0_getc,
+   .tstc   = serial0_tstc,
+   .putc   = serial0_putc,
+   .puts   = serial0_puts,
 };
 
 __weak struct serial_device *default_serial_console(void)
@@ -355,14 +355,14 @@ __weak struct serial_device *default_serial_console(void)
 
 struct serial_device serial1_device =
 {
-   serial1,
-   serial1_init,
-   NULL,
-   serial1_setbrg,
-   serial1_getc,
-   serial1_tstc,
-   serial1_putc,
-   serial1_puts,
+   .name   = serial1,
+   .start  = serial1_init,
+   .stop   = NULL,
+   .setbrg = serial1_setbrg,
+   .getc   = serial1_getc,
+   .tstc   = serial1_tstc,
+   .putc   = serial1_putc,
+   .puts   = serial1_puts,
 };
 #endif /* CONFIG_SERIAL_MULTI */
 
diff --git a/arch/powerpc/cpu/mpc8xx/serial.c b/arch/powerpc/cpu/mpc8xx/serial.c
index 9239b24..dc9b323 100644
--- a/arch/powerpc/cpu/mpc8xx/serial.c
+++ b/arch/powerpc/cpu/mpc8xx/serial.c
@@ -390,14 +390,14 @@ smc_tstc(void)
 
 struct serial_device serial_smc_device =
 {
-   serial_smc,
-   smc_init,
-   NULL,
-   smc_setbrg,
-   smc_getc,
-   smc_tstc,
-   smc_putc,
-   smc_puts,
+   .name   = serial_smc,
+   .start  = smc_init,
+   .stop   = NULL,
+   .setbrg = smc_setbrg,
+   .getc   = smc_getc,
+   .tstc   = smc_tstc,
+   .putc   = smc_putc,
+   .puts   = smc_puts,
 };
 
 #endif /* CONFIG_8xx_CONS_SMC1 || CONFIG_8xx_CONS_SMC2 */
@@ -660,14 +660,14 @@ scc_tstc(void)
 
 struct serial_device serial_scc_device =
 {
-   serial_scc,
-   scc_init,
-   NULL,
-   scc_setbrg,
-   scc_getc,
-   scc_tstc,
-   scc_putc,
-   scc_puts,
+   .name   = serial_scc,
+   .start  = scc_init,
+   .stop   = NULL,
+   .setbrg = scc_setbrg,
+   .getc   = scc_getc,
+   .tstc   = scc_tstc,
+   .putc   = scc_putc,
+   .puts   = scc_puts,
 };
 
 #endif /* CONFIG_8xx_CONS_SCCx */
diff --git a/board/logicpd/zoom2/zoom2_serial.h 

[U-Boot] [PATCH 09/71] serial: mpc8xx: Move serial registration from serial_initialize()

2012-09-16 Thread Marek Vasut
Move the registration of serial_smc and serial_scc ports from
default serial_initialize() into CPU specific function called from
serial_initialize(). This slims down the serial_initialize() call
to a bare tracker of all possible serial port registration routines
in U-Boot.

The exports of both serial_scc_device and serial_smc_device can
not yet be removed as they are still used in default_serial_console()
calls.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
Cc: Mike Frysinger vap...@gentoo.org
---
 arch/powerpc/cpu/mpc8xx/serial.c |   11 +++
 common/serial.c  |   11 +++
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/cpu/mpc8xx/serial.c b/arch/powerpc/cpu/mpc8xx/serial.c
index dc9b323..00888e9 100644
--- a/arch/powerpc/cpu/mpc8xx/serial.c
+++ b/arch/powerpc/cpu/mpc8xx/serial.c
@@ -681,6 +681,17 @@ __weak struct serial_device *default_serial_console(void)
 #endif
 }
 
+void mpc8xx_serial_initialize(void)
+{
+#if defined(CONFIG_8xx_CONS_SMC1) || defined(CONFIG_8xx_CONS_SMC2)
+   serial_register(serial_smc_device);
+#endif
+#ifdefined(CONFIG_8xx_CONS_SCC1) || defined(CONFIG_8xx_CONS_SCC2) || \
+   defined(CONFIG_8xx_CONS_SCC3) || defined(CONFIG_8xx_CONS_SCC4)
+   serial_register(serial_scc_device);
+#endif
+}
+
 #ifdef CONFIG_MODEM_SUPPORT
 void disable_putc(void)
 {
diff --git a/common/serial.c b/common/serial.c
index 84dbe50..0187dac 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -40,6 +40,8 @@ static void serial_null(void)
void name(void) \
__attribute__((weak, alias(serial_null)));
 
+serial_initfunc(mpc8xx_serial_initialize);
+
 void serial_register(struct serial_device *dev)
 {
 #ifdef CONFIG_NEEDS_MANUAL_RELOC
@@ -57,14 +59,7 @@ void serial_register(struct serial_device *dev)
 
 void serial_initialize(void)
 {
-#if defined(CONFIG_8xx_CONS_SMC1) || defined(CONFIG_8xx_CONS_SMC2)
-   serial_register(serial_smc_device);
-#endif
-#ifdefined(CONFIG_8xx_CONS_SCC1) || defined(CONFIG_8xx_CONS_SCC2) || \
-   defined(CONFIG_8xx_CONS_SCC3) || defined(CONFIG_8xx_CONS_SCC4)
-   serial_register(serial_scc_device);
-#endif
-
+   mpc8xx_serial_initialize();
 #if defined(CONFIG_SYS_NS16550_SERIAL)
 #if defined(CONFIG_SYS_NS16550_COM1)
serial_register(eserial1_device);
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 12/71] serial: s5p: Move serial registration from serial_initialize()

2012-09-16 Thread Marek Vasut
Move the registration of s5p_serialN_device ports from default
serial_initialize() into driver specific function called from
serial_initialize(). This slims down the serial_initialize() call
to a bare tracker of all possible serial port registration routines
in U-Boot.

The newly implemented s5p_serial_initialize() function, which is
implemented inside of the serial_s5p driver allows encapsulation
of s5p_serialN_device within the serial_s5p driver itself.

Also, remove the exports of s5p_serialN_device from include/serial.h
as they are no longer needed. This is simply because the implementation of
default_serial_console() is wrapped into the serial_s5p driver and
the default console is picked by CONFIG_SERIALN macro in config file.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Minkyu Kang mk7.k...@samsung.com
---
 common/serial.c |8 ++--
 drivers/serial/serial_s5p.c |8 
 include/serial.h|7 ---
 3 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index d457d23..c021c3f 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -43,6 +43,7 @@ static void serial_null(void)
 serial_initfunc(mpc8xx_serial_initialize);
 serial_initfunc(pxa_serial_initialize);
 serial_initfunc(s3c24xx_serial_initialize);
+serial_initfunc(s5p_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -78,12 +79,7 @@ void serial_initialize(void)
 #endif /* CONFIG_SYS_NS16550_SERIAL */
pxa_serial_initialize();
s3c24xx_serial_initialize();
-#if defined(CONFIG_S5P)
-   serial_register(s5p_serial0_device);
-   serial_register(s5p_serial1_device);
-   serial_register(s5p_serial2_device);
-   serial_register(s5p_serial3_device);
-#endif
+   s5p_serial_initialize();
 #if defined(CONFIG_MPC512X)
 #if defined(CONFIG_SYS_PSC1)
serial_register(serial1_device);
diff --git a/drivers/serial/serial_s5p.c b/drivers/serial/serial_s5p.c
index 43cbc4f..3c41242 100644
--- a/drivers/serial/serial_s5p.c
+++ b/drivers/serial/serial_s5p.c
@@ -221,3 +221,11 @@ __weak struct serial_device *default_serial_console(void)
 #error CONFIG_SERIAL? missing.
 #endif
 }
+
+void s5p_serial_initialize(void)
+{
+   serial_register(s5p_serial0_device);
+   serial_register(s5p_serial1_device);
+   serial_register(s5p_serial2_device);
+   serial_register(s5p_serial3_device);
+}
diff --git a/include/serial.h b/include/serial.h
index c64bb04..08a9287 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -56,13 +56,6 @@ extern struct serial_device uartlite_serial2_device;
 extern struct serial_device uartlite_serial3_device;
 #endif
 
-#if defined(CONFIG_S5P)
-extern struct serial_device s5p_serial0_device;
-extern struct serial_device s5p_serial1_device;
-extern struct serial_device s5p_serial2_device;
-extern struct serial_device s5p_serial3_device;
-#endif
-
 #if defined(CONFIG_OMAP3_ZOOM2)
 extern struct serial_device zoom2_serial_device0;
 extern struct serial_device zoom2_serial_device1;
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 17/71] serial: bfin: Adjust serial_register_bfin_uart()

2012-09-16 Thread Marek Vasut
Rename the serial_register_bfin_uart() to bfin_initialize_serial()
to be consistent with the rest of the naming. Next, remove it's
prototype from serial.h and properly insert it into serial.c as
the rest of the serial initialization functions.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Mike Frysinger vap...@gentoo.org
---
 arch/blackfin/cpu/serial.c |2 +-
 common/serial.c|5 ++---
 include/serial.h   |4 
 3 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/arch/blackfin/cpu/serial.c b/arch/blackfin/cpu/serial.c
index 33677ba..64340ec 100644
--- a/arch/blackfin/cpu/serial.c
+++ b/arch/blackfin/cpu/serial.c
@@ -272,7 +272,7 @@ __weak struct serial_device *default_serial_console(void)
 #endif
 }
 
-void serial_register_bfin_uart(void)
+void bfin_serial_initialize(void)
 {
 #ifdef UART0_DLL
serial_register(bfin_serial0_device);
diff --git a/common/serial.c b/common/serial.c
index faad804..0a43c1b 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -45,6 +45,7 @@ serial_initfunc(ns16550_serial_initialize);
 serial_initfunc(pxa_serial_initialize);
 serial_initfunc(s3c24xx_serial_initialize);
 serial_initfunc(s5p_serial_initialize);
+serial_initfunc(bfin_serial_initialize);
 serial_initfunc(mpc512x_serial_initialize);
 serial_initfunc(uartlite_serial_initialize);
 
@@ -71,9 +72,7 @@ void serial_initialize(void)
s3c24xx_serial_initialize();
s5p_serial_initialize();
mpc512x_serial_initialize();
-#if defined(CONFIG_SYS_BFIN_UART)
-   serial_register_bfin_uart();
-#endif
+   bfin_serial_initialize();
uartlite_serial_initialize();
serial_assign(default_serial_console()-name);
 }
diff --git a/include/serial.h b/include/serial.h
index b405792..e65dd26 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -45,10 +45,6 @@ extern struct serial_device zoom2_serial_device2;
 extern struct serial_device zoom2_serial_device3;
 #endif
 
-#if defined(CONFIG_SYS_BFIN_UART)
-extern void serial_register_bfin_uart(void);
-#endif
-
 extern void serial_register(struct serial_device *);
 extern void serial_initialize(void);
 extern void serial_stdio_init(void);
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 02/71] serial: Rename .init() and .uninit() in serial_device

2012-09-16 Thread Marek Vasut
Rename .init() to .start() and .uninit() to .stop() in struct
serial_device. This allows aligning struct serial_device with
closer to struct stdio_dev. The real goal here is to allow
these two structures to converge together and eventually make
one to be a superset of the other.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 arch/blackfin/cpu/serial.c |4 ++--
 common/serial.c|   16 
 include/serial.h   |4 ++--
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/arch/blackfin/cpu/serial.c b/arch/blackfin/cpu/serial.c
index 6603dc0..33677ba 100644
--- a/arch/blackfin/cpu/serial.c
+++ b/arch/blackfin/cpu/serial.c
@@ -236,8 +236,8 @@ static void uart##n##_loop(int state) \
 \
 struct serial_device bfin_serial##n##_device = { \
.name   = bfin_uart#n, \
-   .init   = uart##n##_init, \
-   .uninit = uart##n##_uninit, \
+   .start  = uart##n##_init, \
+   .stop   = uart##n##_uninit, \
.setbrg = uart##n##_setbrg, \
.getc   = uart##n##_getc, \
.tstc   = uart##n##_tstc, \
diff --git a/common/serial.c b/common/serial.c
index 75cc1bb..5740d4f 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -35,7 +35,7 @@ static struct serial_device *serial_current;
 void serial_register(struct serial_device *dev)
 {
 #ifdef CONFIG_NEEDS_MANUAL_RELOC
-   dev-init += gd-reloc_off;
+   dev-start += gd-reloc_off;
dev-setbrg += gd-reloc_off;
dev-getc += gd-reloc_off;
dev-tstc += gd-reloc_off;
@@ -136,8 +136,8 @@ void serial_stdio_init(void)
strcpy(dev.name, s-name);
dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT;
 
-   dev.start = s-init;
-   dev.stop = s-uninit;
+   dev.start = s-start;
+   dev.stop = s-stop;
dev.putc = s-putc;
dev.puts = s-puts;
dev.getc = s-getc;
@@ -168,7 +168,7 @@ void serial_reinit_all(void)
struct serial_device *s;
 
for (s = serial_devices; s; s = s-next)
-   s-init();
+   s-start();
 }
 
 static struct serial_device *get_current(void)
@@ -188,7 +188,7 @@ static struct serial_device *get_current(void)
 
 int serial_init(void)
 {
-   return get_current()-init();
+   return get_current()-start();
 }
 
 void serial_setbrg(void)
@@ -288,9 +288,9 @@ int uart_post_test(int flags)
/* Disable loop back */
s-loop(0);
 
-   /* XXX: There is no serial_uninit() !? */
-   if (s-uninit)
-   s-uninit();
+   /* XXX: There is no serial_stop() !? */
+   if (s-stop)
+   s-stop();
}
 
  done:
diff --git a/include/serial.h b/include/serial.h
index 8433ed7..eb1388c 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -7,8 +7,8 @@ struct serial_device {
/* enough bytes to match alignment of following func pointer */
charname[16];
 
-   int (*init)(void);
-   int (*uninit)(void);
+   int (*start)(void);
+   int (*stop)(void);
void(*setbrg)(void);
int (*getc)(void);
int (*tstc)(void);
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 14/71] serial: mpc512x: Move serial registration from serial_initialize()

2012-09-16 Thread Marek Vasut
Move the registration of serialN_device ports from default
serial_initialize() into driver specific function called from
serial_initialize(). This slims down the serial_initialize() call
to a bare tracker of all possible serial port registration routines
in U-Boot.

The newly implemented mpc512x_serial_initialize() function, which is
implemented inside of the mpc512x serial driver allows encapsulation
of serialN_device within the mpc512x serial driver itself.

Also, remove the exports of serialN_device from include/serial.h
as they are no longer needed. This is simply because the implementation of
default_serial_console() is wrapped into the mpx512x serial driver and
the default console is picked by CONFIG_SERIALN macro in config file.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 arch/powerpc/cpu/mpc512x/serial.c |   16 
 common/serial.c   |   16 ++--
 include/serial.h  |7 ---
 3 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/arch/powerpc/cpu/mpc512x/serial.c 
b/arch/powerpc/cpu/mpc512x/serial.c
index f4f52ad..bc10c50 100644
--- a/arch/powerpc/cpu/mpc512x/serial.c
+++ b/arch/powerpc/cpu/mpc512x/serial.c
@@ -365,6 +365,22 @@ __weak struct serial_device *default_serial_console(void)
 #endif
 }
 
+void mpc512x_serial_initialize(void)
+{
+#if defined(CONFIG_SYS_PSC1)
+   serial_register(serial1_device);
+#endif
+#if defined(CONFIG_SYS_PSC3)
+   serial_register(serial3_device);
+#endif
+#if defined(CONFIG_SYS_PSC4)
+   serial_register(serial4_device);
+#endif
+#if defined(CONFIG_SYS_PSC6)
+   serial_register(serial6_device);
+#endif
+}
+
 #else
 
 void serial_setbrg(void)
diff --git a/common/serial.c b/common/serial.c
index e19a17f..08c6e2a 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -44,6 +44,7 @@ serial_initfunc(mpc8xx_serial_initialize);
 serial_initfunc(pxa_serial_initialize);
 serial_initfunc(s3c24xx_serial_initialize);
 serial_initfunc(s5p_serial_initialize);
+serial_initfunc(mpc512x_serial_initialize);
 serial_initfunc(uartlite_serial_initialize);
 
 void serial_register(struct serial_device *dev)
@@ -81,20 +82,7 @@ void serial_initialize(void)
pxa_serial_initialize();
s3c24xx_serial_initialize();
s5p_serial_initialize();
-#if defined(CONFIG_MPC512X)
-#if defined(CONFIG_SYS_PSC1)
-   serial_register(serial1_device);
-#endif
-#if defined(CONFIG_SYS_PSC3)
-   serial_register(serial3_device);
-#endif
-#if defined(CONFIG_SYS_PSC4)
-   serial_register(serial4_device);
-#endif
-#if defined(CONFIG_SYS_PSC6)
-   serial_register(serial6_device);
-#endif
-#endif
+   mpc512x_serial_initialize();
 #if defined(CONFIG_SYS_BFIN_UART)
serial_register_bfin_uart();
 #endif
diff --git a/include/serial.h b/include/serial.h
index 73991a6..497f49a 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -42,13 +42,6 @@ extern struct serial_device eserial4_device;
 
 #endif
 
-#if defined(CONFIG_MPC512X)
-extern struct serial_device serial1_device;
-extern struct serial_device serial3_device;
-extern struct serial_device serial4_device;
-extern struct serial_device serial6_device;
-#endif
-
 #if defined(CONFIG_OMAP3_ZOOM2)
 extern struct serial_device zoom2_serial_device0;
 extern struct serial_device zoom2_serial_device1;
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 16/71] serial: bfin: Remove the bfin_serialN_device exports from serial.h

2012-09-16 Thread Marek Vasut
Remove the exports from serial.h as they are only used in the blackfin
serial driver. Furthermore, they are only used for registration, which
is handled already inside that driver and default_serial_port() call,
which is also handled in that driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Mike Frysinger vap...@gentoo.org
---
 include/serial.h |4 
 1 file changed, 4 deletions(-)

diff --git a/include/serial.h b/include/serial.h
index 6a42904..b405792 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -47,10 +47,6 @@ extern struct serial_device zoom2_serial_device3;
 
 #if defined(CONFIG_SYS_BFIN_UART)
 extern void serial_register_bfin_uart(void);
-extern struct serial_device bfin_serial0_device;
-extern struct serial_device bfin_serial1_device;
-extern struct serial_device bfin_serial2_device;
-extern struct serial_device bfin_serial3_device;
 #endif
 
 extern void serial_register(struct serial_device *);
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 05/71] serial: pxa: Make use of default_serial_console in serial_pxa

2012-09-16 Thread Marek Vasut
Make use of the newly implemented weak default_serial_console in
the serial_pxa driver. This removes all reimplementations of this
function from board files.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 board/balloon3/balloon3.c |5 -
 board/palmld/palmld.c |5 -
 board/palmtc/palmtc.c |5 -
 board/toradex/colibri_pxa270/colibri_pxa270.c |5 -
 board/trizepsiv/conxs.c   |5 -
 board/vpac270/vpac270.c   |5 -
 board/zipitz2/zipitz2.c   |5 -
 include/configs/balloon3.h|1 +
 include/configs/colibri_pxa270.h  |1 +
 include/configs/lubbock.h |1 +
 include/configs/palmld.h  |1 +
 include/configs/palmtc.h  |1 +
 include/configs/pxa255_idp.h  |1 +
 include/configs/trizepsiv.h   |1 +
 include/configs/vpac270.h |1 +
 include/configs/xaeniax.h |2 +-
 include/configs/zipitz2.h |1 +
 17 files changed, 10 insertions(+), 36 deletions(-)

diff --git a/board/balloon3/balloon3.c b/board/balloon3/balloon3.c
index f360323..c934988 100644
--- a/board/balloon3/balloon3.c
+++ b/board/balloon3/balloon3.c
@@ -53,11 +53,6 @@ int board_init(void)
return 0;
 }
 
-struct serial_device *default_serial_console(void)
-{
-   return serial_stuart_device;
-}
-
 int dram_init(void)
 {
pxa2xx_dram_init();
diff --git a/board/palmld/palmld.c b/board/palmld/palmld.c
index 2f1ad20..57b4f5f 100644
--- a/board/palmld/palmld.c
+++ b/board/palmld/palmld.c
@@ -52,11 +52,6 @@ int board_init(void)
return 0;
 }
 
-struct serial_device *default_serial_console(void)
-{
-   return serial_ffuart_device;
-}
-
 int dram_init(void)
 {
pxa2xx_dram_init();
diff --git a/board/palmtc/palmtc.c b/board/palmtc/palmtc.c
index 4adf152..b23eec8 100644
--- a/board/palmtc/palmtc.c
+++ b/board/palmtc/palmtc.c
@@ -51,11 +51,6 @@ int board_init(void)
return 0;
 }
 
-struct serial_device *default_serial_console(void)
-{
-   return serial_ffuart_device;
-}
-
 int dram_init(void)
 {
pxa2xx_dram_init();
diff --git a/board/toradex/colibri_pxa270/colibri_pxa270.c 
b/board/toradex/colibri_pxa270/colibri_pxa270.c
index d72e5d6..a6e13c8 100644
--- a/board/toradex/colibri_pxa270/colibri_pxa270.c
+++ b/board/toradex/colibri_pxa270/colibri_pxa270.c
@@ -29,11 +29,6 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct serial_device *default_serial_console(void)
-{
-   return serial_ffuart_device;
-}
-
 int board_init(void)
 {
/* We have RAM, disable cache */
diff --git a/board/trizepsiv/conxs.c b/board/trizepsiv/conxs.c
index 1291195..8fc3c40 100644
--- a/board/trizepsiv/conxs.c
+++ b/board/trizepsiv/conxs.c
@@ -135,11 +135,6 @@ int board_late_init(void)
return 0;
 }
 
-struct serial_device *default_serial_console (void)
-{
-   return serial_ffuart_device;
-}
-
 int dram_init(void)
 {
pxa2xx_dram_init();
diff --git a/board/vpac270/vpac270.c b/board/vpac270/vpac270.c
index dfdab9b..2663534 100644
--- a/board/vpac270/vpac270.c
+++ b/board/vpac270/vpac270.c
@@ -50,11 +50,6 @@ int board_init(void)
return 0;
 }
 
-struct serial_device *default_serial_console(void)
-{
-   return serial_ffuart_device;
-}
-
 int dram_init(void)
 {
 #ifndefCONFIG_ONENAND
diff --git a/board/zipitz2/zipitz2.c b/board/zipitz2/zipitz2.c
index 82dfa82..579841d 100644
--- a/board/zipitz2/zipitz2.c
+++ b/board/zipitz2/zipitz2.c
@@ -62,11 +62,6 @@ int board_init (void)
return 0;
 }
 
-struct serial_device *default_serial_console (void)
-{
-   return serial_stuart_device;
-}
-
 int dram_init(void)
 {
pxa2xx_dram_init();
diff --git a/include/configs/balloon3.h b/include/configs/balloon3.h
index 756f409..0f26a5b 100644
--- a/include/configs/balloon3.h
+++ b/include/configs/balloon3.h
@@ -53,6 +53,7 @@
  */
 #defineCONFIG_PXA_SERIAL
 #defineCONFIG_STUART   1
+#define CONFIG_CONS_INDEX  2
 #defineCONFIG_BAUDRATE 115200
 
 /*
diff --git a/include/configs/colibri_pxa270.h b/include/configs/colibri_pxa270.h
index ae84344..bb8bea7 100644
--- a/include/configs/colibri_pxa270.h
+++ b/include/configs/colibri_pxa270.h
@@ -55,6 +55,7 @@
  */
 #defineCONFIG_PXA_SERIAL
 #defineCONFIG_FFUART   1
+#define CONFIG_CONS_INDEX  3
 #defineCONFIG_BAUDRATE 115200
 
 /*
diff --git a/include/configs/lubbock.h b/include/configs/lubbock.h
index 0a1d1e0..ed64960 100644
--- a/include/configs/lubbock.h
+++ b/include/configs/lubbock.h
@@ -64,6 +64,7 @@
  */
 #define CONFIG_PXA_SERIAL
 #define CONFIG_FFUART 1   /* we use FFUART on 

[U-Boot] [PATCH 06/71] serial: pxa: Make local functions static

2012-09-16 Thread Marek Vasut
Make functions that are local-only static, so no hairy symbols
stick out of the serial_pxa driver file.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 drivers/serial/serial_pxa.c |6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/serial/serial_pxa.c b/drivers/serial/serial_pxa.c
index ad2d77e..bd3b3cf 100644
--- a/drivers/serial/serial_pxa.c
+++ b/drivers/serial/serial_pxa.c
@@ -87,7 +87,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #endif
 #endif
 
-uint32_t pxa_uart_get_baud_divider(void)
+static uint32_t pxa_uart_get_baud_divider(void)
 {
if (gd-baudrate == 1200)
return 768;
@@ -105,7 +105,7 @@ uint32_t pxa_uart_get_baud_divider(void)
return 0;
 }
 
-struct pxa_uart_regs *pxa_uart_index_to_regs(uint32_t uart_index)
+static struct pxa_uart_regs *pxa_uart_index_to_regs(uint32_t uart_index)
 {
switch (uart_index) {
case FFUART_INDEX: return (struct pxa_uart_regs *)FFUART_BASE;
@@ -117,7 +117,7 @@ struct pxa_uart_regs *pxa_uart_index_to_regs(uint32_t 
uart_index)
}
 }
 
-void pxa_uart_toggle_clock(uint32_t uart_index, int enable)
+static void pxa_uart_toggle_clock(uint32_t uart_index, int enable)
 {
uint32_t clk_reg, clk_offset, reg;
 
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 15/71] serial: ns16550: Move serial registration from serial_initialize()

2012-09-16 Thread Marek Vasut
Move the registration of eserialN_device ports from default
serial_initialize() into driver specific function called from
serial_initialize(). This slims down the serial_initialize() call
to a bare tracker of all possible serial port registration routines
in U-Boot.

The newly implemented ns16550_serial_initialize() function, which is
implemented inside of the ns16550 serial driver allows encapsulation
of eserialN_device within the ns16550 serial driver itself.

Also, remove the exports of eserialN_device from include/serial.h
as they are no longer needed. This is simply because the implementation of
default_serial_console() is wrapped into the ns16550 serial driver and
the default console is picked by CONFIG_SERIALN macro in config file.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
Cc: Mike Frysinger vap...@gentoo.org
Cc: Michal Simek mon...@monstr.eu
---
 common/serial.c |   16 ++--
 drivers/serial/serial.c |   16 
 include/serial.h|8 ++--
 3 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 08c6e2a..faad804 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -41,6 +41,7 @@ static void serial_null(void)
__attribute__((weak, alias(serial_null)));
 
 serial_initfunc(mpc8xx_serial_initialize);
+serial_initfunc(ns16550_serial_initialize);
 serial_initfunc(pxa_serial_initialize);
 serial_initfunc(s3c24xx_serial_initialize);
 serial_initfunc(s5p_serial_initialize);
@@ -65,20 +66,7 @@ void serial_register(struct serial_device *dev)
 void serial_initialize(void)
 {
mpc8xx_serial_initialize();
-#if defined(CONFIG_SYS_NS16550_SERIAL)
-#if defined(CONFIG_SYS_NS16550_COM1)
-   serial_register(eserial1_device);
-#endif
-#if defined(CONFIG_SYS_NS16550_COM2)
-   serial_register(eserial2_device);
-#endif
-#if defined(CONFIG_SYS_NS16550_COM3)
-   serial_register(eserial3_device);
-#endif
-#if defined(CONFIG_SYS_NS16550_COM4)
-   serial_register(eserial4_device);
-#endif
-#endif /* CONFIG_SYS_NS16550_SERIAL */
+   ns16550_serial_initialize();
pxa_serial_initialize();
s3c24xx_serial_initialize();
s5p_serial_initialize();
diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c
index 9d92dee..00ad97c 100644
--- a/drivers/serial/serial.c
+++ b/drivers/serial/serial.c
@@ -340,4 +340,20 @@ __weak struct serial_device *default_serial_console(void)
 #endif
 }
 
+void ns16550_serial_initialize(void)
+{
+#if defined(CONFIG_SYS_NS16550_COM1)
+   serial_register(eserial1_device);
+#endif
+#if defined(CONFIG_SYS_NS16550_COM2)
+   serial_register(eserial2_device);
+#endif
+#if defined(CONFIG_SYS_NS16550_COM3)
+   serial_register(eserial3_device);
+#endif
+#if defined(CONFIG_SYS_NS16550_COM4)
+   serial_register(eserial4_device);
+#endif
+}
+
 #endif /* CONFIG_SERIAL_MULTI */
diff --git a/include/serial.h b/include/serial.h
index 497f49a..6a42904 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -33,14 +33,10 @@ extern struct serial_device *default_serial_console(void);
defined(CONFIG_TEGRA20) || defined(CONFIG_SYS_COREBOOT)
 extern struct serial_device serial0_device;
 extern struct serial_device serial1_device;
-#if defined(CONFIG_SYS_NS16550_SERIAL)
+#endif
+
 extern struct serial_device eserial1_device;
 extern struct serial_device eserial2_device;
-extern struct serial_device eserial3_device;
-extern struct serial_device eserial4_device;
-#endif /* CONFIG_SYS_NS16550_SERIAL */
-
-#endif
 
 #if defined(CONFIG_OMAP3_ZOOM2)
 extern struct serial_device zoom2_serial_device0;
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 07/71] serial: mpc512x: Properly define CONFIG_SYS_PSC3 in config files

2012-09-16 Thread Marek Vasut
Some of the boards using the mpc512x serial driver didn't properly
define which PSC console to use. This caused breakage when building
with CONFIG_SERIAL_MULTI enabled. Fix this by defining the default
PSC console.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 include/configs/aria.h   |1 +
 include/configs/mecp5123.h   |1 +
 include/configs/mpc5121ads.h |1 +
 3 files changed, 3 insertions(+)

diff --git a/include/configs/aria.h b/include/configs/aria.h
index b21b495..0b31c50 100644
--- a/include/configs/aria.h
+++ b/include/configs/aria.h
@@ -322,6 +322,7 @@
  * Serial console configuration
  */
 #define CONFIG_PSC_CONSOLE 3   /* console on PSC3 */
+#define CONFIG_SYS_PSC3
 #if CONFIG_PSC_CONSOLE != 3
 #error CONFIG_PSC_CONSOLE must be 3
 #endif
diff --git a/include/configs/mecp5123.h b/include/configs/mecp5123.h
index b41bda9..cafc273 100644
--- a/include/configs/mecp5123.h
+++ b/include/configs/mecp5123.h
@@ -222,6 +222,7 @@
  * Serial console configuration
  */
 #define CONFIG_PSC_CONSOLE 3   /* console is on PSC3 */
+#define CONFIG_SYS_PSC3
 #if CONFIG_PSC_CONSOLE != 3
 #error CONFIG_PSC_CONSOLE must be 3
 #endif
diff --git a/include/configs/mpc5121ads.h b/include/configs/mpc5121ads.h
index 9d1327f..3f55d35 100644
--- a/include/configs/mpc5121ads.h
+++ b/include/configs/mpc5121ads.h
@@ -290,6 +290,7 @@
  * Serial console configuration
  */
 #define CONFIG_PSC_CONSOLE 3   /* console is on PSC3 */
+#define CONFIG_SYS_PSC3
 #if CONFIG_PSC_CONSOLE != 3
 #error CONFIG_PSC_CONSOLE must be 3
 #endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 19/71] serial: bfin: Flip the jtag serial console to CONFIG_SERIAL_MULTI

2012-09-16 Thread Marek Vasut
Rework the emulation of serial console via JTAG from simple ad-hoc
implementation of serial port routines to CONFIG_SERIAL_MULTI and
enable CONFIG_SERIAL_MULTI unconditionally for blackfin.

In order for the JTAG serial console to take precedence over all
other serial ports available in system, implement override for
default_serial_console call returning this JTAG serial console.

This brings in a bit of a growth of size, but eventually will allow
us to unconditionally enable CONFIG_SERIAL_MULTI throughout the whole
U-Boot and maintain only one serial subsystem.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Mike Frysinger vap...@gentoo.org
---
 arch/blackfin/cpu/jtag-console.c  |   37 ++---
 common/serial.c   |2 ++
 include/configs/bfin_adi_common.h |2 +-
 3 files changed, 33 insertions(+), 8 deletions(-)

diff --git a/arch/blackfin/cpu/jtag-console.c b/arch/blackfin/cpu/jtag-console.c
index a77358a..7cddb85 100644
--- a/arch/blackfin/cpu/jtag-console.c
+++ b/arch/blackfin/cpu/jtag-console.c
@@ -194,12 +194,35 @@ int drv_jtag_console_init(void)
 }
 
 #ifdef CONFIG_UART_CONSOLE_IS_JTAG
+#include serial.h
 /* Since the JTAG is always available (at power on), allow it to fake a UART */
-void serial_set_baud(uint32_t baud) {}
-void serial_setbrg(void){}
-int serial_init(void)   { return 0; }
-void serial_putc(const char c)  __attribute__((alias(jtag_putc)));
-void serial_puts(const char *s) __attribute__((alias(jtag_puts)));
-int serial_tstc(void)   __attribute__((alias(jtag_tstc)));
-int serial_getc(void)   __attribute__((alias(jtag_getc)));
+void jtag_serial_setbrg(void)
+{
+}
+
+int jtag_serial_init(void)
+{
+   return 0;
+}
+
+static struct serial_device serial_jtag_drv = {
+   .name   = jtag,
+   .start  = jtag_serial_init,
+   .stop   = NULL,
+   .setbrg = jtag_serial_setbrg,
+   .putc   = jtag_putc,
+   .puts   = jtag_puts,
+   .tstc   = jtag_tstc,
+   .getc   = jtag_getc,
+};
+
+void bfin_jtag_initialize(void)
+{
+   serial_register(serial_jtag_drv);
+}
+
+struct serial_device *default_serial_console(void)
+{
+   return serial_jtag_drv;
+}
 #endif
diff --git a/common/serial.c b/common/serial.c
index 0a43c1b..25aeea0 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -46,6 +46,7 @@ serial_initfunc(pxa_serial_initialize);
 serial_initfunc(s3c24xx_serial_initialize);
 serial_initfunc(s5p_serial_initialize);
 serial_initfunc(bfin_serial_initialize);
+serial_initfunc(bfin_jtag_initialize);
 serial_initfunc(mpc512x_serial_initialize);
 serial_initfunc(uartlite_serial_initialize);
 
@@ -73,6 +74,7 @@ void serial_initialize(void)
s5p_serial_initialize();
mpc512x_serial_initialize();
bfin_serial_initialize();
+   bfin_jtag_initialize();
uartlite_serial_initialize();
serial_assign(default_serial_console()-name);
 }
diff --git a/include/configs/bfin_adi_common.h 
b/include/configs/bfin_adi_common.h
index 3fbf5c6..7132f8f 100644
--- a/include/configs/bfin_adi_common.h
+++ b/include/configs/bfin_adi_common.h
@@ -108,11 +108,11 @@
 #define CONFIG_LOADS_ECHO  1
 #define CONFIG_JTAG_CONSOLE
 #define CONFIG_SILENT_CONSOLE
+#define CONFIG_SERIAL_MULTI
 #ifndef CONFIG_BAUDRATE
 # define CONFIG_BAUDRATE   57600
 #endif
 #ifndef CONFIG_DEBUG_EARLY_SERIAL
-# define CONFIG_SERIAL_MULTI
 # define CONFIG_SYS_BFIN_UART
 #endif
 
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 10/71] serial: s3c24xx: Move serial registration from serial_initialize()

2012-09-16 Thread Marek Vasut
Move the registration of s3c24xx_serialN_device ports from
default serial_initialize() into driver specific function called from
serial_initialize(). This slims down the serial_initialize() call
to a bare tracker of all possible serial port registration routines
in U-Boot.

The newly implemented s3c24xx_serial_initialize() function, which is
implemented inside of the serial_s3c24xx driver allows encapsulation
of s3c24xx_serialN_device within the serial_s3c24xx driver itself.

Also, remove the exports of s3c24xx_serialN_device from include/serial.h
as they are no longer needed. This is simply because the implementation of
default_serial_console() is wrapped into the serial_s3c24xx driver and
the default console is picked by CONFIG_SERIALN macro in config file.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: C Nauman cnau...@diagraph.com
---
 common/serial.c |7 ++-
 drivers/serial/serial_s3c24x0.c |7 +++
 include/serial.h|6 --
 3 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 0187dac..b210b05 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -41,6 +41,7 @@ static void serial_null(void)
__attribute__((weak, alias(serial_null)));
 
 serial_initfunc(mpc8xx_serial_initialize);
+serial_initfunc(s3c24xx_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -83,11 +84,7 @@ void serial_initialize(void)
 #if defined(CONFIG_STUART)
serial_register(serial_stuart_device);
 #endif
-#if defined(CONFIG_S3C2410)
-   serial_register(s3c24xx_serial0_device);
-   serial_register(s3c24xx_serial1_device);
-   serial_register(s3c24xx_serial2_device);
-#endif
+   s3c24xx_serial_initialize();
 #if defined(CONFIG_S5P)
serial_register(s5p_serial0_device);
serial_register(s5p_serial1_device);
diff --git a/drivers/serial/serial_s3c24x0.c b/drivers/serial/serial_s3c24x0.c
index fa6aac0..625c6b7 100644
--- a/drivers/serial/serial_s3c24x0.c
+++ b/drivers/serial/serial_s3c24x0.c
@@ -323,4 +323,11 @@ __weak struct serial_device *default_serial_console(void)
 #error CONFIG_SERIAL? missing.
 #endif
 }
+
+void s3c24xx_serial_initialize(void)
+{
+   serial_register(s3c24xx_serial0_device);
+   serial_register(s3c24xx_serial1_device);
+   serial_register(s3c24xx_serial2_device);
+}
 #endif /* CONFIG_SERIAL_MULTI */
diff --git a/include/serial.h b/include/serial.h
index eb1388c..aec6506 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -56,12 +56,6 @@ extern struct serial_device uartlite_serial2_device;
 extern struct serial_device uartlite_serial3_device;
 #endif
 
-#if defined(CONFIG_S3C2410)
-extern struct serial_device s3c24xx_serial0_device;
-extern struct serial_device s3c24xx_serial1_device;
-extern struct serial_device s3c24xx_serial2_device;
-#endif
-
 #if defined(CONFIG_S5P)
 extern struct serial_device s5p_serial0_device;
 extern struct serial_device s5p_serial1_device;
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 20/71] serial: mips: Implement CONFIG_SERIAL_MULTI into au1x00 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into au1x00 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the au1x00 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Daniel Schwierzeck daniel.schwierz...@googlemail.com
---
 arch/mips/cpu/mips32/au1x00/au1x00_serial.c |   74 +++
 common/serial.c |3 ++
 2 files changed, 67 insertions(+), 10 deletions(-)

diff --git a/arch/mips/cpu/mips32/au1x00/au1x00_serial.c 
b/arch/mips/cpu/mips32/au1x00/au1x00_serial.c
index c25ba5a..9682775 100644
--- a/arch/mips/cpu/mips32/au1x00/au1x00_serial.c
+++ b/arch/mips/cpu/mips32/au1x00/au1x00_serial.c
@@ -28,6 +28,8 @@
 #include config.h
 #include common.h
 #include asm/au1x00.h
+#include serial.h
+#include linux/compiler.h
 
 /**
 *
@@ -40,7 +42,7 @@
 * RETURNS: N/A
 */
 
-int serial_init (void)
+static int au1x00_serial_init(void)
 {
volatile u32 *uart_fifoctl = (volatile u32*)(UART0_ADDR+UART_FCR);
volatile u32 *uart_enable = (volatile u32*)(UART0_ADDR+UART_ENABLE);
@@ -63,7 +65,7 @@ int serial_init (void)
 }
 
 
-void serial_setbrg (void)
+static void au1x00_serial_setbrg(void)
 {
volatile u32 *uart_clk = (volatile u32*)(UART0_ADDR+UART_CLK);
volatile u32 *uart_lcr = (volatile u32*)(UART0_ADDR+UART_LCR);
@@ -87,12 +89,13 @@ void serial_setbrg (void)
*uart_lcr = UART_LCR_WLEN8;
 }
 
-void serial_putc (const char c)
+static void au1x00_serial_putc(const char c)
 {
volatile u32 *uart_lsr = (volatile u32*)(UART0_ADDR+UART_LSR);
volatile u32 *uart_tx = (volatile u32*)(UART0_ADDR+UART_TX);
 
-   if (c == '\n') serial_putc ('\r');
+   if (c == '\n')
+   au1x00_serial_putc('\r');
 
/* Wait for fifo to shift out some bytes */
while((*uart_lsrUART_LSR_THRE)==0);
@@ -100,15 +103,13 @@ void serial_putc (const char c)
*uart_tx = (u32)c;
 }
 
-void serial_puts (const char *s)
+static void au1x00_serial_puts(const char *s)
 {
while (*s)
-   {
-   serial_putc (*s++);
-   }
+   serial_putc(*s++);
 }
 
-int serial_getc (void)
+static int au1x00_serial_getc(void)
 {
volatile u32 *uart_rx = (volatile u32*)(UART0_ADDR+UART_RX);
char c;
@@ -119,7 +120,7 @@ int serial_getc (void)
return c;
 }
 
-int serial_tstc (void)
+static int au1x00_serial_tstc(void)
 {
volatile u32 *uart_lsr = (volatile u32*)(UART0_ADDR+UART_LSR);
 
@@ -129,3 +130,56 @@ int serial_tstc (void)
}
return 0;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device au1x00_serial_drv = {
+   .name   = au1x00_serial,
+   .start  = au1x00_serial_init,
+   .stop   = NULL,
+   .setbrg = au1x00_serial_setbrg,
+   .putc   = au1x00_serial_putc,
+   .puts   = au1x00_serial_puts,
+   .getc   = au1x00_serial_getc,
+   .tstc   = au1x00_serial_tstc,
+};
+
+void au1x00_serial_initialize(void)
+{
+   serial_register(au1x00_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return au1x00_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return au1x00_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   au1x00_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   au1x00_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   au1x00_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return au1x00_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return au1x00_serial_tstc();
+}
+#endif
diff --git a/common/serial.c b/common/serial.c
index 25aeea0..6ddc5fa 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -49,6 +49,7 @@ serial_initfunc(bfin_serial_initialize);
 serial_initfunc(bfin_jtag_initialize);
 serial_initfunc(mpc512x_serial_initialize);
 serial_initfunc(uartlite_serial_initialize);
+serial_initfunc(au1x00_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -76,6 +77,8 @@ void serial_initialize(void)
bfin_serial_initialize();
bfin_jtag_initialize();
uartlite_serial_initialize();
+   au1x00_serial_initialize();
+
serial_assign(default_serial_console()-name);
 }
 
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 13/71] serial: microblaze: Move serial registration from serial_initialize()

2012-09-16 Thread Marek Vasut
Move the registration of xuartlite_serialN_device ports from
default serial_initialize() into driver specific function called from
serial_initialize(). This slims down the serial_initialize() call
to a bare tracker of all possible serial port registration routines
in U-Boot.

The newly implemented xuartlite_serial_initialize() function, which is
implemented inside of the serial_xuartlite driver allows encapsulation
of xuartlite_serialN_device within the serial_xuartlite driver itself.

Also, remove the exports of xuartlite_serialN_device from include/serial.h
as they are no longer needed. This is simply because the implementation of
default_serial_console() is wrapped into the serial_xuartlite driver and
the default console is picked by CONFIG_SERIALN macro in config file.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Michal Simek mon...@monstr.eu
---
 common/serial.c   |   16 ++--
 drivers/serial/serial_xuartlite.c |   16 
 include/serial.h  |7 ---
 3 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index c021c3f..e19a17f 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -44,6 +44,7 @@ serial_initfunc(mpc8xx_serial_initialize);
 serial_initfunc(pxa_serial_initialize);
 serial_initfunc(s3c24xx_serial_initialize);
 serial_initfunc(s5p_serial_initialize);
+serial_initfunc(uartlite_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -97,20 +98,7 @@ void serial_initialize(void)
 #if defined(CONFIG_SYS_BFIN_UART)
serial_register_bfin_uart();
 #endif
-#if defined(CONFIG_XILINX_UARTLITE)
-# ifdef XILINX_UARTLITE_BASEADDR
-   serial_register(uartlite_serial0_device);
-# endif /* XILINX_UARTLITE_BASEADDR */
-# ifdef XILINX_UARTLITE_BASEADDR1
-   serial_register(uartlite_serial1_device);
-# endif /* XILINX_UARTLITE_BASEADDR1 */
-# ifdef XILINX_UARTLITE_BASEADDR2
-   serial_register(uartlite_serial2_device);
-# endif /* XILINX_UARTLITE_BASEADDR2 */
-# ifdef XILINX_UARTLITE_BASEADDR3
-   serial_register(uartlite_serial3_device);
-# endif /* XILINX_UARTLITE_BASEADDR3 */
-#endif /* CONFIG_XILINX_UARTLITE */
+   uartlite_serial_initialize();
serial_assign(default_serial_console()-name);
 }
 
diff --git a/drivers/serial/serial_xuartlite.c 
b/drivers/serial/serial_xuartlite.c
index 2b869c1..d90c42d 100644
--- a/drivers/serial/serial_xuartlite.c
+++ b/drivers/serial/serial_xuartlite.c
@@ -177,4 +177,20 @@ __weak struct serial_device *default_serial_console(void)
return uartlite_serial3_device;
 # endif /* XILINX_UARTLITE_BASEADDR3 */
 }
+
+void uartlite_serial_initialize(void)
+{
+#ifdef XILINX_UARTLITE_BASEADDR
+   serial_register(uartlite_serial0_device);
+#endif /* XILINX_UARTLITE_BASEADDR */
+#ifdef XILINX_UARTLITE_BASEADDR1
+   serial_register(uartlite_serial1_device);
+#endif /* XILINX_UARTLITE_BASEADDR1 */
+#ifdef XILINX_UARTLITE_BASEADDR2
+   serial_register(uartlite_serial2_device);
+#endif /* XILINX_UARTLITE_BASEADDR2 */
+#ifdef XILINX_UARTLITE_BASEADDR3
+   serial_register(uartlite_serial3_device);
+#endif /* XILINX_UARTLITE_BASEADDR3 */
+}
 #endif /* CONFIG_SERIAL_MULTI */
diff --git a/include/serial.h b/include/serial.h
index 08a9287..73991a6 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -49,13 +49,6 @@ extern struct serial_device serial4_device;
 extern struct serial_device serial6_device;
 #endif
 
-#if defined(CONFIG_XILINX_UARTLITE)
-extern struct serial_device uartlite_serial0_device;
-extern struct serial_device uartlite_serial1_device;
-extern struct serial_device uartlite_serial2_device;
-extern struct serial_device uartlite_serial3_device;
-#endif
-
 #if defined(CONFIG_OMAP3_ZOOM2)
 extern struct serial_device zoom2_serial_device0;
 extern struct serial_device zoom2_serial_device1;
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 18/71] serial: zoom2: Remove zoom2 serial prototypes from serial.h

2012-09-16 Thread Marek Vasut
Remove the prototypes for zoom2_serial_deviceN from serial.h . This
can't be done right away, as they are referenced from the zoom2
config file. Therefore, adjust the code so the config file only
specifies number of the port. Then, replace the simple return in
default_serial_console() with a switch across possible values, which
returns the zoom2_serial_deviceN . With such adjustment in place,
the exported prototypes in serial.h can be safely removed.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 board/logicpd/zoom2/zoom2_serial.c |7 ++-
 include/configs/omap3_zoom2.h  |2 +-
 include/serial.h   |7 ---
 3 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/board/logicpd/zoom2/zoom2_serial.c 
b/board/logicpd/zoom2/zoom2_serial.c
index 74f165f..9b7aea8 100644
--- a/board/logicpd/zoom2/zoom2_serial.c
+++ b/board/logicpd/zoom2/zoom2_serial.c
@@ -135,5 +135,10 @@ QUAD_INIT (3)
 
 struct serial_device *default_serial_console(void)
 {
-   return ZOOM2_DEFAULT_SERIAL_DEVICE;
+   switch (ZOOM2_DEFAULT_SERIAL_DEVICE) {
+   case 0: return zoom2_serial_device0;
+   case 1: return zoom2_serial_device1;
+   case 2: return zoom2_serial_device2;
+   case 3: return zoom2_serial_device3;
+   }
 }
diff --git a/include/configs/omap3_zoom2.h b/include/configs/omap3_zoom2.h
index 4447dff..a7cc5fc 100644
--- a/include/configs/omap3_zoom2.h
+++ b/include/configs/omap3_zoom2.h
@@ -81,7 +81,7 @@
  * 0 - 1 : first  USB with respect to the left edge of the debug board
  * 2 - 3 : second USB with respect to the left edge of the debug board
  */
-#define ZOOM2_DEFAULT_SERIAL_DEVICE(zoom2_serial_device0)
+#define ZOOM2_DEFAULT_SERIAL_DEVICE0
 
 #define V_NS16550_CLK  (1843200)   /* 1.8432 Mhz */
 
diff --git a/include/serial.h b/include/serial.h
index e65dd26..96f0a89 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -38,13 +38,6 @@ extern struct serial_device serial1_device;
 extern struct serial_device eserial1_device;
 extern struct serial_device eserial2_device;
 
-#if defined(CONFIG_OMAP3_ZOOM2)
-extern struct serial_device zoom2_serial_device0;
-extern struct serial_device zoom2_serial_device1;
-extern struct serial_device zoom2_serial_device2;
-extern struct serial_device zoom2_serial_device3;
-#endif
-
 extern void serial_register(struct serial_device *);
 extern void serial_initialize(void);
 extern void serial_stdio_init(void);
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 22/71] serial: mips: Implement CONFIG_SERIAL_MULTI into JZ serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into JZ serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the JZ driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Daniel Schwierzeck daniel.schwierz...@googlemail.com
---
 arch/mips/cpu/xburst/jz_serial.c |   67 ++
 common/serial.c  |2 ++
 2 files changed, 63 insertions(+), 6 deletions(-)

diff --git a/arch/mips/cpu/xburst/jz_serial.c b/arch/mips/cpu/xburst/jz_serial.c
index e6c48e0..b1e1d27 100644
--- a/arch/mips/cpu/xburst/jz_serial.c
+++ b/arch/mips/cpu/xburst/jz_serial.c
@@ -23,6 +23,8 @@
 #include common.h
 #include asm/io.h
 #include asm/jz4740.h
+#include serial.h
+#include linux/compiler.h
 
 /*
  * serial_init - initialize a channel
@@ -35,7 +37,7 @@
  */
 struct jz4740_uart *uart = (struct jz4740_uart *)CONFIG_SYS_UART_BASE;
 
-int serial_init(void)
+static int jz_serial_init(void)
 {
/* Disable port interrupts while changing hardware */
writeb(0, uart-dlhr_ier);
@@ -62,7 +64,7 @@ int serial_init(void)
return 0;
 }
 
-void serial_setbrg(void)
+static void jz_serial_setbrg(void)
 {
u32 baud_div, tmp;
 
@@ -79,7 +81,7 @@ void serial_setbrg(void)
writeb(tmp, uart-lcr);
 }
 
-int serial_tstc(void)
+static int jz_serial_tstc(void)
 {
if (readb(uart-lsr)  UART_LSR_DR)
return 1;
@@ -87,7 +89,7 @@ int serial_tstc(void)
return 0;
 }
 
-void serial_putc(const char c)
+static void jz_serial_putc(const char c)
 {
if (c == '\n')
serial_putc('\r');
@@ -99,7 +101,7 @@ void serial_putc(const char c)
writeb((u8)c, uart-rbr_thr_dllr);
 }
 
-int serial_getc(void)
+static int jz_serial_getc(void)
 {
while (!serial_tstc())
;
@@ -107,8 +109,61 @@ int serial_getc(void)
return readb(uart-rbr_thr_dllr);
 }
 
-void serial_puts(const char *s)
+static void jz_serial_puts(const char *s)
 {
while (*s)
serial_putc(*s++);
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device jz_serial_drv = {
+   .name   = jz_serial,
+   .start  = jz_serial_init,
+   .stop   = NULL,
+   .setbrg = jz_serial_setbrg,
+   .putc   = jz_serial_putc,
+   .puts   = jz_serial_puts,
+   .getc   = jz_serial_getc,
+   .tstc   = jz_serial_tstc,
+};
+
+void jz_serial_initialize(void)
+{
+   serial_register(jz_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return jz_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return jz_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   jz_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   jz_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   jz_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return jz_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return jz_serial_tstc();
+}
+#endif
diff --git a/common/serial.c b/common/serial.c
index d6e83f8..dd35a62 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -51,6 +51,7 @@ serial_initfunc(mpc512x_serial_initialize);
 serial_initfunc(uartlite_serial_initialize);
 serial_initfunc(au1x00_serial_initialize);
 serial_initfunc(asc_serial_initialize);
+serial_initfunc(jz_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -80,6 +81,7 @@ void serial_initialize(void)
uartlite_serial_initialize();
au1x00_serial_initialize();
asc_serial_initialize();
+   jz_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 21/71] serial: mips: Implement CONFIG_SERIAL_MULTI into asc serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into asc serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the asc driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Daniel Schwierzeck daniel.schwierz...@googlemail.com
---
 arch/mips/cpu/mips32/incaip/asc_serial.c |   67 +++---
 common/serial.c  |2 +
 2 files changed, 63 insertions(+), 6 deletions(-)

diff --git a/arch/mips/cpu/mips32/incaip/asc_serial.c 
b/arch/mips/cpu/mips32/incaip/asc_serial.c
index 7239804..b5f32e2 100644
--- a/arch/mips/cpu/mips32/incaip/asc_serial.c
+++ b/arch/mips/cpu/mips32/incaip/asc_serial.c
@@ -5,6 +5,8 @@
 #include config.h
 #include common.h
 #include asm/inca-ip.h
+#include serial.h
+#include linux/compiler.h
 #include asc_serial.h
 
 
@@ -32,7 +34,7 @@ static volatile incaAsc_t *pAsc = (incaAsc_t *)INCA_IP_ASC;
 * RETURNS: N/A
 */
 
-int serial_init (void)
+static int asc_serial_init(void)
 {
 /* we have to set PMU.EN13 bit to enable an ASC device*/
 INCAASC_PMU_ENABLE(13);
@@ -82,7 +84,7 @@ int serial_init (void)
 return 0;
 }
 
-void serial_setbrg (void)
+static void asc_serial_setbrg(void)
 {
 ulong  uiReloadValue, fdv;
 ulong  f_ASC;
@@ -210,7 +212,7 @@ static int serial_setopt (void)
 return 0;
 }
 
-void serial_putc (const char c)
+static void asc_serial_putc(const char c)
 {
 uint txFl = 0;
 
@@ -234,7 +236,7 @@ void serial_putc (const char c)
 }
 }
 
-void serial_puts (const char *s)
+static void asc_serial_puts(const char *s)
 {
 while (*s)
 {
@@ -242,7 +244,7 @@ void serial_puts (const char *s)
 }
 }
 
-int serial_getc (void)
+static int asc_serial_getc(void)
 {
 ulong symbol_mask;
 char c;
@@ -257,7 +259,7 @@ int serial_getc (void)
 return c;
 }
 
-int serial_tstc (void)
+static int asc_serial_tstc(void)
 {
 int res = 1;
 
@@ -283,3 +285,56 @@ int serial_tstc (void)
 
 return res;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device asc_serial_drv = {
+   .name   = asc_serial,
+   .start  = asc_serial_init,
+   .stop   = NULL,
+   .setbrg = asc_serial_setbrg,
+   .putc   = asc_serial_putc,
+   .puts   = asc_serial_puts,
+   .getc   = asc_serial_getc,
+   .tstc   = asc_serial_tstc,
+};
+
+void asc_serial_initialize(void)
+{
+   serial_register(asc_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return asc_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return asc_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   asc_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   asc_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   asc_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return asc_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return asc_serial_tstc();
+}
+#endif
diff --git a/common/serial.c b/common/serial.c
index 6ddc5fa..d6e83f8 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -50,6 +50,7 @@ serial_initfunc(bfin_jtag_initialize);
 serial_initfunc(mpc512x_serial_initialize);
 serial_initfunc(uartlite_serial_initialize);
 serial_initfunc(au1x00_serial_initialize);
+serial_initfunc(asc_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -78,6 +79,7 @@ void serial_initialize(void)
bfin_jtag_initialize();
uartlite_serial_initialize();
au1x00_serial_initialize();
+   asc_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 23/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into mpc5xx serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into mpc5xx serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the mpc5xx driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 arch/powerpc/cpu/mpc5xx/serial.c |   95 +-
 common/serial.c  |2 +
 2 files changed, 76 insertions(+), 21 deletions(-)

diff --git a/arch/powerpc/cpu/mpc5xx/serial.c b/arch/powerpc/cpu/mpc5xx/serial.c
index 88c6db8..dbaacfc 100644
--- a/arch/powerpc/cpu/mpc5xx/serial.c
+++ b/arch/powerpc/cpu/mpc5xx/serial.c
@@ -33,20 +33,40 @@
 #include watchdog.h
 #include command.h
 #include mpc5xx.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
 /*
- * Local function prototypes
+ * Local functions
  */
 
-static int ready_to_send(void);
+static int ready_to_send(void)
+{
+   volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+   volatile short status;
+
+   do {
+#if defined(CONFIG_5xx_CONS_SCI1)
+   status = immr-im_qsmcm.qsmcm_sc1sr;
+#else
+   status = immr-im_qsmcm.qsmcm_sc2sr;
+#endif
+
+#if defined(CONFIG_WATCHDOG)
+   reset_5xx_watchdog (immr);
+#endif
+   } while ((status  SCI_TDRE) == 0);
+   return 1;
+
+}
 
 /*
  * Minimal global serial functions needed to use one of the SCI modules.
  */
 
-int serial_init (void)
+static int mpc5xx_serial_init(void)
 {
volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
 
@@ -63,7 +83,7 @@ int serial_init (void)
return 0;
 }
 
-void serial_putc(const char c)
+static void mpc5xx_serial_putc(const char c)
 {
volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
 
@@ -85,7 +105,7 @@ void serial_putc(const char c)
}
 }
 
-int serial_getc(void)
+static int mpc5xx_serial_getc(void)
 {
volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
volatile short status;
@@ -113,7 +133,7 @@ int serial_getc(void)
return  tmp;
 }
 
-int serial_tstc()
+static int mpc5xx_serial_tstc()
 {
volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
short status;
@@ -127,7 +147,7 @@ int serial_tstc()
return (status  SCI_RDRF);
 }
 
-void serial_setbrg (void)
+static void mpc5xx_serial_setbrg(void)
 {
volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
short scxbr;
@@ -141,7 +161,7 @@ void serial_setbrg (void)
 #endif
 }
 
-void serial_puts (const char *s)
+static void mpc5xx_serial_puts(const char *s)
 {
while (*s) {
serial_putc(*s);
@@ -149,22 +169,55 @@ void serial_puts (const char *s)
}
 }
 
-int ready_to_send(void)
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device mpc5xx_serial_drv = {
+   .name   = mpc5xx_serial,
+   .start  = mpc5xx_serial_init,
+   .stop   = NULL,
+   .setbrg = mpc5xx_serial_setbrg,
+   .putc   = mpc5xx_serial_putc,
+   .puts   = mpc5xx_serial_puts,
+   .getc   = mpc5xx_serial_getc,
+   .tstc   = mpc5xx_serial_tstc,
+};
+
+void mpc5xx_serial_initialize(void)
 {
-   volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
-   volatile short status;
+   serial_register(mpc5xx_serial_drv);
+}
 
-   do {
-#if defined(CONFIG_5xx_CONS_SCI1)
-   status = immr-im_qsmcm.qsmcm_sc1sr;
+__weak struct serial_device *default_serial_console(void)
+{
+   return mpc5xx_serial_drv;
+}
 #else
-   status = immr-im_qsmcm.qsmcm_sc2sr;
-#endif
+int serial_init(void)
+{
+   return mpc5xx_serial_init();
+}
 
-#if defined(CONFIG_WATCHDOG)
-   reset_5xx_watchdog (immr);
-#endif
-   } while ((status  SCI_TDRE) == 0);
-   return 1;
+void serial_setbrg(void)
+{
+   mpc5xx_serial_setbrg();
+}
 
+void serial_putc(const char c)
+{
+   mpc5xx_serial_putc(c);
 }
+
+void serial_puts(const char *s)
+{
+   mpc5xx_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return mpc5xx_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return mpc5xx_serial_tstc();
+}
+#endif
diff --git a/common/serial.c b/common/serial.c
index dd35a62..69fa583 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -52,6 +52,7 @@ serial_initfunc(uartlite_serial_initialize);
 serial_initfunc(au1x00_serial_initialize);
 serial_initfunc(asc_serial_initialize);
 serial_initfunc(jz_serial_initialize);
+serial_initfunc(mpc5xx_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -82,6 +83,7 @@ void serial_initialize(void)
au1x00_serial_initialize();
asc_serial_initialize();
jz_serial_initialize();
+   mpc5xx_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4


[U-Boot] [PATCH 24/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into mpc8220 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into mpc8220 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the mpc8220 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 arch/powerpc/cpu/mpc8220/uart.c |   67 +++
 common/serial.c |2 ++
 2 files changed, 63 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/cpu/mpc8220/uart.c b/arch/powerpc/cpu/mpc8220/uart.c
index 0c4b536..545c81a 100644
--- a/arch/powerpc/cpu/mpc8220/uart.c
+++ b/arch/powerpc/cpu/mpc8220/uart.c
@@ -29,13 +29,15 @@
 
 #include common.h
 #include mpc8220.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
 #define PSC_BASE   MMAP_PSC1
 
 #if defined(CONFIG_PSC_CONSOLE)
-int serial_init (void)
+static int mpc8220_serial_init(void)
 {
volatile psc8220_t *psc = (psc8220_t *) PSC_BASE;
u32 counter;
@@ -69,7 +71,7 @@ int serial_init (void)
return (0);
 }
 
-void serial_putc (const char c)
+static void mpc8220_serial_putc(const char c)
 {
volatile psc8220_t *psc = (psc8220_t *) PSC_BASE;
 
@@ -82,14 +84,14 @@ void serial_putc (const char c)
psc-xmitbuf[0] = c;
 }
 
-void serial_puts (const char *s)
+static void mpc8220_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
-int serial_getc (void)
+static int mpc8220_serial_getc(void)
 {
volatile psc8220_t *psc = (psc8220_t *) PSC_BASE;
 
@@ -98,14 +100,14 @@ int serial_getc (void)
return psc-xmitbuf[2];
 }
 
-int serial_tstc (void)
+static int mpc8220_serial_tstc(void)
 {
volatile psc8220_t *psc = (psc8220_t *) PSC_BASE;
 
return (psc-sr_csr  PSC_SR_RXRDY);
 }
 
-void serial_setbrg (void)
+static void mpc8220_serial_setbrg(void)
 {
volatile psc8220_t *psc = (psc8220_t *) PSC_BASE;
u32 counter;
@@ -123,4 +125,57 @@ void serial_setbrg (void)
 
psc-cr = PSC_CR_RX_ENABLE | PSC_CR_TX_ENABLE;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device mpc8220_serial_drv = {
+   .name   = mpc8220_serial,
+   .start  = mpc8220_serial_init,
+   .stop   = NULL,
+   .setbrg = mpc8220_serial_setbrg,
+   .putc   = mpc8220_serial_putc,
+   .puts   = mpc8220_serial_puts,
+   .getc   = mpc8220_serial_getc,
+   .tstc   = mpc8220_serial_tstc,
+};
+
+void mpc8220_serial_initialize(void)
+{
+   serial_register(mpc8220_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return mpc8220_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return mpc8220_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   mpc8220_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   mpc8220_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   mpc8220_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return mpc8220_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return mpc8220_serial_tstc();
+}
+#endif
 #endif /* CONFIG_PSC_CONSOLE */
diff --git a/common/serial.c b/common/serial.c
index 69fa583..db06f97 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -53,6 +53,7 @@ serial_initfunc(au1x00_serial_initialize);
 serial_initfunc(asc_serial_initialize);
 serial_initfunc(jz_serial_initialize);
 serial_initfunc(mpc5xx_serial_initialize);
+serial_initfunc(mpc8220_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -84,6 +85,7 @@ void serial_initialize(void)
asc_serial_initialize();
jz_serial_initialize();
mpc5xx_serial_initialize();
+   mpc8220_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 25/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into mpc8260 serial drivers

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into both SCC and SMC mpc8260
serial drivers. These drivers were so far only usable directly, but this
patch also adds support for the multi method. This allows using more than
one serial driver alongside the mpc8260 drivers. Also, add a weak
implementation of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 arch/powerpc/cpu/mpc8260/serial_scc.c |   71 -
 arch/powerpc/cpu/mpc8260/serial_smc.c |   71 -
 common/serial.c   |4 ++
 3 files changed, 124 insertions(+), 22 deletions(-)

diff --git a/arch/powerpc/cpu/mpc8260/serial_scc.c 
b/arch/powerpc/cpu/mpc8260/serial_scc.c
index 4ab6a28..cfbcd79 100644
--- a/arch/powerpc/cpu/mpc8260/serial_scc.c
+++ b/arch/powerpc/cpu/mpc8260/serial_scc.c
@@ -31,6 +31,8 @@
 #include common.h
 #include mpc8260.h
 #include asm/cpm_8260.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -82,7 +84,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #endif
 
-int serial_init (void)
+static int mpc8260_scc_serial_init(void)
 {
volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
volatile scc_t *sp;
@@ -180,8 +182,7 @@ int serial_init (void)
return (0);
 }
 
-void
-serial_setbrg (void)
+static void mpc8260_scc_serial_setbrg(void)
 {
 #if defined(CONFIG_CONS_USE_EXTC)
m8260_cpm_extcbrg(SCC_INDEX, gd-baudrate,
@@ -191,8 +192,7 @@ serial_setbrg (void)
 #endif
 }
 
-void
-serial_putc(const char c)
+static void mpc8260_scc_serial_putc(const char c)
 {
volatile scc_uart_t *up;
volatile cbd_t  *tbdf;
@@ -217,16 +217,14 @@ serial_putc(const char c)
tbdf-cbd_sc |= BD_SC_READY;
 }
 
-void
-serial_puts (const char *s)
+static void mpc8260_scc_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
-int
-serial_getc(void)
+static int mpc8260_scc_serial_getc(void)
 {
volatile cbd_t  *rbdf;
volatile scc_uart_t *up;
@@ -250,8 +248,7 @@ serial_getc(void)
return (c);
 }
 
-int
-serial_tstc()
+static int mpc8260_scc_serial_tstc(void)
 {
volatile cbd_t  *rbdf;
volatile scc_uart_t *up;
@@ -264,6 +261,58 @@ serial_tstc()
return ((rbdf-cbd_sc  BD_SC_EMPTY) == 0);
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device mpc8260_scc_serial_drv = {
+   .name   = mpc8260_scc_serial,
+   .start  = mpc8260_scc_serial_init,
+   .stop   = NULL,
+   .setbrg = mpc8260_scc_serial_setbrg,
+   .putc   = mpc8260_scc_serial_putc,
+   .puts   = mpc8260_scc_serial_puts,
+   .getc   = mpc8260_scc_serial_getc,
+   .tstc   = mpc8260_scc_serial_tstc,
+};
+
+void mpc8260_scc_serial_initialize(void)
+{
+   serial_register(mpc8260_scc_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return mpc8260_scc_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return mpc8260_scc_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   mpc8260_scc_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   mpc8260_scc_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   mpc8260_scc_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return mpc8260_scc_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return mpc8260_scc_serial_tstc();
+}
+#endif
 #endif /* CONFIG_CONS_ON_SCC */
 
 #if defined(CONFIG_KGDB_ON_SCC)
diff --git a/arch/powerpc/cpu/mpc8260/serial_smc.c 
b/arch/powerpc/cpu/mpc8260/serial_smc.c
index 7b6eaba..012fc98 100644
--- a/arch/powerpc/cpu/mpc8260/serial_smc.c
+++ b/arch/powerpc/cpu/mpc8260/serial_smc.c
@@ -33,6 +33,8 @@
 #include common.h
 #include mpc8260.h
 #include asm/cpm_8260.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -91,7 +93,7 @@ static unsigned char brg_map[] = {
3,  /* BRG1 for SCC4 */
 };
 
-int serial_init (void)
+static int mpc8260_smc_serial_init(void)
 {
volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
volatile smc_t *sp;
@@ -183,8 +185,7 @@ int serial_init (void)
return (0);
 }
 
-void
-serial_setbrg (void)
+static void mpc8260_smc_serial_setbrg(void)
 {
 #if defined(CONFIG_CONS_USE_EXTC)
m8260_cpm_extcbrg(brg_map[SMC_INDEX], gd-baudrate,
@@ -194,8 +195,7 @@ serial_setbrg (void)
 #endif
 }
 
-void
-serial_putc(const char c)
+static void mpc8260_smc_serial_putc(const char c)
 {
volatile smc_uart_t *up;
volatile immap_t*im = (immap_t *)CONFIG_SYS_IMMR;
@@ -216,16 +216,14 @@ serial_putc(const char c)
rtx-txbd.cbd_sc |= BD_SC_READY;
 }
 
-void
-serial_puts (const char *s)
+static void mpc8260_smc_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }

[U-Boot] [PATCH 26/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into mpc85xx serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into mpc85xx serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the mpc85xx driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 arch/powerpc/cpu/mpc85xx/serial_scc.c |   71 -
 common/serial.c   |2 +
 2 files changed, 62 insertions(+), 11 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/serial_scc.c 
b/arch/powerpc/cpu/mpc85xx/serial_scc.c
index 2dab212..d192642 100644
--- a/arch/powerpc/cpu/mpc85xx/serial_scc.c
+++ b/arch/powerpc/cpu/mpc85xx/serial_scc.c
@@ -34,6 +34,8 @@
 
 #include common.h
 #include asm/cpm_85xx.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -85,7 +87,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #endif
 
-int serial_init (void)
+static int mpc85xx_serial_init(void)
 {
volatile ccsr_cpm_t *cpm = (ccsr_cpm_t *)CONFIG_SYS_MPC85xx_CPM_ADDR;
volatile ccsr_cpm_scc_t *sp;
@@ -184,8 +186,7 @@ int serial_init (void)
return (0);
 }
 
-void
-serial_setbrg (void)
+static void mpc85xx_serial_setbrg(void)
 {
 #if defined(CONFIG_CONS_USE_EXTC)
m8560_cpm_extcbrg(SCC_INDEX, gd-baudrate,
@@ -195,8 +196,7 @@ serial_setbrg (void)
 #endif
 }
 
-void
-serial_putc(const char c)
+static void mpc85xx_serial_putc(const char c)
 {
volatile scc_uart_t *up;
volatile cbd_t  *tbdf;
@@ -220,16 +220,14 @@ serial_putc(const char c)
tbdf-cbd_sc |= BD_SC_READY;
 }
 
-void
-serial_puts (const char *s)
+static void mpc85xx_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
-int
-serial_getc(void)
+static int mpc85xx_serial_getc(void)
 {
volatile cbd_t  *rbdf;
volatile scc_uart_t *up;
@@ -252,8 +250,7 @@ serial_getc(void)
return (c);
 }
 
-int
-serial_tstc()
+static int mpc85xx_serial_tstc(void)
 {
volatile cbd_t  *rbdf;
volatile scc_uart_t *up;
@@ -265,4 +262,56 @@ serial_tstc()
return ((rbdf-cbd_sc  BD_SC_EMPTY) == 0);
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device mpc85xx_serial_drv = {
+   .name   = mpc85xx_serial,
+   .start  = mpc85xx_serial_init,
+   .stop   = NULL,
+   .setbrg = mpc85xx_serial_setbrg,
+   .putc   = mpc85xx_serial_putc,
+   .puts   = mpc85xx_serial_puts,
+   .getc   = mpc85xx_serial_getc,
+   .tstc   = mpc85xx_serial_tstc,
+};
+
+void mpc85xx_serial_initialize(void)
+{
+   serial_register(mpc85xx_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return mpc85xx_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return mpc85xx_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   mpc85xx_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   mpc85xx_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   mpc85xx_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return mpc85xx_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return mpc85xx_serial_tstc();
+}
+#endif
 #endif /* CONFIG_CONS_ON_SCC */
diff --git a/common/serial.c b/common/serial.c
index 5c8cbdd..aeae51d 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -56,6 +56,7 @@ serial_initfunc(mpc5xx_serial_initialize);
 serial_initfunc(mpc8220_serial_initialize);
 serial_initfunc(mpc8260_scc_serial_initialize);
 serial_initfunc(mpc8260_smc_serial_initialize);
+serial_initfunc(mpc85xx_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -90,6 +91,7 @@ void serial_initialize(void)
mpc8220_serial_initialize();
mpc8260_scc_serial_initialize();
mpc8260_smc_serial_initialize();
+   mpc85xx_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 27/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into iop480 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into iop480 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the iop480 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 arch/powerpc/cpu/ppc4xx/iop480_uart.c |   65 ++---
 common/serial.c   |2 +
 2 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/cpu/ppc4xx/iop480_uart.c 
b/arch/powerpc/cpu/ppc4xx/iop480_uart.c
index 027ca30..fb25e15 100644
--- a/arch/powerpc/cpu/ppc4xx/iop480_uart.c
+++ b/arch/powerpc/cpu/ppc4xx/iop480_uart.c
@@ -29,6 +29,7 @@
 
 #ifdef CONFIG_SERIAL_MULTI
 #include serial.h
+#include linux/compiler.h
 #endif
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -132,7 +133,7 @@ DECLARE_GLOBAL_DATA_PTR;
  * as serial console interface.
  */
 
-int serial_init (void)
+static int iop480_serial_init(void)
 {
unsigned short br_reg;
 
@@ -153,7 +154,7 @@ int serial_init (void)
return (0);
 }
 
-void serial_setbrg (void)
+static void iop480_serial_setbrg(void)
 {
unsigned short br_reg;
 
@@ -165,7 +166,7 @@ void serial_setbrg (void)
  ((br_reg  0xff00)  8)); /* ... */
 }
 
-void serial_putc (const char c)
+static void iop480_serial_putc(const char c)
 {
if (c == '\n')
serial_putc ('\r');
@@ -182,14 +183,14 @@ void serial_putc (const char c)
}
 }
 
-void serial_puts (const char *s)
+static void iop480_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
-int serial_getc ()
+static int iop480_serial_getc(void)
 {
unsigned char status = 0;
 
@@ -212,7 +213,7 @@ int serial_getc ()
return (0x00ff  (int) in_8((u8 *)asyncRxBufferport1));
 }
 
-int serial_tstc ()
+static int iop480_serial_tstc(void)
 {
unsigned char status;
 
@@ -233,4 +234,56 @@ int serial_tstc ()
return 0;
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device iop480_serial_drv = {
+   .name   = iop480_serial,
+   .start  = iop480_serial_init,
+   .stop   = NULL,
+   .setbrg = iop480_serial_setbrg,
+   .putc   = iop480_serial_putc,
+   .puts   = iop480_serial_puts,
+   .getc   = iop480_serial_getc,
+   .tstc   = iop480_serial_tstc,
+};
+
+void iop480_serial_initialize(void)
+{
+   serial_register(iop480_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return iop480_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return iop480_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   iop480_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   iop480_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   iop480_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return iop480_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return iop480_serial_tstc();
+}
+#endif
 #endif /* CONFIG_IOP480 */
diff --git a/common/serial.c b/common/serial.c
index aeae51d..398ad30 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -57,6 +57,7 @@ serial_initfunc(mpc8220_serial_initialize);
 serial_initfunc(mpc8260_scc_serial_initialize);
 serial_initfunc(mpc8260_smc_serial_initialize);
 serial_initfunc(mpc85xx_serial_initialize);
+serial_initfunc(iop480_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -92,6 +93,7 @@ void serial_initialize(void)
mpc8260_scc_serial_initialize();
mpc8260_smc_serial_initialize();
mpc85xx_serial_initialize();
+   iop480_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 34/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into cpci750 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into cpci750 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the cpci750 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 board/esd/cpci750/serial.c |   67 
 common/serial.c|2 ++
 2 files changed, 63 insertions(+), 6 deletions(-)

diff --git a/board/esd/cpci750/serial.c b/board/esd/cpci750/serial.c
index e1af37e..9ff7c27 100644
--- a/board/esd/cpci750/serial.c
+++ b/board/esd/cpci750/serial.c
@@ -35,6 +35,9 @@
 
 #include common.h
 #include command.h
+#include serial.h
+#include linux/compiler.h
+
 #include ../../Marvell/include/memory.h
 #include serial.h
 
@@ -42,14 +45,14 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-int serial_init (void)
+static int cpci750_serial_init(void)
 {
mpsc_init (gd-baudrate);
 
return (0);
 }
 
-void serial_putc (const char c)
+static void cpci750_serial_putc(const char c)
 {
if (c == '\n')
mpsc_putchar ('\r');
@@ -57,29 +60,81 @@ void serial_putc (const char c)
mpsc_putchar (c);
 }
 
-int serial_getc (void)
+static int cpci750_serial_getc(void)
 {
return mpsc_getchar ();
 }
 
-int serial_tstc (void)
+static int cpci750_serial_tstc(void)
 {
return mpsc_test_char ();
 }
 
-void serial_setbrg (void)
+static void cpci750_serial_setbrg(void)
 {
galbrg_set_baudrate (CONFIG_MPSC_PORT, gd-baudrate);
 }
 
 
-void serial_puts (const char *s)
+static void cpci750_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device cpci750_serial_drv = {
+   .name   = cpci750_serial,
+   .start  = cpci750_serial_init,
+   .stop   = NULL,
+   .setbrg = cpci750_serial_setbrg,
+   .putc   = cpci750_serial_putc,
+   .puts   = cpci750_serial_puts,
+   .getc   = cpci750_serial_getc,
+   .tstc   = cpci750_serial_tstc,
+};
+
+void cpci750_serial_initialize(void)
+{
+   serial_register(cpci750_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return cpci750_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return cpci750_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   cpci750_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   cpci750_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   cpci750_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return cpci750_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return cpci750_serial_tstc();
+}
+#endif
 #if defined(CONFIG_CMD_KGDB)
 void kgdb_serial_init (void)
 {
diff --git a/common/serial.c b/common/serial.c
index a51ce99..c77d3ba 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -64,6 +64,7 @@ serial_initfunc(marvell_serial_initialize);
 serial_initfunc(amirix_serial_initialize);
 serial_initfunc(bmw_serial_initialize);
 serial_initfunc(cogent_serial_initialize);
+serial_initfunc(cpci750_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -106,6 +107,7 @@ void serial_initialize(void)
amirix_serial_initialize();
bmw_serial_initialize();
cogent_serial_initialize();
+   cpci750_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 30/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into marvell serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into marvell serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the marvell driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 board/Marvell/common/serial.c |   80 ++---
 common/serial.c   |2 ++
 2 files changed, 69 insertions(+), 13 deletions(-)

diff --git a/board/Marvell/common/serial.c b/board/Marvell/common/serial.c
index 3e7f406..a5231eb 100644
--- a/board/Marvell/common/serial.c
+++ b/board/Marvell/common/serial.c
@@ -32,6 +32,9 @@
 
 #include common.h
 #include command.h
+#include serial.h
+#include linux/compiler.h
+
 #include ../include/memory.h
 #include serial.h
 
@@ -48,9 +51,7 @@
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef CONFIG_MPSC
-
-
-int serial_init (void)
+static int marvell_serial_init(void)
 {
 #if (defined CONFIG_SYS_INIT_CHAN1) || (defined CONFIG_SYS_INIT_CHAN2)
int clock_divisor = 230400 / gd-baudrate;
@@ -68,7 +69,7 @@ int serial_init (void)
return (0);
 }
 
-void serial_putc (const char c)
+static void marvell_serial_putc(const char c)
 {
if (c == '\n')
mpsc_putchar ('\r');
@@ -76,24 +77,24 @@ void serial_putc (const char c)
mpsc_putchar (c);
 }
 
-int serial_getc (void)
+static int marvell_serial_getc(void)
 {
return mpsc_getchar ();
 }
 
-int serial_tstc (void)
+static int marvell_serial_tstc(void)
 {
return mpsc_test_char ();
 }
 
-void serial_setbrg (void)
+static void marvell_serial_setbrg(void)
 {
galbrg_set_baudrate (CONFIG_MPSC_PORT, gd-baudrate);
 }
 
 #else  /* ! CONFIG_MPSC */
 
-int serial_init (void)
+static int marvell_serial_init(void)
 {
int clock_divisor = 230400 / gd-baudrate;
 
@@ -106,7 +107,7 @@ int serial_init (void)
return (0);
 }
 
-void serial_putc (const char c)
+static void marvell_serial_putc(const char c)
 {
if (c == '\n')
NS16550_putc (COM_PORTS[CONFIG_SYS_DUART_CHAN], '\r');
@@ -114,17 +115,17 @@ void serial_putc (const char c)
NS16550_putc (COM_PORTS[CONFIG_SYS_DUART_CHAN], c);
 }
 
-int serial_getc (void)
+static int marvell_serial_getc(void)
 {
return NS16550_getc (COM_PORTS[CONFIG_SYS_DUART_CHAN]);
 }
 
-int serial_tstc (void)
+static int marvell_serial_tstc(void)
 {
return NS16550_tstc (COM_PORTS[CONFIG_SYS_DUART_CHAN]);
 }
 
-void serial_setbrg (void)
+static void marvell_serial_setbrg(void)
 {
int clock_divisor = 230400 / gd-baudrate;
 
@@ -138,13 +139,66 @@ void serial_setbrg (void)
 
 #endif /* CONFIG_MPSC */
 
-void serial_puts (const char *s)
+static void marvell_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device marvell_serial_drv = {
+   .name   = marvell_serial,
+   .start  = marvell_serial_init,
+   .stop   = NULL,
+   .setbrg = marvell_serial_setbrg,
+   .putc   = marvell_serial_putc,
+   .puts   = marvell_serial_puts,
+   .getc   = marvell_serial_getc,
+   .tstc   = marvell_serial_tstc,
+};
+
+void marvell_serial_initialize(void)
+{
+   serial_register(marvell_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return marvell_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return marvell_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   marvell_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   marvell_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   marvell_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return marvell_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return marvell_serial_tstc();
+}
+#endif
+
 #if defined(CONFIG_CMD_KGDB)
 void kgdb_serial_init (void)
 {
diff --git a/common/serial.c b/common/serial.c
index 4907009..0288b49 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -60,6 +60,7 @@ serial_initfunc(mpc85xx_serial_initialize);
 serial_initfunc(iop480_serial_initialize);
 serial_initfunc(leon2_serial_initialize);
 serial_initfunc(leon3_serial_initialize);
+serial_initfunc(marvell_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -98,6 +99,7 @@ void serial_initialize(void)
iop480_serial_initialize();
leon2_serial_initialize();
leon3_serial_initialize();
+   marvell_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 28/71] serial: sparc: Implement CONFIG_SERIAL_MULTI into leon2 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into leon2 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the leon2 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Peter Tyser pty...@xes-inc.com
---
 arch/sparc/cpu/leon2/serial.c |   83 ++---
 common/serial.c   |2 +
 2 files changed, 71 insertions(+), 14 deletions(-)

diff --git a/arch/sparc/cpu/leon2/serial.c b/arch/sparc/cpu/leon2/serial.c
index 4f41b8e..61d059b 100644
--- a/arch/sparc/cpu/leon2/serial.c
+++ b/arch/sparc/cpu/leon2/serial.c
@@ -26,6 +26,8 @@
 #include common.h
 #include asm/processor.h
 #include asm/leon.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -39,7 +41,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define READ_DWORD(var) SPARC_NOCACHE_READ_DWORD((unsigned int)(var))
 #endif
 
-int serial_init(void)
+static int leon2_serial_init(void)
 {
LEON2_regs *leon2 = (LEON2_regs *) LEON2_PREGS;
LEON2_Uart_regs *regs;
@@ -72,15 +74,7 @@ int serial_init(void)
return 0;
 }
 
-void serial_putc(const char c)
-{
-   if (c == '\n')
-   serial_putc_raw('\r');
-
-   serial_putc_raw(c);
-}
-
-void serial_putc_raw(const char c)
+static void leon2_serial_putc_raw(const char c)
 {
LEON2_regs *leon2 = (LEON2_regs *) LEON2_PREGS;
LEON2_Uart_regs *regs;
@@ -103,14 +97,22 @@ void serial_putc_raw(const char c)
 #endif
 }
 
-void serial_puts(const char *s)
+static void leon2_serial_putc(const char c)
+{
+   if (c == '\n')
+   leon2_serial_putc_raw('\r');
+
+   leon2_serial_putc_raw(c);
+}
+
+static void leon2_serial_puts(const char *s)
 {
while (*s) {
serial_putc(*s++);
}
 }
 
-int serial_getc(void)
+static int leon2_serial_getc(void)
 {
LEON2_regs *leon2 = (LEON2_regs *) LEON2_PREGS;
LEON2_Uart_regs *regs;
@@ -128,7 +130,7 @@ int serial_getc(void)
return READ_WORD(regs-UART_Channel);
 }
 
-int serial_tstc(void)
+static int leon2_serial_tstc(void)
 {
LEON2_regs *leon2 = (LEON2_regs *) LEON2_PREGS;
LEON2_Uart_regs *regs;
@@ -143,7 +145,7 @@ int serial_tstc(void)
 }
 
 /* set baud rate for uart */
-void serial_setbrg(void)
+static void leon2_serial_setbrg(void)
 {
/* update baud rate settings, read it from gd-baudrate */
unsigned int scaler;
@@ -163,3 +165,56 @@ void serial_setbrg(void)
regs-UART_Scaler = scaler;
}
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device leon2_serial_drv = {
+   .name   = leon2_serial,
+   .start  = leon2_serial_init,
+   .stop   = NULL,
+   .setbrg = leon2_serial_setbrg,
+   .putc   = leon2_serial_putc,
+   .puts   = leon2_serial_puts,
+   .getc   = leon2_serial_getc,
+   .tstc   = leon2_serial_tstc,
+};
+
+void leon2_serial_initialize(void)
+{
+   serial_register(leon2_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return leon2_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return leon2_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   leon2_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   leon2_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   leon2_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return leon2_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return leon2_serial_tstc();
+}
+#endif
diff --git a/common/serial.c b/common/serial.c
index 398ad30..8848126 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -58,6 +58,7 @@ serial_initfunc(mpc8260_scc_serial_initialize);
 serial_initfunc(mpc8260_smc_serial_initialize);
 serial_initfunc(mpc85xx_serial_initialize);
 serial_initfunc(iop480_serial_initialize);
+serial_initfunc(leon2_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -94,6 +95,7 @@ void serial_initialize(void)
mpc8260_smc_serial_initialize();
mpc85xx_serial_initialize();
iop480_serial_initialize();
+   leon2_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 31/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into amirix serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into amirix serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the amirix driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 board/amirix/ap1000/serial.c |   66 ++
 common/serial.c  |2 ++
 2 files changed, 62 insertions(+), 6 deletions(-)

diff --git a/board/amirix/ap1000/serial.c b/board/amirix/ap1000/serial.c
index 87003be..2c2e9f9 100644
--- a/board/amirix/ap1000/serial.c
+++ b/board/amirix/ap1000/serial.c
@@ -24,6 +24,8 @@
 #include asm/processor.h
 #include command.h
 #include config.h
+#include serial.h
+#include linux/compiler.h
 
 #include ns16550.h
 
@@ -36,7 +38,7 @@ const NS16550_t COM_PORTS[] =
 #define CONFIG_SYS_DUART_CHAN gComPort
 static int gComPort = 0;
 
-int serial_init (void)
+static int amirix_serial_init(void)
 {
int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 / gd-baudrate;
 
@@ -46,7 +48,7 @@ int serial_init (void)
return 0;
 }
 
-void serial_putc (const char c)
+static void amirix_serial_putc(const char c)
 {
if (c == '\n') {
NS16550_putc (COM_PORTS[CONFIG_SYS_DUART_CHAN], '\r');
@@ -55,17 +57,17 @@ void serial_putc (const char c)
NS16550_putc (COM_PORTS[CONFIG_SYS_DUART_CHAN], c);
 }
 
-int serial_getc (void)
+static int amirix_serial_getc(void)
 {
return NS16550_getc (COM_PORTS[CONFIG_SYS_DUART_CHAN]);
 }
 
-int serial_tstc (void)
+static int amirix_serial_tstc(void)
 {
return NS16550_tstc (COM_PORTS[CONFIG_SYS_DUART_CHAN]);
 }
 
-void serial_setbrg (void)
+static void amirix_serial_setbrg(void)
 {
int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 / gd-baudrate;
 
@@ -77,13 +79,65 @@ void serial_setbrg (void)
 #endif
 }
 
-void serial_puts (const char *s)
+static void amirix_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device amirix_serial_drv = {
+   .name   = amirix_serial,
+   .start  = amirix_serial_init,
+   .stop   = NULL,
+   .setbrg = amirix_serial_setbrg,
+   .putc   = amirix_serial_putc,
+   .puts   = amirix_serial_puts,
+   .getc   = amirix_serial_getc,
+   .tstc   = amirix_serial_tstc,
+};
+
+void amirix_serial_initialize(void)
+{
+   serial_register(amirix_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return amirix_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return amirix_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   amirix_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   amirix_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   amirix_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return amirix_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return amirix_serial_tstc();
+}
+#endif
 #if defined(CONFIG_CMD_KGDB)
 void kgdb_serial_init (void)
 {
diff --git a/common/serial.c b/common/serial.c
index 0288b49..6a09139 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -61,6 +61,7 @@ serial_initfunc(iop480_serial_initialize);
 serial_initfunc(leon2_serial_initialize);
 serial_initfunc(leon3_serial_initialize);
 serial_initfunc(marvell_serial_initialize);
+serial_initfunc(amirix_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -100,6 +101,7 @@ void serial_initialize(void)
leon2_serial_initialize();
leon3_serial_initialize();
marvell_serial_initialize();
+   amirix_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 36/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into ml2 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into ml2 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the ml2 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 board/ml2/serial.c |   66 +++-
 common/serial.c|2 ++
 2 files changed, 62 insertions(+), 6 deletions(-)

diff --git a/board/ml2/serial.c b/board/ml2/serial.c
index d9113ab..0ed1150 100644
--- a/board/ml2/serial.c
+++ b/board/ml2/serial.c
@@ -24,6 +24,8 @@
 #include asm/processor.h
 #include command.h
 #include configs/ML2.h
+#include serial.h
+#include linux/compiler.h
 
 #if (defined CONFIG_SYS_INIT_CHAN1) || (defined CONFIG_SYS_INIT_CHAN2)
 #include ns16550.h
@@ -37,7 +39,7 @@ const NS16550_t COM_PORTS[] = { (NS16550_t) 
CONFIG_SYS_NS16550_COM1,
 };
 #endif
 
-int serial_init (void)
+static int ml2_serial_init(void)
 {
int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 / gd-baudrate;
 
@@ -51,7 +53,7 @@ int serial_init (void)
 
 }
 
-void serial_putc (const char c)
+static void ml2_serial_putc(const char c)
 {
if (c == '\n')
NS16550_putc (COM_PORTS[CONFIG_SYS_DUART_CHAN], '\r');
@@ -59,17 +61,17 @@ void serial_putc (const char c)
NS16550_putc (COM_PORTS[CONFIG_SYS_DUART_CHAN], c);
 }
 
-int serial_getc (void)
+static int ml2_serial_getc(void)
 {
return NS16550_getc (COM_PORTS[CONFIG_SYS_DUART_CHAN]);
 }
 
-int serial_tstc (void)
+static int ml2_serial_tstc(void)
 {
return NS16550_tstc (COM_PORTS[CONFIG_SYS_DUART_CHAN]);
 }
 
-void serial_setbrg (void)
+static void ml2_serial_setbrg(void)
 {
int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 / gd-baudrate;
 
@@ -81,13 +83,65 @@ void serial_setbrg (void)
 #endif
 }
 
-void serial_puts (const char *s)
+static void ml2_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device ml2_serial_drv = {
+   .name   = ml2_serial,
+   .start  = ml2_serial_init,
+   .stop   = NULL,
+   .setbrg = ml2_serial_setbrg,
+   .putc   = ml2_serial_putc,
+   .puts   = ml2_serial_puts,
+   .getc   = ml2_serial_getc,
+   .tstc   = ml2_serial_tstc,
+};
+
+void ml2_serial_initialize(void)
+{
+   serial_register(ml2_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return ml2_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return ml2_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   ml2_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   ml2_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   ml2_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return ml2_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return ml2_serial_tstc();
+}
+#endif
 #if defined(CONFIG_CMD_KGDB)
 void kgdb_serial_init (void)
 {
diff --git a/common/serial.c b/common/serial.c
index 2acf4c1..393e296 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -66,6 +66,7 @@ serial_initfunc(bmw_serial_initialize);
 serial_initfunc(cogent_serial_initialize);
 serial_initfunc(cpci750_serial_initialize);
 serial_initfunc(evb64260_serial_initialize);
+serial_initfunc(ml2_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -110,6 +111,7 @@ void serial_initialize(void)
cogent_serial_initialize();
cpci750_serial_initialize();
evb64260_serial_initialize();
+   ml2_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 35/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into evb64260 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into evb64260 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the evb64260 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 board/evb64260/serial.c |   85 ---
 common/serial.c |2 ++
 2 files changed, 67 insertions(+), 20 deletions(-)

diff --git a/board/evb64260/serial.c b/board/evb64260/serial.c
index 9d71115..cf46a4d 100644
--- a/board/evb64260/serial.c
+++ b/board/evb64260/serial.c
@@ -30,6 +30,8 @@
 #include common.h
 #include command.h
 #include galileo/memory.h
+#include serial.h
+#include linux/compiler.h
 
 #if (defined CONFIG_SYS_INIT_CHAN1) || (defined CONFIG_SYS_INIT_CHAN2)
 #include ns16550.h
@@ -48,7 +50,7 @@ const NS16550_t COM_PORTS[] = { (NS16550_t) 
CONFIG_SYS_NS16550_COM1,
 
 #ifdef CONFIG_MPSC
 
-int serial_init (void)
+static int evb64260_serial_init(void)
 {
 #if (defined CONFIG_SYS_INIT_CHAN1) || (defined CONFIG_SYS_INIT_CHAN2)
int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 / gd-baudrate;
@@ -66,8 +68,7 @@ int serial_init (void)
return (0);
 }
 
-void
-serial_putc(const char c)
+static void evb64260_serial_putc(const char c)
 {
if (c == '\n')
mpsc_putchar('\r');
@@ -75,27 +76,24 @@ serial_putc(const char c)
mpsc_putchar(c);
 }
 
-int
-serial_getc(void)
+static int evb64260_serial_getc(void)
 {
return mpsc_getchar();
 }
 
-int
-serial_tstc(void)
+static int evb64260_serial_tstc(void)
 {
return mpsc_test_char();
 }
 
-void
-serial_setbrg (void)
+static void evb64260_serial_setbrg(void)
 {
galbrg_set_baudrate(CONFIG_MPSC_PORT, gd-baudrate);
 }
 
 #else /* ! CONFIG_MPSC */
 
-int serial_init (void)
+static int evb64260_serial_init(void)
 {
int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 / gd-baudrate;
 
@@ -109,8 +107,7 @@ int serial_init (void)
return (0);
 }
 
-void
-serial_putc(const char c)
+static void evb64260_serial_putc(const char c)
 {
if (c == '\n')
NS16550_putc(COM_PORTS[CONFIG_SYS_DUART_CHAN], '\r');
@@ -118,20 +115,17 @@ serial_putc(const char c)
NS16550_putc(COM_PORTS[CONFIG_SYS_DUART_CHAN], c);
 }
 
-int
-serial_getc(void)
+static int evb64260_serial_getc(void)
 {
return NS16550_getc(COM_PORTS[CONFIG_SYS_DUART_CHAN]);
 }
 
-int
-serial_tstc(void)
+static int evb64260_serial_tstc(void)
 {
return NS16550_tstc(COM_PORTS[CONFIG_SYS_DUART_CHAN]);
 }
 
-void
-serial_setbrg (void)
+static void evb64260_serial_setbrg(void)
 {
int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 / gd-baudrate;
 
@@ -145,14 +139,65 @@ serial_setbrg (void)
 
 #endif /* CONFIG_MPSC */
 
-void
-serial_puts (const char *s)
+static void evb64260_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device evb64260_serial_drv = {
+   .name   = evb64260_serial,
+   .start  = evb64260_serial_init,
+   .stop   = NULL,
+   .setbrg = evb64260_serial_setbrg,
+   .putc   = evb64260_serial_putc,
+   .puts   = evb64260_serial_puts,
+   .getc   = evb64260_serial_getc,
+   .tstc   = evb64260_serial_tstc,
+};
+
+void evb64260_serial_initialize(void)
+{
+   serial_register(evb64260_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return evb64260_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return evb64260_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   evb64260_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   evb64260_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   evb64260_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return evb64260_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return evb64260_serial_tstc();
+}
+#endif
 #if defined(CONFIG_CMD_KGDB)
 void
 kgdb_serial_init(void)
diff --git a/common/serial.c b/common/serial.c
index c77d3ba..2acf4c1 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -65,6 +65,7 @@ serial_initfunc(amirix_serial_initialize);
 serial_initfunc(bmw_serial_initialize);
 serial_initfunc(cogent_serial_initialize);
 serial_initfunc(cpci750_serial_initialize);
+serial_initfunc(evb64260_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -108,6 +109,7 @@ void serial_initialize(void)
bmw_serial_initialize();
cogent_serial_initialize();
cpci750_serial_initialize();
+   evb64260_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing 

[U-Boot] [PATCH 38/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into p3mx serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into p3mx serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the p3mx driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 board/prodrive/p3mx/serial.c |   68 ++
 common/serial.c  |2 ++
 2 files changed, 64 insertions(+), 6 deletions(-)

diff --git a/board/prodrive/p3mx/serial.c b/board/prodrive/p3mx/serial.c
index e1af37e..d3591b4 100644
--- a/board/prodrive/p3mx/serial.c
+++ b/board/prodrive/p3mx/serial.c
@@ -35,6 +35,9 @@
 
 #include common.h
 #include command.h
+#include serial.h
+#include linux/compiler.h
+
 #include ../../Marvell/include/memory.h
 #include serial.h
 
@@ -42,14 +45,14 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-int serial_init (void)
+static int p3mx_serial_init(void)
 {
mpsc_init (gd-baudrate);
 
return (0);
 }
 
-void serial_putc (const char c)
+static void p3mx_serial_putc(const char c)
 {
if (c == '\n')
mpsc_putchar ('\r');
@@ -57,29 +60,82 @@ void serial_putc (const char c)
mpsc_putchar (c);
 }
 
-int serial_getc (void)
+static int p3mx_serial_getc(void)
 {
return mpsc_getchar ();
 }
 
-int serial_tstc (void)
+static int p3mx_serial_tstc(void)
 {
return mpsc_test_char ();
 }
 
-void serial_setbrg (void)
+static void p3mx_serial_setbrg(void)
 {
galbrg_set_baudrate (CONFIG_MPSC_PORT, gd-baudrate);
 }
 
 
-void serial_puts (const char *s)
+static void p3mx_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device p3mx_serial_drv = {
+   .name   = p3mx_serial,
+   .start  = p3mx_serial_init,
+   .stop   = NULL,
+   .setbrg = p3mx_serial_setbrg,
+   .putc   = p3mx_serial_putc,
+   .puts   = p3mx_serial_puts,
+   .getc   = p3mx_serial_getc,
+   .tstc   = p3mx_serial_tstc,
+};
+
+void p3mx_serial_initialize(void)
+{
+   serial_register(p3mx_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return p3mx_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return p3mx_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   p3mx_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   p3mx_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   p3mx_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return p3mx_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return p3mx_serial_tstc();
+}
+#endif
+
 #if defined(CONFIG_CMD_KGDB)
 void kgdb_serial_init (void)
 {
diff --git a/common/serial.c b/common/serial.c
index d9cd3bf..2d6ba05 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -68,6 +68,7 @@ serial_initfunc(cpci750_serial_initialize);
 serial_initfunc(evb64260_serial_initialize);
 serial_initfunc(ml2_serial_initialize);
 serial_initfunc(sconsole_serial_initialize);
+serial_initfunc(p3mx_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -114,6 +115,7 @@ void serial_initialize(void)
evb64260_serial_initialize();
ml2_serial_initialize();
sconsole_serial_initialize();
+   p3mx_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 29/71] serial: sparc: Implement CONFIG_SERIAL_MULTI into leon3 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into leon3 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the leon3 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Peter Tyser pty...@xes-inc.com
---
 arch/sparc/cpu/leon3/serial.c |   83 ++---
 common/serial.c   |2 +
 2 files changed, 71 insertions(+), 14 deletions(-)

diff --git a/arch/sparc/cpu/leon3/serial.c b/arch/sparc/cpu/leon3/serial.c
index 4b2fcb8..a110244 100644
--- a/arch/sparc/cpu/leon3/serial.c
+++ b/arch/sparc/cpu/leon3/serial.c
@@ -27,6 +27,8 @@
 #include asm/processor.h
 #include asm/leon.h
 #include ambapp.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -42,7 +44,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 ambapp_dev_apbuart *leon3_apbuart = NULL;
 
-int serial_init(void)
+static int leon3_serial_init(void)
 {
ambapp_apbdev apbdev;
unsigned int tmp;
@@ -72,15 +74,7 @@ int serial_init(void)
return -1;  /* didn't find hardware */
 }
 
-void serial_putc(const char c)
-{
-   if (c == '\n')
-   serial_putc_raw('\r');
-
-   serial_putc_raw(c);
-}
-
-void serial_putc_raw(const char c)
+static void leon3_serial_putc_raw(const char c)
 {
if (!leon3_apbuart)
return;
@@ -97,14 +91,22 @@ void serial_putc_raw(const char c)
 #endif
 }
 
-void serial_puts(const char *s)
+static void leon3_serial_putc(const char c)
+{
+   if (c == '\n')
+   leon3_serial_putc_raw('\r');
+
+   leon3_serial_putc_raw(c);
+}
+
+static void leon3_serial_puts(const char *s)
 {
while (*s) {
serial_putc(*s++);
}
 }
 
-int serial_getc(void)
+static int leon3_serial_getc(void)
 {
if (!leon3_apbuart)
return 0;
@@ -116,7 +118,7 @@ int serial_getc(void)
return READ_WORD(leon3_apbuart-data);
 }
 
-int serial_tstc(void)
+static int leon3_serial_tstc(void)
 {
if (leon3_apbuart)
return (READ_WORD(leon3_apbuart-status) 
@@ -125,7 +127,7 @@ int serial_tstc(void)
 }
 
 /* set baud rate for uart */
-void serial_setbrg(void)
+static void leon3_serial_setbrg(void)
 {
/* update baud rate settings, read it from gd-baudrate */
unsigned int scaler;
@@ -137,3 +139,56 @@ void serial_setbrg(void)
}
return;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device leon3_serial_drv = {
+   .name   = leon3_serial,
+   .start  = leon3_serial_init,
+   .stop   = NULL,
+   .setbrg = leon3_serial_setbrg,
+   .putc   = leon3_serial_putc,
+   .puts   = leon3_serial_puts,
+   .getc   = leon3_serial_getc,
+   .tstc   = leon3_serial_tstc,
+};
+
+void leon3_serial_initialize(void)
+{
+   serial_register(leon3_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return leon3_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return leon3_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   leon3_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   leon3_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   leon3_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return leon3_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return leon3_serial_tstc();
+}
+#endif
diff --git a/common/serial.c b/common/serial.c
index 8848126..4907009 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -59,6 +59,7 @@ serial_initfunc(mpc8260_smc_serial_initialize);
 serial_initfunc(mpc85xx_serial_initialize);
 serial_initfunc(iop480_serial_initialize);
 serial_initfunc(leon2_serial_initialize);
+serial_initfunc(leon3_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -96,6 +97,7 @@ void serial_initialize(void)
mpc85xx_serial_initialize();
iop480_serial_initialize();
leon2_serial_initialize();
+   leon3_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 33/71] serial: powerpc: Implement CONFIG_SERIAL_MULTI into cogent serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into cogent serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the cogent driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 board/cogent/serial.c |   66 -
 common/serial.c   |2 ++
 2 files changed, 62 insertions(+), 6 deletions(-)

diff --git a/board/cogent/serial.c b/board/cogent/serial.c
index d9c27be..18a9dbf 100644
--- a/board/cogent/serial.c
+++ b/board/cogent/serial.c
@@ -5,6 +5,8 @@
 
 #include common.h
 #include board/cogent/serial.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -25,7 +27,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #error CONFIG_CONS_INDEX must be configured for Cogent motherboard serial
 #endif
 
-int serial_init (void)
+static int cogent_serial_init(void)
 {
cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
 
@@ -38,7 +40,7 @@ int serial_init (void)
return (0);
 }
 
-void serial_setbrg (void)
+static void cogent_serial_setbrg(void)
 {
cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
unsigned int divisor;
@@ -54,7 +56,7 @@ void serial_setbrg (void)
cma_mb_reg_write (mbsp-ser_lcr, lcr); /* unset DLAB */
 }
 
-void serial_putc (const char c)
+static void cogent_serial_putc(const char c)
 {
cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
 
@@ -66,13 +68,13 @@ void serial_putc (const char c)
cma_mb_reg_write (mbsp-ser_thr, c);
 }
 
-void serial_puts (const char *s)
+static void cogent_serial_puts(const char *s)
 {
while (*s != '\0')
serial_putc (*s++);
 }
 
-int serial_getc (void)
+static int cogent_serial_getc(void)
 {
cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
 
@@ -81,13 +83,65 @@ int serial_getc (void)
return ((int) cma_mb_reg_read (mbsp-ser_rhr)  0x7f);
 }
 
-int serial_tstc (void)
+static int cogent_serial_tstc(void)
 {
cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;
 
return ((cma_mb_reg_read (mbsp-ser_lsr)  LSR_DR) != 0);
 }
 
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device cogent_serial_drv = {
+   .name   = cogent_serial,
+   .start  = cogent_serial_init,
+   .stop   = NULL,
+   .setbrg = cogent_serial_setbrg,
+   .putc   = cogent_serial_putc,
+   .puts   = cogent_serial_puts,
+   .getc   = cogent_serial_getc,
+   .tstc   = cogent_serial_tstc,
+};
+
+void cogent_serial_initialize(void)
+{
+   serial_register(cogent_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return cogent_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return cogent_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   cogent_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   cogent_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   cogent_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return cogent_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return cogent_serial_tstc();
+}
+#endif
 #endif /* CONS_NONE */
 
 #if defined(CONFIG_CMD_KGDB)  \
diff --git a/common/serial.c b/common/serial.c
index 19d3a6f..a51ce99 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -63,6 +63,7 @@ serial_initfunc(leon3_serial_initialize);
 serial_initfunc(marvell_serial_initialize);
 serial_initfunc(amirix_serial_initialize);
 serial_initfunc(bmw_serial_initialize);
+serial_initfunc(cogent_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -104,6 +105,7 @@ void serial_initialize(void)
marvell_serial_initialize();
amirix_serial_initialize();
bmw_serial_initialize();
+   cogent_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 40/71] serial: arm: Implement CONFIG_SERIAL_MULTI into altera serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into altera serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the altera driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Scott McNutt smcn...@psyent.com
---
 common/serial.c  |2 +
 drivers/serial/altera_uart.c |   83 --
 2 files changed, 73 insertions(+), 12 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 24879ec..e6566da 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -70,6 +70,7 @@ serial_initfunc(ml2_serial_initialize);
 serial_initfunc(sconsole_serial_initialize);
 serial_initfunc(p3mx_serial_initialize);
 serial_initfunc(altera_jtag_serial_initialize);
+serial_initfunc(altera_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -118,6 +119,7 @@ void serial_initialize(void)
sconsole_serial_initialize();
p3mx_serial_initialize();
altera_jtag_serial_initialize();
+   altera_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/altera_uart.c b/drivers/serial/altera_uart.c
index 045f119..18b820b 100644
--- a/drivers/serial/altera_uart.c
+++ b/drivers/serial/altera_uart.c
@@ -37,27 +37,33 @@ static nios_uart_t *uart = (nios_uart_t *) 
CONFIG_SYS_NIOS_CONSOLE;
 
 #if defined(CONFIG_SYS_NIOS_FIXEDBAUD)
 
-/* Everything's already setup for fixed-baud PTF
+/*
+ * Everything's already setup for fixed-baud PTF
  * assignment
  */
-void serial_setbrg (void){ return; }
-int serial_init (void) { return (0);}
+static void altera_serial_setbrg(void)
+{
+}
+
+static int altera_serial_init(void)
+{
+   return 0;
+}
 
 #else
 
-void serial_setbrg (void)
+static void altera_serial_setbrg(void)
 {
unsigned div;
 
div = (CONFIG_SYS_CLK_FREQ/gd-baudrate)-1;
writel (div, uart-divisor);
-   return;
 }
 
-int serial_init (void)
+static int altera_serial_init(void)
 {
-   serial_setbrg ();
-   return (0);
+   serial_setbrg();
+   return 0;
 }
 
 #endif /* CONFIG_SYS_NIOS_FIXEDBAUD */
@@ -65,7 +71,7 @@ int serial_init (void)
 /*---
  * UART CONSOLE
  *-*/
-void serial_putc (char c)
+static void altera_serial_putc(char c)
 {
if (c == '\n')
serial_putc ('\r');
@@ -74,21 +80,74 @@ void serial_putc (char c)
writel ((unsigned char)c, uart-txdata);
 }
 
-void serial_puts (const char *s)
+static void altera_serial_puts(const char *s)
 {
while (*s != 0) {
serial_putc (*s++);
}
 }
 
-int serial_tstc (void)
+static int altera_serial_tstc(void)
 {
return (readl (uart-status)  NIOS_UART_RRDY);
 }
 
-int serial_getc (void)
+static int altera_serial_getc(void)
 {
while (serial_tstc () == 0)
WATCHDOG_RESET ();
return (readl (uart-rxdata)  0x00ff );
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device altera_serial_drv = {
+   .name   = altera_serial,
+   .start  = altera_serial_init,
+   .stop   = NULL,
+   .setbrg = altera_serial_setbrg,
+   .putc   = altera_serial_putc,
+   .puts   = altera_serial_puts,
+   .getc   = altera_serial_getc,
+   .tstc   = altera_serial_tstc,
+};
+
+void altera_serial_initialize(void)
+{
+   serial_register(altera_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return altera_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return altera_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   altera_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   altera_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   altera_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return altera_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return altera_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 39/71] serial: arm: Implement CONFIG_SERIAL_MULTI into altera_jtag serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into altera_jtag serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the altera_jtag driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Thomas Chou tho...@wytron.com.tw
---
 common/serial.c   |2 ++
 drivers/serial/altera_jtag_uart.c |   71 +
 2 files changed, 67 insertions(+), 6 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 2d6ba05..24879ec 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -69,6 +69,7 @@ serial_initfunc(evb64260_serial_initialize);
 serial_initfunc(ml2_serial_initialize);
 serial_initfunc(sconsole_serial_initialize);
 serial_initfunc(p3mx_serial_initialize);
+serial_initfunc(altera_jtag_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -116,6 +117,7 @@ void serial_initialize(void)
ml2_serial_initialize();
sconsole_serial_initialize();
p3mx_serial_initialize();
+   altera_jtag_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/altera_jtag_uart.c 
b/drivers/serial/altera_jtag_uart.c
index 2980e4d..d3b6c1c 100644
--- a/drivers/serial/altera_jtag_uart.c
+++ b/drivers/serial/altera_jtag_uart.c
@@ -33,10 +33,16 @@ DECLARE_GLOBAL_DATA_PTR;
  *-*/
 static nios_jtag_t *jtag = (nios_jtag_t *)CONFIG_SYS_NIOS_CONSOLE;
 
-void serial_setbrg( void ){ return; }
-int serial_init( void ) { return(0);}
+static void altera_jtag_serial_setbrg(void)
+{
+}
+
+static int altera_jtag_serial_init(void)
+{
+   return 0;
+}
 
-void serial_putc (char c)
+static void altera_jtag_serial_putc(char c)
 {
while (1) {
unsigned st = readl(jtag-control);
@@ -51,18 +57,18 @@ void serial_putc (char c)
writel ((unsigned char)c, jtag-data);
 }
 
-void serial_puts (const char *s)
+static void altera_jtag_serial_puts(const char *s)
 {
while (*s != 0)
serial_putc (*s++);
 }
 
-int serial_tstc (void)
+static int altera_jtag_serial_tstc(void)
 {
return ( readl (jtag-control)  NIOS_JTAG_RRDY);
 }
 
-int serial_getc (void)
+static int altera_jtag_serial_getc(void)
 {
int c;
unsigned val;
@@ -76,3 +82,56 @@ int serial_getc (void)
c = val  0x0ff;
return (c);
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device altera_jtag_serial_drv = {
+   .name   = altera_jtag_serial,
+   .start  = altera_jtag_serial_init,
+   .stop   = NULL,
+   .setbrg = altera_jtag_serial_setbrg,
+   .putc   = altera_jtag_serial_putc,
+   .puts   = altera_jtag_serial_puts,
+   .getc   = altera_jtag_serial_getc,
+   .tstc   = altera_jtag_serial_tstc,
+};
+
+void altera_jtag_serial_initialize(void)
+{
+   serial_register(altera_jtag_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return altera_jtag_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return altera_jtag_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   altera_jtag_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   altera_jtag_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   altera_jtag_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return altera_jtag_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return altera_jtag_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 43/71] serial: mcf: Implement CONFIG_SERIAL_MULTI into MCF serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into MCF serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the MCF driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: TsiChung Liew tsicl...@gmail.com
---
 common/serial.c  |2 ++
 drivers/serial/mcfuart.c |   65 +-
 2 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 8bc26d8..fa16dce 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -73,6 +73,7 @@ serial_initfunc(altera_jtag_serial_initialize);
 serial_initfunc(altera_serial_initialize);
 serial_initfunc(atmel_serial_initialize);
 serial_initfunc(lpc32xx_serial_initialize);
+serial_initfunc(mcf_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -124,6 +125,7 @@ void serial_initialize(void)
altera_serial_initialize();
atmel_serial_initialize();
lpc32xx_serial_initialize();
+   mcf_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/mcfuart.c b/drivers/serial/mcfuart.c
index d93b24b..7e0b765 100644
--- a/drivers/serial/mcfuart.c
+++ b/drivers/serial/mcfuart.c
@@ -36,7 +36,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 extern void uart_port_conf(int port);
 
-int serial_init(void)
+static int mcf_serial_init(void)
 {
volatile uart_t *uart;
u32 counter;
@@ -74,7 +74,7 @@ int serial_init(void)
return (0);
 }
 
-void serial_putc(const char c)
+static void mcf_serial_putc(const char c)
 {
volatile uart_t *uart = (volatile uart_t *)(CONFIG_SYS_UART_BASE);
 
@@ -87,14 +87,14 @@ void serial_putc(const char c)
uart-utb = c;
 }
 
-void serial_puts(const char *s)
+static void mcf_serial_puts(const char *s)
 {
while (*s) {
serial_putc(*s++);
}
 }
 
-int serial_getc(void)
+static int mcf_serial_getc(void)
 {
volatile uart_t *uart = (volatile uart_t *)(CONFIG_SYS_UART_BASE);
 
@@ -103,14 +103,14 @@ int serial_getc(void)
return uart-urb;
 }
 
-int serial_tstc(void)
+static int mcf_serial_tstc(void)
 {
volatile uart_t *uart = (volatile uart_t *)(CONFIG_SYS_UART_BASE);
 
return (uart-usr  UART_USR_RXRDY);
 }
 
-void serial_setbrg(void)
+static void mcf_serial_setbrg(void)
 {
volatile uart_t *uart = (volatile uart_t *)(CONFIG_SYS_UART_BASE);
u32 counter;
@@ -129,3 +129,56 @@ void serial_setbrg(void)
 
uart-ucr = UART_UCR_RX_ENABLED | UART_UCR_TX_ENABLED;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device mcf_serial_drv = {
+   .name   = mcf_serial,
+   .start  = mcf_serial_init,
+   .stop   = NULL,
+   .setbrg = mcf_serial_setbrg,
+   .putc   = mcf_serial_putc,
+   .puts   = mcf_serial_puts,
+   .getc   = mcf_serial_getc,
+   .tstc   = mcf_serial_tstc,
+};
+
+void mcf_serial_initialize(void)
+{
+   serial_register(mcf_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return mcf_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return mcf_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   mcf_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   mcf_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   mcf_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return mcf_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return mcf_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 42/71] serial: arm: Implement CONFIG_SERIAL_MULTI into lpc32xx serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into lpc32xx serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the lpc32xx driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Vladimir Zapolskiy v...@mleia.com
---
 common/serial.c |2 ++
 drivers/serial/lpc32xx_hsuart.c |   71 ++-
 2 files changed, 50 insertions(+), 23 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index b880303..8bc26d8 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -72,6 +72,7 @@ serial_initfunc(p3mx_serial_initialize);
 serial_initfunc(altera_jtag_serial_initialize);
 serial_initfunc(altera_serial_initialize);
 serial_initfunc(atmel_serial_initialize);
+serial_initfunc(lpc32xx_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -122,6 +123,7 @@ void serial_initialize(void)
altera_jtag_serial_initialize();
altera_serial_initialize();
atmel_serial_initialize();
+   lpc32xx_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/lpc32xx_hsuart.c b/drivers/serial/lpc32xx_hsuart.c
index 8ce3382..536fd46 100644
--- a/drivers/serial/lpc32xx_hsuart.c
+++ b/drivers/serial/lpc32xx_hsuart.c
@@ -22,12 +22,14 @@
 #include asm/arch/clk.h
 #include asm/arch/uart.h
 #include asm/io.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
 static struct hsuart_regs *hsuart = (struct hsuart_regs *)HS_UART_BASE;
 
-static void lpc32xx_hsuart_set_baudrate(void)
+static void lpc32xx_serial_setbrg(void)
 {
u32 div;
 
@@ -39,7 +41,7 @@ static void lpc32xx_hsuart_set_baudrate(void)
writel(div, hsuart-rate);
 }
 
-static int lpc32xx_hsuart_getc(void)
+static int lpc32xx_serial_getc(void)
 {
while (!(readl(hsuart-level)  HSUART_LEVEL_RX))
/* NOP */;
@@ -47,7 +49,7 @@ static int lpc32xx_hsuart_getc(void)
return readl(hsuart-rx)  HSUART_RX_DATA;
 }
 
-static void lpc32xx_hsuart_putc(const char c)
+static void lpc32xx_serial_putc(const char c)
 {
writel(c, hsuart-tx);
 
@@ -56,7 +58,7 @@ static void lpc32xx_hsuart_putc(const char c)
/* NOP */;
 }
 
-static int lpc32xx_hsuart_tstc(void)
+static int lpc32xx_serial_tstc(void)
 {
if (readl(hsuart-level)  HSUART_LEVEL_RX)
return 1;
@@ -64,49 +66,72 @@ static int lpc32xx_hsuart_tstc(void)
return 0;
 }
 
-static void lpc32xx_hsuart_init(void)
+static int lpc32xx_serial_init(void)
 {
-   lpc32xx_hsuart_set_baudrate();
+   lpc32xx_serial_setbrg();
 
/* Disable hardware RTS and CTS flow control, set up RX and TX FIFO */
writel(HSUART_CTRL_TMO_16 | HSUART_CTRL_HSU_OFFSET(20) |
   HSUART_CTRL_HSU_RX_TRIG_32 | HSUART_CTRL_HSU_TX_TRIG_0,
   hsuart-ctrl);
+   return 0;
 }
 
-void serial_setbrg(void)
+static void lpc32xx_serial_puts(const char *s)
 {
-   return lpc32xx_hsuart_set_baudrate();
+   while (*s)
+   serial_putc(*s++);
 }
 
-void serial_putc(const char c)
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device lpc32xx_serial_drv = {
+   .name   = lpc32xx_serial,
+   .start  = lpc32xx_serial_init,
+   .stop   = NULL,
+   .setbrg = lpc32xx_serial_setbrg,
+   .putc   = lpc32xx_serial_putc,
+   .puts   = lpc32xx_serial_puts,
+   .getc   = lpc32xx_serial_getc,
+   .tstc   = lpc32xx_serial_tstc,
+};
+
+void lpc32xx_serial_initialize(void)
 {
-   lpc32xx_hsuart_putc(c);
+   serial_register(lpc32xx_serial_drv);
+}
 
-   /* If \n, also do \r */
-   if (c == '\n')
-   lpc32xx_hsuart_putc('\r');
+__weak struct serial_device *default_serial_console(void)
+{
+   return lpc32xx_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return lpc32xx_serial_init();
 }
 
-int serial_getc(void)
+void serial_setbrg(void)
 {
-   return lpc32xx_hsuart_getc();
+   lpc32xx_serial_setbrg();
 }
 
-void serial_puts(const char *s)
+void serial_putc(const char c)
 {
-   while (*s)
-   serial_putc(*s++);
+   lpc32xx_serial_putc(c);
 }
 
-int serial_tstc(void)
+void serial_puts(const char *s)
 {
-   return lpc32xx_hsuart_tstc();
+   lpc32xx_serial_puts(s);
 }
 
-int serial_init(void)
+int serial_getc(void)
 {
-   lpc32xx_hsuart_init();
+   return lpc32xx_serial_getc();
+}
 
-   return 0;
+int serial_tstc(void)
+{
+   return lpc32xx_serial_tstc();
 }
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 41/71] serial: arm: Implement CONFIG_SERIAL_MULTI into atmel serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into atmel serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the atmel driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Xu, Hong hong...@atmel.com
---
 common/serial.c  |2 ++
 drivers/serial/atmel_usart.c |   67 ++
 2 files changed, 63 insertions(+), 6 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index e6566da..b880303 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -71,6 +71,7 @@ serial_initfunc(sconsole_serial_initialize);
 serial_initfunc(p3mx_serial_initialize);
 serial_initfunc(altera_jtag_serial_initialize);
 serial_initfunc(altera_serial_initialize);
+serial_initfunc(atmel_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -120,6 +121,7 @@ void serial_initialize(void)
p3mx_serial_initialize();
altera_jtag_serial_initialize();
altera_serial_initialize();
+   atmel_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/atmel_usart.c b/drivers/serial/atmel_usart.c
index 943ef70..d49d5d4 100644
--- a/drivers/serial/atmel_usart.c
+++ b/drivers/serial/atmel_usart.c
@@ -20,6 +20,8 @@
  */
 #include common.h
 #include watchdog.h
+#include serial.h
+#include linux/compiler.h
 
 #include asm/io.h
 #include asm/arch/clk.h
@@ -29,7 +31,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void serial_setbrg(void)
+static void atmel_serial_setbrg(void)
 {
atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE;
unsigned long divisor;
@@ -45,7 +47,7 @@ void serial_setbrg(void)
writel(USART3_BF(CD, divisor), usart-brgr);
 }
 
-int serial_init(void)
+static int atmel_serial_init(void)
 {
atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE;
 
@@ -73,7 +75,7 @@ int serial_init(void)
return 0;
 }
 
-void serial_putc(char c)
+static void atmel_serial_putc(char c)
 {
atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE;
 
@@ -84,13 +86,13 @@ void serial_putc(char c)
writel(c, usart-thr);
 }
 
-void serial_puts(const char *s)
+static void atmel_serial_puts(const char *s)
 {
while (*s)
serial_putc(*s++);
 }
 
-int serial_getc(void)
+static int atmel_serial_getc(void)
 {
atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE;
 
@@ -99,8 +101,61 @@ int serial_getc(void)
return readl(usart-rhr);
 }
 
-int serial_tstc(void)
+static int atmel_serial_tstc(void)
 {
atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE;
return (readl(usart-csr)  USART3_BIT(RXRDY)) != 0;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device atmel_serial_drv = {
+   .name   = atmel_serial,
+   .start  = atmel_serial_init,
+   .stop   = NULL,
+   .setbrg = atmel_serial_setbrg,
+   .putc   = atmel_serial_putc,
+   .puts   = atmel_serial_puts,
+   .getc   = atmel_serial_getc,
+   .tstc   = atmel_serial_tstc,
+};
+
+void atmel_serial_initialize(void)
+{
+   serial_register(atmel_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return atmel_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return atmel_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   atmel_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   atmel_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   atmel_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return atmel_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return atmel_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 45/71] serial: oc: Implement CONFIG_SERIAL_MULTI into OpenCores serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into OpenCores serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the OpenCores driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Scott McNutt smcn...@psyent.com
---
 common/serial.c |2 ++
 drivers/serial/opencores_yanu.c |   67 +++
 2 files changed, 62 insertions(+), 7 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index c6a275d..f217093 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -75,6 +75,7 @@ serial_initfunc(atmel_serial_initialize);
 serial_initfunc(lpc32xx_serial_initialize);
 serial_initfunc(mcf_serial_initialize);
 serial_initfunc(ns9750_serial_initialize);
+serial_initfunc(oc_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -128,6 +129,7 @@ void serial_initialize(void)
lpc32xx_serial_initialize();
mcf_serial_initialize();
ns9750_serial_initialize();
+   oc_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/opencores_yanu.c b/drivers/serial/opencores_yanu.c
index f383011..a0dd301 100644
--- a/drivers/serial/opencores_yanu.c
+++ b/drivers/serial/opencores_yanu.c
@@ -37,7 +37,7 @@ static yanu_uart_t *uart = (yanu_uart_t 
*)CONFIG_SYS_NIOS_CONSOLE;
 
 /* Everything's already setup for fixed-baud PTF assignment*/
 
-void serial_setbrg (void)
+static void oc_serial_setbrg(void)
 {
int n, k;
const unsigned max_uns = 0x;
@@ -68,7 +68,7 @@ void serial_setbrg (void)
 
 #else
 
-void serial_setbrg (void)
+static void oc_serial_setbrg(void)
 {
int n, k;
const unsigned max_uns = 0x;
@@ -100,7 +100,7 @@ void serial_setbrg (void)
 
 #endif /* CONFIG_SYS_NIOS_FIXEDBAUD */
 
-int serial_init (void)
+static int oc_serial_init(void)
 {
unsigned action,control;
 
@@ -141,7 +141,7 @@ int serial_init (void)
 /*---
  * YANU CONSOLE
  *-*/
-void serial_putc (char c)
+static void oc_serial_putc(char c)
 {
int tx_chars;
unsigned status;
@@ -161,7 +161,7 @@ void serial_putc (char c)
writel((unsigned char)c, uart-data);
 }
 
-void serial_puts (const char *s)
+static void oc_serial_puts(const char *s)
 {
while (*s != 0) {
serial_putc (*s++);
@@ -169,7 +169,7 @@ void serial_puts (const char *s)
 }
 
 
-int serial_tstc(void)
+static int oc_serial_tstc(void)
 {
unsigned status ;
 
@@ -178,7 +178,7 @@ int serial_tstc(void)
 ((1  YANU_RFIFO_CHARS_N) - 1))  0);
 }
 
-int serial_getc (void)
+statoc int oc_serial_getc(void)
 {
while (serial_tstc() == 0)
WATCHDOG_RESET ();
@@ -188,3 +188,56 @@ int serial_getc (void)
 
return(readl(uart-data)  YANU_DATA_CHAR_MASK);
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device oc_serial_drv = {
+   .name   = oc_serial,
+   .start  = oc_serial_init,
+   .stop   = NULL,
+   .setbrg = oc_serial_setbrg,
+   .putc   = oc_serial_putc,
+   .puts   = oc_serial_puts,
+   .getc   = oc_serial_getc,
+   .tstc   = oc_serial_tstc,
+};
+
+void oc_serial_initialize(void)
+{
+   serial_register(oc_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return oc_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return oc_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   oc_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   oc_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   oc_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return oc_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return oc_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 46/71] serial: arm: Implement CONFIG_SERIAL_MULTI into s3c4510b serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into s3c4510b serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the s3c4510b driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c|2 ++
 drivers/serial/s3c4510b_uart.c |   65 
 2 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index f217093..d0a20e9 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -76,6 +76,7 @@ serial_initfunc(lpc32xx_serial_initialize);
 serial_initfunc(mcf_serial_initialize);
 serial_initfunc(ns9750_serial_initialize);
 serial_initfunc(oc_serial_initialize);
+serial_initfunc(s3c4510b_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -130,6 +131,7 @@ void serial_initialize(void)
mcf_serial_initialize();
ns9750_serial_initialize();
oc_serial_initialize();
+   s3c4510b_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/s3c4510b_uart.c b/drivers/serial/s3c4510b_uart.c
index aa378e1..4f7f98e 100644
--- a/drivers/serial/s3c4510b_uart.c
+++ b/drivers/serial/s3c4510b_uart.c
@@ -80,7 +80,7 @@ static int serial_flush_output(void)
 }
 
 
-void serial_setbrg (void)
+static void s3c4510b_serial_setbrg(void)
 {
UART_LINE_CTRL ulctrl;
UART_CTRL  uctrl;
@@ -135,7 +135,7 @@ void serial_setbrg (void)
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  *
  */
-int serial_init (void)
+static int s3c4510b_serial_init(void)
 {
 
 #if   CONFIG_SERIAL1 == 1
@@ -155,7 +155,7 @@ int serial_init (void)
 /*
  * Output a single byte to the serial port.
  */
-void serial_putc (const char c)
+static void s3c4510_serial_putc(const char c)
 {
/* wait for room in the transmit FIFO */
while( !uart-m_stat.bf.txBufEmpty);
@@ -174,7 +174,7 @@ void serial_putc (const char c)
  * Test if an input byte is ready from the serial port. Returns non-zero on
  * success, 0 otherwise.
  */
-int serial_tstc (void)
+static int s3c4510b_serial_tstc(void)
 {
return uart-m_stat.bf.rxReady;
 }
@@ -184,7 +184,7 @@ int serial_tstc (void)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_getc (void)
+static int s3c4510b_serial_getc(void)
 {
int rv;
 
@@ -197,7 +197,7 @@ int serial_getc (void)
}
 }
 
-void serial_puts (const char *s)
+static void s3c4510b_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
@@ -210,3 +210,56 @@ void serial_puts (const char *s)
uart-m_ctrl.bf.sendBreak = 0;
 
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device s3c4510b_serial_drv = {
+   .name   = s3c4510b_serial,
+   .start  = s3c4510b_serial_init,
+   .stop   = NULL,
+   .setbrg = s3c4510b_serial_setbrg,
+   .putc   = s3c4510b_serial_putc,
+   .puts   = s3c4510b_serial_puts,
+   .getc   = s3c4510b_serial_getc,
+   .tstc   = s3c4510b_serial_tstc,
+};
+
+void s3c4510b_serial_initialize(void)
+{
+   serial_register(s3c4510b_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return s3c4510b_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return s3c4510b_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   s3c4510b_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   s3c4510b_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   s3c4510b_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return s3c4510b_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return s3c4510b_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 44/71] serial: Implement CONFIG_SERIAL_MULTI into ns9750 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into ns9750 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the ns9750 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c|2 ++
 drivers/serial/ns9750_serial.c |   65 
 2 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index fa16dce..c6a275d 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -74,6 +74,7 @@ serial_initfunc(altera_serial_initialize);
 serial_initfunc(atmel_serial_initialize);
 serial_initfunc(lpc32xx_serial_initialize);
 serial_initfunc(mcf_serial_initialize);
+serial_initfunc(ns9750_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -126,6 +127,7 @@ void serial_initialize(void)
atmel_serial_initialize();
lpc32xx_serial_initialize();
mcf_serial_initialize();
+   ns9750_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/ns9750_serial.c b/drivers/serial/ns9750_serial.c
index e9645a0..829f6d5 100644
--- a/drivers/serial/ns9750_serial.c
+++ b/drivers/serial/ns9750_serial.c
@@ -52,7 +52,7 @@ static unsigned int unCharCache; /* unCharCache is only valid 
if
  * @Descr: configures GPIOs and UART. Requires BBUS Master Reset turned off
  ***/
 
-int serial_init( void )
+static int ns9750_serial_init(void)
 {
unsigned int aunGPIOTxD[] = { 0, 8, 40, 44 };
unsigned int aunGPIORxD[] = { 1, 9, 41, 45 };
@@ -85,7 +85,7 @@ int serial_init( void )
  * @Descr: writes one character to the FIFO. Blocks until FIFO is not full
  ***/
 
-void serial_putc( const char c )
+static void ns9750_serial_putc(const char c)
 {
if (c == '\n')
serial_putc( '\r' );
@@ -105,7 +105,7 @@ void serial_putc( const char c )
  * @Descr: writes non-zero string to the FIFO.
  ***/
 
-void serial_puts( const char *s )
+static void ns9750_serial_puts(const char *s)
 {
while (*s) {
serial_putc( *s++ );
@@ -118,7 +118,7 @@ void serial_puts( const char *s )
  * @Descr: performs only 8bit accesses to the FIFO. No error handling
  ***/
 
-int serial_getc( void )
+static int ns9750_serial_getc(void)
 {
int i;
 
@@ -142,7 +142,7 @@ int serial_getc( void )
  *unCharCache and the numbers of characters in cCharsAvailable
  ***/
 
-int serial_tstc( void )
+static int ns9750_serial_tstc(void)
 {
unsigned int unRegCache;
 
@@ -171,7 +171,7 @@ int serial_tstc( void )
return 0;
 }
 
-void serial_setbrg( void )
+static void ns9750_serial_setbrg(void)
 {
*get_ser_reg_addr_channel( NS9750_SER_BITRATE, CONSOLE ) =
calcBitrateRegister();
@@ -208,3 +208,56 @@ static unsigned int calcRxCharGapRegister( void )
 {
return NS9750_SER_RX_CHAR_TIMER_TRUN;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device ns9750_serial_drv = {
+   .name   = ns9750_serial,
+   .start  = ns9750_serial_init,
+   .stop   = NULL,
+   .setbrg = ns9750_serial_setbrg,
+   .putc   = ns9750_serial_putc,
+   .puts   = ns9750_serial_puts,
+   .getc   = ns9750_serial_getc,
+   .tstc   = ns9750_serial_tstc,
+};
+
+void ns9750_serial_initialize(void)
+{
+   serial_register(ns9750_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return ns9750_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return ns9750_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   ns9750_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   ns9750_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   ns9750_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return ns9750_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return ns9750_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 47/71] serial: arm: Implement CONFIG_SERIAL_MULTI into s3c64xx serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into s3c64xx serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the s3c64xx driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: John Rigby john.ri...@linaro.org
Cc: Minkyu Kang mk7.k...@samsung.com
---
 common/serial.c  |2 ++
 drivers/serial/s3c64xx.c |   65 +-
 2 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index d0a20e9..93d6a08 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -77,6 +77,7 @@ serial_initfunc(mcf_serial_initialize);
 serial_initfunc(ns9750_serial_initialize);
 serial_initfunc(oc_serial_initialize);
 serial_initfunc(s3c4510b_serial_initialize);
+serial_initfunc(s3c64xx_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -132,6 +133,7 @@ void serial_initialize(void)
ns9750_serial_initialize();
oc_serial_initialize();
s3c4510b_serial_initialize();
+   s3c64xx_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/s3c64xx.c b/drivers/serial/s3c64xx.c
index a88e930..823425b 100644
--- a/drivers/serial/s3c64xx.c
+++ b/drivers/serial/s3c64xx.c
@@ -68,7 +68,7 @@ static const int udivslot[] = {
0xffdf,
 };
 
-void serial_setbrg(void)
+static void s3c64xx_serial_setbrg(void)
 {
s3c64xx_uart *const uart = s3c64xx_get_base_uart(UART_NR);
u32 pclk = get_PCLK();
@@ -88,7 +88,7 @@ void serial_setbrg(void)
  * Initialise the serial port with the given baudrate. The settings
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  */
-int serial_init(void)
+static int s3c64xx_serial_init(void)
 {
s3c64xx_uart *const uart = s3c64xx_get_base_uart(UART_NR);
 
@@ -110,7 +110,7 @@ int serial_init(void)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_getc(void)
+static int s3c64xx_serial_getc(void)
 {
s3c64xx_uart *const uart = s3c64xx_get_base_uart(UART_NR);
 
@@ -137,7 +137,7 @@ void enable_putc(void)
 /*
  * Output a single byte to the serial port.
  */
-void serial_putc(const char c)
+static void s3c64xx_serial_putc(const char c)
 {
s3c64xx_uart *const uart = s3c64xx_get_base_uart(UART_NR);
 
@@ -159,15 +159,68 @@ void serial_putc(const char c)
 /*
  * Test whether a character is in the RX buffer
  */
-int serial_tstc(void)
+static int s3c64xx_serial_tstc(void)
 {
s3c64xx_uart *const uart = s3c64xx_get_base_uart(UART_NR);
 
return uart-UTRSTAT  0x1;
 }
 
-void serial_puts(const char *s)
+static void s3c64xx_serial_puts(const char *s)
 {
while (*s)
serial_putc(*s++);
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device s3c64xx_serial_drv = {
+   .name   = s3c64xx_serial,
+   .start  = s3c64xx_serial_init,
+   .stop   = NULL,
+   .setbrg = s3c64xx_serial_setbrg,
+   .putc   = s3c64xx_serial_putc,
+   .puts   = s3c64xx_serial_puts,
+   .getc   = s3c64xx_serial_getc,
+   .tstc   = s3c64xx_serial_tstc,
+};
+
+void s3c64xx_serial_initialize(void)
+{
+   serial_register(s3c64xx_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return s3c64xx_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return s3c64xx_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   s3c64xx_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   s3c64xx_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   s3c64xx_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return s3c64xx_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return s3c64xx_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 49/71] serial: arm: Implement CONFIG_SERIAL_MULTI into clps7111 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into clps7111 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the clps7111 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c  |2 ++
 drivers/serial/serial_clps7111.c |   66 ++
 2 files changed, 61 insertions(+), 7 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index a7a3234..4471262 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -79,6 +79,7 @@ serial_initfunc(oc_serial_initialize);
 serial_initfunc(s3c4510b_serial_initialize);
 serial_initfunc(s3c64xx_serial_initialize);
 serial_initfunc(sandbox_serial_initialize);
+serial_initfunc(clps7111_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -136,6 +137,7 @@ void serial_initialize(void)
s3c4510b_serial_initialize();
s3c64xx_serial_initialize();
sandbox_serial_initialize();
+   clps7111_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_clps7111.c b/drivers/serial/serial_clps7111.c
index a6aecad..e1bed90 100644
--- a/drivers/serial/serial_clps7111.c
+++ b/drivers/serial/serial_clps7111.c
@@ -33,7 +33,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void serial_setbrg (void)
+static void clps7111_serial_setbrg(void)
 {
unsigned int reg = 0;
 
@@ -63,7 +63,7 @@ void serial_setbrg (void)
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  *
  */
-int serial_init (void)
+static int clps7111_serial_init(void)
 {
serial_setbrg ();
 
@@ -74,7 +74,7 @@ int serial_init (void)
 /*
  * Output a single byte to the serial port.
  */
-void serial_putc (const char c)
+static void clps7111_serial_putc(const char c)
 {
int tmo;
 
@@ -95,7 +95,7 @@ void serial_putc (const char c)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_tstc (void)
+static int clps7111_serial_tstc(void)
 {
return !(IO_SYSFLG1  SYSFLG1_URXFE);
 }
@@ -105,17 +105,69 @@ int serial_tstc (void)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_getc (void)
+static int clps7111_serial_getc(void)
 {
while (IO_SYSFLG1  SYSFLG1_URXFE);
 
return IO_UARTDR1  0xff;
 }
 
-void
-serial_puts (const char *s)
+static void clps7111_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device clps7111_serial_drv = {
+   .name   = clps7111_serial,
+   .start  = clps7111_serial_init,
+   .stop   = NULL,
+   .setbrg = clps7111_serial_setbrg,
+   .putc   = clps7111_serial_putc,
+   .puts   = clps7111_serial_puts,
+   .getc   = clps7111_serial_getc,
+   .tstc   = clps7111_serial_tstc,
+};
+
+void clps7111_serial_initialize(void)
+{
+   serial_register(clps7111_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return clps7111_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return clps7111_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   clps7111_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   clps7111_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   clps7111_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return clps7111_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return clps7111_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 48/71] serial: sandbox: Implement CONFIG_SERIAL_MULTI into sandbox serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into sandbox serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the sandbox driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Mike Frysinger vap...@gentoo.org
---
 common/serial.c  |2 ++
 drivers/serial/sandbox.c |   67 +-
 2 files changed, 63 insertions(+), 6 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 93d6a08..a7a3234 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -78,6 +78,7 @@ serial_initfunc(ns9750_serial_initialize);
 serial_initfunc(oc_serial_initialize);
 serial_initfunc(s3c4510b_serial_initialize);
 serial_initfunc(s3c64xx_serial_initialize);
+serial_initfunc(sandbox_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -134,6 +135,7 @@ void serial_initialize(void)
oc_serial_initialize();
s3c4510b_serial_initialize();
s3c64xx_serial_initialize();
+   sandbox_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c
index 1927c16..d60fbba 100644
--- a/drivers/serial/sandbox.c
+++ b/drivers/serial/sandbox.c
@@ -27,28 +27,30 @@
 
 #include common.h
 #include os.h
+#include serial.h
+#include linux/compiler.h
 
-int serial_init(void)
+static int sandbox_serial_init(void)
 {
os_tty_raw(0);
return 0;
 }
 
-void serial_setbrg(void)
+static void sandbox_serial_setbrg(void)
 {
 }
 
-void serial_putc(const char ch)
+static void sandbox_serial_putc(const char ch)
 {
os_write(1, ch, 1);
 }
 
-void serial_puts(const char *str)
+static void sandbox_serial_puts(const char *str)
 {
os_write(1, str, strlen(str));
 }
 
-int serial_getc(void)
+static int sandbox_serial_getc(void)
 {
char buf;
ssize_t count;
@@ -57,7 +59,60 @@ int serial_getc(void)
return count == 1 ? buf : 0;
 }
 
-int serial_tstc(void)
+static int sandbox_serial_tstc(void)
 {
return 0;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device sandbox_serial_drv = {
+   .name   = sandbox_serial,
+   .start  = sandbox_serial_init,
+   .stop   = NULL,
+   .setbrg = sandbox_serial_setbrg,
+   .putc   = sandbox_serial_putc,
+   .puts   = sandbox_serial_puts,
+   .getc   = sandbox_serial_getc,
+   .tstc   = sandbox_serial_tstc,
+};
+
+void sandbox_serial_initialize(void)
+{
+   serial_register(sandbox_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return sandbox_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return sandbox_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   sandbox_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   sandbox_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   sandbox_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return sandbox_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return sandbox_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 52/71] serial: arm: Implement CONFIG_SERIAL_MULTI into ks8695 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into ks8695 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the ks8695 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c|2 ++
 drivers/serial/serial_ks8695.c |   73 +++-
 2 files changed, 66 insertions(+), 9 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 3d8fa7f..21c8ac3 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -82,6 +82,7 @@ serial_initfunc(sandbox_serial_initialize);
 serial_initfunc(clps7111_serial_initialize);
 serial_initfunc(imx_serial_initialize);
 serial_initfunc(ixp_serial_initialize);
+serial_initfunc(ks8695_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -142,6 +143,7 @@ void serial_initialize(void)
clps7111_serial_initialize();
imx_serial_initialize();
ixp_serial_initialize();
+   ks8695_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_ks8695.c b/drivers/serial/serial_ks8695.c
index aacd1be..b3af388 100644
--- a/drivers/serial/serial_ks8695.c
+++ b/drivers/serial/serial_ks8695.c
@@ -20,6 +20,8 @@
 
 #include common.h
 #include asm/arch/platform.h
+#include serial.h
+#include linux/compiler.h
 
 #ifndef CONFIG_SERIAL1
 #error Bad: you didn't configure serial ...
@@ -54,7 +56,7 @@ struct ks8695uart {
 int serial_console = 1;
 
 
-void serial_setbrg(void)
+static void ks8695_serial_setbrg(void)
 {
volatile struct ks8695uart *uartp = KS8695_UART_ADDR;
 
@@ -63,14 +65,14 @@ void serial_setbrg(void)
uartp-LCR = KS8695_UART_LINEC_WLEN8;
 }
 
-int serial_init(void)
+static int ks8695_serial_init(void)
 {
serial_console = 1;
serial_setbrg();
return 0;
 }
 
-void serial_raw_putc(const char c)
+static void ks8695_serial_raw_putc(const char c)
 {
volatile struct ks8695uart *uartp = KS8695_UART_ADDR;
int i;
@@ -83,16 +85,16 @@ void serial_raw_putc(const char c)
uartp-TX = c;
 }
 
-void serial_putc(const char c)
+static void ks8695_serial_putc(const char c)
 {
if (serial_console) {
-   serial_raw_putc(c);
+   ks8695_serial_raw_putc(c);
if (c == '\n')
-   serial_raw_putc('\r');
+   ks8695_serial_raw_putc('\r');
}
 }
 
-int serial_tstc(void)
+static int ks8695_serial_tstc(void)
 {
volatile struct ks8695uart *uartp = KS8695_UART_ADDR;
if (serial_console)
@@ -100,14 +102,14 @@ int serial_tstc(void)
return 0;
 }
 
-void serial_puts(const char *s)
+static void ks8695_serial_puts(const char *s)
 {
char c;
while ((c = *s++) != 0)
serial_putc(c);
 }
 
-int serial_getc(void)
+static int ks8695_serial_getc(void)
 {
volatile struct ks8695uart *uartp = KS8695_UART_ADDR;
 
@@ -115,3 +117,56 @@ int serial_getc(void)
;
return (uartp-RX);
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device ks8695_serial_drv = {
+   .name   = ks8695_serial,
+   .start  = ks8695_serial_init,
+   .stop   = NULL,
+   .setbrg = ks8695_serial_setbrg,
+   .putc   = ks8695_serial_putc,
+   .puts   = ks8695_serial_puts,
+   .getc   = ks8695_serial_getc,
+   .tstc   = ks8695_serial_tstc,
+};
+
+void ks8695_serial_initialize(void)
+{
+   serial_register(ks8695_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return ks8695_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return ks8695_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   ks8695_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   ks8695_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   ks8695_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return ks8695_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return ks8695_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 53/71] serial: arm: Implement CONFIG_SERIAL_MULTI into lh7a40x serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into lh7a40x serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the lh7a40x driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c |2 ++
 drivers/serial/serial_lh7a40x.c |   66 ++-
 2 files changed, 61 insertions(+), 7 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 21c8ac3..59a8650 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -83,6 +83,7 @@ serial_initfunc(clps7111_serial_initialize);
 serial_initfunc(imx_serial_initialize);
 serial_initfunc(ixp_serial_initialize);
 serial_initfunc(ks8695_serial_initialize);
+serial_initfunc(lh7a40x_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -144,6 +145,7 @@ void serial_initialize(void)
imx_serial_initialize();
ixp_serial_initialize();
ks8695_serial_initialize();
+   lh7a40x_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_lh7a40x.c b/drivers/serial/serial_lh7a40x.c
index 4767489..6b73606 100644
--- a/drivers/serial/serial_lh7a40x.c
+++ b/drivers/serial/serial_lh7a40x.c
@@ -33,7 +33,7 @@ DECLARE_GLOBAL_DATA_PTR;
 # error No console configured ... 
 #endif
 
-void serial_setbrg (void)
+static void lh7a40x_serial_setbrg(void)
 {
lh7a40x_uart_t* uart = LH7A40X_UART_PTR(UART_CONSOLE);
int i;
@@ -61,7 +61,7 @@ void serial_setbrg (void)
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  *
  */
-int serial_init (void)
+static int lh7a40x_serial_init(void)
 {
lh7a40x_uart_t* uart = LH7A40X_UART_PTR(UART_CONSOLE);
 
@@ -95,7 +95,7 @@ int serial_init (void)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_getc (void)
+static int lh7a40x_serial_getc(void)
 {
lh7a40x_uart_t* uart = LH7A40X_UART_PTR(UART_CONSOLE);
 
@@ -141,7 +141,7 @@ void enable_putc(void)
 /*
  * Output a single byte to the serial port.
  */
-void serial_putc (const char c)
+static void lh7a40x_serial_putc(const char c)
 {
lh7a40x_uart_t* uart = LH7A40X_UART_PTR(UART_CONSOLE);
 
@@ -168,17 +168,69 @@ void serial_putc (const char c)
 /*
  * Test whether a character is in the RX buffer
  */
-int serial_tstc (void)
+static int lh7a40x_serial_tstc(void)
 {
lh7a40x_uart_t* uart = LH7A40X_UART_PTR(UART_CONSOLE);
 
return(!(uart-status  UART_RXFE));
 }
 
-void
-serial_puts (const char *s)
+static void lh7a40x_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device lh7a40x_serial_drv = {
+   .name   = lh7a40x_serial,
+   .start  = lh7a40x_serial_init,
+   .stop   = NULL,
+   .setbrg = lh7a40x_serial_setbrg,
+   .putc   = lh7a40x_serial_putc,
+   .puts   = lh7a40x_serial_puts,
+   .getc   = lh7a40x_serial_getc,
+   .tstc   = lh7a40x_serial_tstc,
+};
+
+void lh7a40x_serial_initialize(void)
+{
+   serial_register(lh7a40x_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return lh7a40x_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return lh7a40x_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   lh7a40x_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   lh7a40x_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   lh7a40x_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return lh7a40x_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return lh7a40x_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 54/71] serial: arm: Implement CONFIG_SERIAL_MULTI into lpc2292 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into lpc2292 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the lpc2292 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c |2 ++
 drivers/serial/serial_lpc2292.c |   66 ++-
 2 files changed, 61 insertions(+), 7 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 59a8650..23c8d22 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -84,6 +84,7 @@ serial_initfunc(imx_serial_initialize);
 serial_initfunc(ixp_serial_initialize);
 serial_initfunc(ks8695_serial_initialize);
 serial_initfunc(lh7a40x_serial_initialize);
+serial_initfunc(lpc2292_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -146,6 +147,7 @@ void serial_initialize(void)
ixp_serial_initialize();
ks8695_serial_initialize();
lh7a40x_serial_initialize();
+   lpc2292_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_lpc2292.c b/drivers/serial/serial_lpc2292.c
index e3a60b6..2601ee7 100644
--- a/drivers/serial/serial_lpc2292.c
+++ b/drivers/serial/serial_lpc2292.c
@@ -33,7 +33,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void serial_setbrg (void)
+static void lpc2292_serial_setbrg(void)
 {
unsigned short divisor = 0;
 
@@ -57,7 +57,7 @@ void serial_setbrg (void)
PUT8(U0FCR, 1); /* Enable RX and TX FIFOs */
 }
 
-int serial_init (void)
+static int lpc2292_serial_init(void)
 {
unsigned long pinsel0;
 
@@ -71,7 +71,7 @@ int serial_init (void)
return (0);
 }
 
-void serial_putc (const char c)
+static void lpc2292_serial_putc(const char c)
 {
if (c == '\n')
{
@@ -83,14 +83,13 @@ void serial_putc (const char c)
PUT8(U0THR, c);
 }
 
-int serial_getc (void)
+static int lpc2292_serial_getc(void)
 {
while((GET8(U0LSR)  1) == 0);
return GET8(U0RBR);
 }
 
-void
-serial_puts (const char *s)
+static void lpc2292_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
@@ -98,7 +97,60 @@ serial_puts (const char *s)
 }
 
 /* Test if there is a byte to read */
-int serial_tstc (void)
+static int lpc2292_serial_tstc(void)
 {
return (GET8(U0LSR)  1);
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device lpc2292_serial_drv = {
+   .name   = lpc2292_serial,
+   .start  = lpc2292_serial_init,
+   .stop   = NULL,
+   .setbrg = lpc2292_serial_setbrg,
+   .putc   = lpc2292_serial_putc,
+   .puts   = lpc2292_serial_puts,
+   .getc   = lpc2292_serial_getc,
+   .tstc   = lpc2292_serial_tstc,
+};
+
+void lpc2292_serial_initialize(void)
+{
+   serial_register(lpc2292_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return lpc2292_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return lpc2292_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   lpc2292_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   lpc2292_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   lpc2292_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return lpc2292_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return lpc2292_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 51/71] serial: arm: Implement CONFIG_SERIAL_MULTI into ixp serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into ixp serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the ixp driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Michael Schwingen mich...@schwingen.org
---
 common/serial.c |2 ++
 drivers/serial/serial_ixp.c |   68 ++-
 2 files changed, 63 insertions(+), 7 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index cb8eacf..3d8fa7f 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -81,6 +81,7 @@ serial_initfunc(s3c64xx_serial_initialize);
 serial_initfunc(sandbox_serial_initialize);
 serial_initfunc(clps7111_serial_initialize);
 serial_initfunc(imx_serial_initialize);
+serial_initfunc(ixp_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -140,6 +141,7 @@ void serial_initialize(void)
sandbox_serial_initialize();
clps7111_serial_initialize();
imx_serial_initialize();
+   ixp_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_ixp.c b/drivers/serial/serial_ixp.c
index a9acd47..6e3f7f0 100644
--- a/drivers/serial/serial_ixp.c
+++ b/drivers/serial/serial_ixp.c
@@ -31,6 +31,8 @@
 #include common.h
 #include asm/arch/ixp425.h
 #include watchdog.h
+#include serial.h
+#include linux/compiler.h
 
 /*
  *   14.7456 MHz
@@ -41,7 +43,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void serial_setbrg (void)
+static void ixp_serial_setbrg(void)
 {
unsigned int quot = 0;
int uart = CONFIG_SYS_IXP425_CONSOLE;
@@ -72,7 +74,7 @@ void serial_setbrg (void)
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  *
  */
-int serial_init (void)
+static int ixp_serial_init(void)
 {
serial_setbrg ();
 
@@ -83,7 +85,7 @@ int serial_init (void)
 /*
  * Output a single byte to the serial port.
  */
-void serial_putc (const char c)
+static void ixp_serial_putc(const char c)
 {
/* wait for room in the tx FIFO on UART */
while ((LSR(CONFIG_SYS_IXP425_CONSOLE)  LSR_TEMT) == 0)
@@ -101,7 +103,7 @@ void serial_putc (const char c)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_tstc (void)
+static int ixp_serial_tstc(void)
 {
return LSR(CONFIG_SYS_IXP425_CONSOLE)  LSR_DR;
 }
@@ -111,7 +113,7 @@ int serial_tstc (void)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_getc (void)
+static int ixp_serial_getc(void)
 {
while (!(LSR(CONFIG_SYS_IXP425_CONSOLE)  LSR_DR))
WATCHDOG_RESET();   /* Reset HW Watchdog, if needed */
@@ -119,10 +121,62 @@ int serial_getc (void)
return (char) RBR(CONFIG_SYS_IXP425_CONSOLE)  0xff;
 }
 
-void
-serial_puts (const char *s)
+static void ixp_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device ixp_serial_drv = {
+   .name   = ixp_serial,
+   .start  = ixp_serial_init,
+   .stop   = NULL,
+   .setbrg = ixp_serial_setbrg,
+   .putc   = ixp_serial_putc,
+   .puts   = ixp_serial_puts,
+   .getc   = ixp_serial_getc,
+   .tstc   = ixp_serial_tstc,
+};
+
+void ixp_serial_initialize(void)
+{
+   serial_register(ixp_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return ixp_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return ixp_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   ixp_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   ixp_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   ixp_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return ixp_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return ixp_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 61/71] serial: sh: Implement CONFIG_SERIAL_MULTI into sh serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into sh serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the sh driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Phil Edworthy phil.edwor...@renesas.com
Cc: Nobuhiro Iwamatsu iwama...@nigauri.org
---
 common/serial.c|2 ++
 drivers/serial/serial_sh.c |   65 
 2 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 3dae01b..631af65 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -91,6 +91,7 @@ serial_initfunc(netarm_serial_initialize);
 serial_initfunc(pl01x_serial_initialize);
 serial_initfunc(s3c44b0_serial_initialize);
 serial_initfunc(sa1100_serial_initialize);
+serial_initfunc(sh_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -160,6 +161,7 @@ void serial_initialize(void)
pl01x_serial_initialize();
s3c44b0_serial_initialize();
sa1100_serial_initialize();
+   sh_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_sh.c b/drivers/serial/serial_sh.c
index 13919c6..8c30397 100644
--- a/drivers/serial/serial_sh.c
+++ b/drivers/serial/serial_sh.c
@@ -55,13 +55,13 @@ static struct uart_port sh_sci = {
.type   = SCIF_BASE_PORT,
 };
 
-void serial_setbrg(void)
+static void sh_serial_setbrg(void)
 {
DECLARE_GLOBAL_DATA_PTR;
sci_out(sh_sci, SCBRR, SCBRR_VALUE(gd-baudrate, CONFIG_SYS_CLK_FREQ));
 }
 
-int serial_init(void)
+static int sh_serial_init(void)
 {
sci_out(sh_sci, SCSCR , SCSCR_INIT(sh_sci));
sci_out(sh_sci, SCSCR , SCSCR_INIT(sh_sci));
@@ -127,21 +127,21 @@ void serial_raw_putc(const char c)
sci_out(sh_sci, SCxSR, sci_in(sh_sci, SCxSR)  ~SCxSR_TEND(sh_sci));
 }
 
-void serial_putc(const char c)
+static void sh_serial_putc(const char c)
 {
if (c == '\n')
serial_raw_putc('\r');
serial_raw_putc(c);
 }
 
-void serial_puts(const char *s)
+static void sh_serial_puts(const char *s)
 {
char c;
while ((c = *s++) != 0)
serial_putc(c);
 }
 
-int serial_tstc(void)
+static int sh_serial_tstc(void)
 {
return serial_rx_fifo_level() ? 1 : 0;
 }
@@ -167,7 +167,7 @@ int serial_getc_check(void)
return status  (SCIF_DR | SCxSR_RDxF(sh_sci));
 }
 
-int serial_getc(void)
+static int sh_serial_getc(void)
 {
unsigned short status;
char ch;
@@ -187,3 +187,56 @@ int serial_getc(void)
handle_error();
return ch;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device sh_serial_drv = {
+   .name   = sh_serial,
+   .start  = sh_serial_init,
+   .stop   = NULL,
+   .setbrg = sh_serial_setbrg,
+   .putc   = sh_serial_putc,
+   .puts   = sh_serial_puts,
+   .getc   = sh_serial_getc,
+   .tstc   = sh_serial_tstc,
+};
+
+void sh_serial_initialize(void)
+{
+   serial_register(sh_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return sh_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return sh_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   sh_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   sh_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   sh_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return sh_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return sh_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 63/71] serial: mxs: spl: Remove empty serial_* functions from SPL code

2012-09-16 Thread Marek Vasut
Remove the empty bodies from serial_* functions from MXS SPL code.
These empty implementations are now in common/serial.c instead so
declaring them also in the SPL code would cause a colision once
serial multi is enabled unconditionally.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Stefano Babic sba...@denx.de
---
 arch/arm/cpu/arm926ejs/mxs/spl_boot.c |4 
 1 file changed, 4 deletions(-)

diff --git a/arch/arm/cpu/arm926ejs/mxs/spl_boot.c 
b/arch/arm/cpu/arm926ejs/mxs/spl_boot.c
index ddafddb..51b8625 100644
--- a/arch/arm/cpu/arm926ejs/mxs/spl_boot.c
+++ b/arch/arm/cpu/arm926ejs/mxs/spl_boot.c
@@ -122,10 +122,6 @@ inline void board_init_r(gd_t *id, ulong dest_addr)
;
 }
 
-#ifndef CONFIG_SPL_SERIAL_SUPPORT
-void serial_putc(const char c) {}
-void serial_puts(const char *s) {}
-#endif
 void hang(void) __attribute__ ((noreturn));
 void hang(void)
 {
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 64/71] serial: ns16550: Call usbtty_poll only in non-SPL build

2012-09-16 Thread Marek Vasut
Having both USBTTY and CONFIG_SERIAL_MULTI enabled in SPL, the
usbtty.c file is protected in Makefile to not be compiled into
the SPL. Yet, the ns16550 serial driver does not contain such
protection. Add it to avoid missing symbol error.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 drivers/serial/ns16550.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index facadd2..9027781 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -101,7 +101,7 @@ void NS16550_putc(NS16550_t com_port, char c)
 char NS16550_getc(NS16550_t com_port)
 {
while ((serial_in(com_port-lsr)  UART_LSR_DR) == 0) {
-#ifdef CONFIG_USB_TTY
+#if !defined(CONFIG_SPL_BUILD)  defined(CONFIG_USB_TTY)
extern void usbtty_poll(void);
usbtty_poll();
 #endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 55/71] serial: Implement CONFIG_SERIAL_MULTI into max3100 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into max3100 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the max3100 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c |2 ++
 drivers/serial/serial_max3100.c |   72 +++
 2 files changed, 60 insertions(+), 14 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 23c8d22..f007d13 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -85,6 +85,7 @@ serial_initfunc(ixp_serial_initialize);
 serial_initfunc(ks8695_serial_initialize);
 serial_initfunc(lh7a40x_serial_initialize);
 serial_initfunc(lpc2292_serial_initialize);
+serial_initfunc(max3100_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -148,6 +149,7 @@ void serial_initialize(void)
ks8695_serial_initialize();
lh7a40x_serial_initialize();
lpc2292_serial_initialize();
+   max3100_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_max3100.c b/drivers/serial/serial_max3100.c
index 4abc271..b21fba0 100644
--- a/drivers/serial/serial_max3100.c
+++ b/drivers/serial/serial_max3100.c
@@ -25,6 +25,8 @@
 
 #include common.h
 #include watchdog.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -149,7 +151,7 @@ static int rxfifo_in;
 static int rxfifo_out;
 static unsigned char rxfifo_buf[16];
 
-static void max3100_putc(int c)
+static void max3100_serial_putc_raw(int c)
 {
unsigned int rx;
 
@@ -164,7 +166,7 @@ static void max3100_putc(int c)
}
 }
 
-static int max3100_getc(void)
+static int max3100_serial_getc(void)
 {
int c;
unsigned int rx;
@@ -190,7 +192,7 @@ static int max3100_getc(void)
return c;
 }
 
-static int max3100_tstc(void)
+static int max3100_serial_tstc(void)
 {
unsigned int rx;
 
@@ -213,7 +215,7 @@ static int max3100_tstc(void)
return 1;
 }
 
-int serial_init(void)
+static int max3100_serial_init(void)
 {
unsigned int wconf, rconf;
int i;
@@ -268,31 +270,73 @@ int serial_init(void)
return (0);
 }
 
-void serial_putc(const char c)
+static void max3100_serial_putc(const char c)
 {
if (c == '\n')
-   max3100_putc('\r');
+   max3100_serial_putc_raw('\r');
 
-   max3100_putc(c);
+   max3100_serial_putc_raw(c);
 }
 
-void serial_puts(const char *s)
+static void max3100_serial_puts(const char *s)
 {
while (*s)
-   serial_putc (*s++);
+   max3100_serial_putc_raw(*s++);
 }
 
-int serial_getc(void)
+static void max3100_serial_setbrg(void)
 {
-   return max3100_getc();
 }
 
-int serial_tstc(void)
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device max3100_serial_drv = {
+   .name   = max3100_serial,
+   .start  = max3100_serial_init,
+   .stop   = NULL,
+   .setbrg = max3100_serial_setbrg,
+   .putc   = max3100_serial_putc,
+   .puts   = max3100_serial_puts,
+   .getc   = max3100_serial_getc,
+   .tstc   = max3100_serial_tstc,
+};
+
+void max3100_serial_initialize(void)
+{
+   serial_register(max3100_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return max3100_serial_drv;
+}
+#else
+int serial_init(void)
 {
-   return max3100_tstc();
+   return max3100_serial_init();
 }
 
-/* XXX WTF? */
 void serial_setbrg(void)
 {
+   max3100_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   max3100_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   max3100_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return max3100_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return max3100_serial_tstc();
 }
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 58/71] serial: arm: Implement CONFIG_SERIAL_MULTI into pl01x serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into pl01x serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the pl01x driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Stefano Babic sba...@denx.de
Cc: Mathieu J. Poirier mathieu.poir...@linaro.org
Cc: Linus Walleij linus.wall...@linaro.org
Cc: John Rigby john.ri...@linaro.org
Cc: Rabin Vincent rabin.vinc...@stericsson.com
---
 common/serial.c   |2 ++
 drivers/serial/serial_pl01x.c |   69 -
 2 files changed, 64 insertions(+), 7 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index c033cf0..48e6044 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -88,6 +88,7 @@ serial_initfunc(lpc2292_serial_initialize);
 serial_initfunc(max3100_serial_initialize);
 serial_initfunc(mxc_serial_initialize);
 serial_initfunc(netarm_serial_initialize);
+serial_initfunc(pl01x_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -154,6 +155,7 @@ void serial_initialize(void)
max3100_serial_initialize();
mxc_serial_initialize();
netarm_serial_initialize();
+   pl01x_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_pl01x.c b/drivers/serial/serial_pl01x.c
index d4c5137..beb0c98 100644
--- a/drivers/serial/serial_pl01x.c
+++ b/drivers/serial/serial_pl01x.c
@@ -30,6 +30,8 @@
 #include common.h
 #include watchdog.h
 #include asm/io.h
+#include serial.h
+#include linux/compiler.h
 #include serial_pl01x.h
 
 /*
@@ -54,7 +56,7 @@ static struct pl01x_regs *pl01x_get_regs(int portnum)
 
 #ifdef CONFIG_PL010_SERIAL
 
-int serial_init (void)
+static int pl01x_serial_init(void)
 {
struct pl01x_regs *regs = pl01x_get_regs(CONSOLE_PORT);
unsigned int divisor;
@@ -104,7 +106,7 @@ int serial_init (void)
 
 #ifdef CONFIG_PL011_SERIAL
 
-int serial_init (void)
+static int pl01x_serial_init(void)
 {
struct pl01x_regs *regs = pl01x_get_regs(CONSOLE_PORT);
unsigned int temp;
@@ -169,7 +171,7 @@ int serial_init (void)
 
 #endif /* CONFIG_PL011_SERIAL */
 
-void serial_putc (const char c)
+static void pl01x_serial_putc(const char c)
 {
if (c == '\n')
pl01x_putc (CONSOLE_PORT, '\r');
@@ -177,24 +179,24 @@ void serial_putc (const char c)
pl01x_putc (CONSOLE_PORT, c);
 }
 
-void serial_puts (const char *s)
+static void pl01x_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
 
-int serial_getc (void)
+static int pl01x_serial_getc(void)
 {
return pl01x_getc (CONSOLE_PORT);
 }
 
-int serial_tstc (void)
+static int pl01x_serial_tstc(void)
 {
return pl01x_tstc (CONSOLE_PORT);
 }
 
-void serial_setbrg (void)
+static void pl01x_serial_setbrg(void)
 {
struct pl01x_regs *regs = pl01x_get_regs(CONSOLE_PORT);
 
@@ -250,3 +252,56 @@ static int pl01x_tstc (int portnum)
WATCHDOG_RESET();
return !(readl(regs-fr)  UART_PL01x_FR_RXFE);
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device pl01x_serial_drv = {
+   .name   = pl01x_serial,
+   .start  = pl01x_serial_init,
+   .stop   = NULL,
+   .setbrg = pl01x_serial_setbrg,
+   .putc   = pl01x_serial_putc,
+   .puts   = pl01x_serial_puts,
+   .getc   = pl01x_serial_getc,
+   .tstc   = pl01x_serial_tstc,
+};
+
+void pl01x_serial_initialize(void)
+{
+   serial_register(pl01x_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return pl01x_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return pl01x_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   pl01x_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   pl01x_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   pl01x_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return pl01x_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return pl01x_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 60/71] serial: arm: Implement CONFIG_SERIAL_MULTI into sa1100 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into sa1100 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the sa1100 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c|2 ++
 drivers/serial/serial_sa1100.c |   68 +++-
 2 files changed, 63 insertions(+), 7 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 1953aaf..3dae01b 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -90,6 +90,7 @@ serial_initfunc(mxc_serial_initialize);
 serial_initfunc(netarm_serial_initialize);
 serial_initfunc(pl01x_serial_initialize);
 serial_initfunc(s3c44b0_serial_initialize);
+serial_initfunc(sa1100_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -158,6 +159,7 @@ void serial_initialize(void)
netarm_serial_initialize();
pl01x_serial_initialize();
s3c44b0_serial_initialize();
+   sa1100_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_sa1100.c b/drivers/serial/serial_sa1100.c
index 5d18875..86e682d 100644
--- a/drivers/serial/serial_sa1100.c
+++ b/drivers/serial/serial_sa1100.c
@@ -30,10 +30,12 @@
 
 #include common.h
 #include SA-1100.h
+#include serial.h
+#include linux/compiler.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void serial_setbrg (void)
+static void sa1100_serial_setbrg(void)
 {
unsigned int reg = 0;
 
@@ -89,7 +91,7 @@ void serial_setbrg (void)
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  *
  */
-int serial_init (void)
+static int sa1100_serial_init(void)
 {
serial_setbrg ();
 
@@ -100,7 +102,7 @@ int serial_init (void)
 /*
  * Output a single byte to the serial port.
  */
-void serial_putc (const char c)
+static void sa1100_serial_putc(const char c)
 {
 #ifdef CONFIG_SERIAL1
/* wait for room in the tx FIFO on SERIAL1 */
@@ -124,7 +126,7 @@ void serial_putc (const char c)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_tstc (void)
+static int sa1100_serial_tstc(void)
 {
 #ifdef CONFIG_SERIAL1
return Ser1UTSR1  UTSR1_RNE;
@@ -138,7 +140,7 @@ int serial_tstc (void)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_getc (void)
+static int sa1100_serial_getc(void)
 {
 #ifdef CONFIG_SERIAL1
while (!(Ser1UTSR1  UTSR1_RNE));
@@ -151,10 +153,62 @@ int serial_getc (void)
 #endif
 }
 
-void
-serial_puts (const char *s)
+static void sa1100_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device sa1100_serial_drv = {
+   .name   = sa1100_serial,
+   .start  = sa1100_serial_init,
+   .stop   = NULL,
+   .setbrg = sa1100_serial_setbrg,
+   .putc   = sa1100_serial_putc,
+   .puts   = sa1100_serial_puts,
+   .getc   = sa1100_serial_getc,
+   .tstc   = sa1100_serial_tstc,
+};
+
+void sa1100_serial_initialize(void)
+{
+   serial_register(sa1100_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return sa1100_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return sa1100_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   sa1100_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   sa1100_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   sa1100_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return sa1100_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return sa1100_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 50/71] serial: arm: Implement CONFIG_SERIAL_MULTI into imx serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into imx serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the imx driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Stefano Babic sba...@denx.de
---
 common/serial.c |2 ++
 drivers/serial/serial_imx.c |   68 ++-
 2 files changed, 63 insertions(+), 7 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 4471262..cb8eacf 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -80,6 +80,7 @@ serial_initfunc(s3c4510b_serial_initialize);
 serial_initfunc(s3c64xx_serial_initialize);
 serial_initfunc(sandbox_serial_initialize);
 serial_initfunc(clps7111_serial_initialize);
+serial_initfunc(imx_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -138,6 +139,7 @@ void serial_initialize(void)
s3c64xx_serial_initialize();
sandbox_serial_initialize();
clps7111_serial_initialize();
+   imx_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_imx.c b/drivers/serial/serial_imx.c
index b9ca748..d37ec29 100644
--- a/drivers/serial/serial_imx.c
+++ b/drivers/serial/serial_imx.c
@@ -19,6 +19,8 @@
 
 #include common.h
 #include asm/arch/imx-regs.h
+#include serial.h
+#include linux/compiler.h
 
 #if defined CONFIG_IMX_SERIAL1
 #define UART_BASE IMX_UART1_BASE
@@ -50,7 +52,7 @@ struct imx_serial {
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void serial_setbrg (void)
+static void imx_serial_setbrg(void)
 {
serial_init();
 }
@@ -62,7 +64,7 @@ extern void imx_gpio_mode(int gpio_mode);
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  *
  */
-int serial_init (void)
+static int imx_serial_init(void)
 {
volatile struct imx_serial* base = (struct imx_serial *)UART_BASE;
unsigned int ufcr_rfdiv;
@@ -163,7 +165,7 @@ int serial_init (void)
  * otherwise. When the function is successful, the character read is
  * written into its argument c.
  */
-int serial_getc (void)
+static int imx_serial_getc(void)
 {
volatile struct imx_serial* base = (struct imx_serial *)UART_BASE;
unsigned char ch;
@@ -185,7 +187,7 @@ int hwflow_onoff(int on)
 /*
  * Output a single byte to the serial port.
  */
-void serial_putc (const char c)
+static void imx_serial_putc(const char c)
 {
volatile struct imx_serial* base = (struct imx_serial *)UART_BASE;
 
@@ -202,7 +204,7 @@ void serial_putc (const char c)
 /*
  * Test whether a character is in the RX buffer
  */
-int serial_tstc (void)
+static int imx_serial_tstc(void)
 {
volatile struct imx_serial* base = (struct imx_serial *)UART_BASE;
 
@@ -212,10 +214,62 @@ int serial_tstc (void)
return 1;
 }
 
-void
-serial_puts (const char *s)
+static void imx_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device imx_serial_drv = {
+   .name   = imx_serial,
+   .start  = imx_serial_init,
+   .stop   = NULL,
+   .setbrg = imx_serial_setbrg,
+   .putc   = imx_serial_putc,
+   .puts   = imx_serial_puts,
+   .getc   = imx_serial_getc,
+   .tstc   = imx_serial_tstc,
+};
+
+void imx_serial_initialize(void)
+{
+   serial_register(imx_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return imx_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return imx_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   imx_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   imx_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   imx_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return imx_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return imx_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 59/71] serial: arm: Implement CONFIG_SERIAL_MULTI into s3c44b0 serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into s3c44b0 serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the s3c44b0 driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c |2 ++
 drivers/serial/serial_s3c44b0.c |   68 ++-
 2 files changed, 62 insertions(+), 8 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 48e6044..1953aaf 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -89,6 +89,7 @@ serial_initfunc(max3100_serial_initialize);
 serial_initfunc(mxc_serial_initialize);
 serial_initfunc(netarm_serial_initialize);
 serial_initfunc(pl01x_serial_initialize);
+serial_initfunc(s3c44b0_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -156,6 +157,7 @@ void serial_initialize(void)
mxc_serial_initialize();
netarm_serial_initialize();
pl01x_serial_initialize();
+   s3c44b0_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_s3c44b0.c b/drivers/serial/serial_s3c44b0.c
index 95d0266..8beba1a 100644
--- a/drivers/serial/serial_s3c44b0.c
+++ b/drivers/serial/serial_s3c44b0.c
@@ -68,7 +68,7 @@ static int serial_flush_output(void)
 }
 
 
-void serial_setbrg (void)
+static void s3c44b0_serial_setbrg(void)
 {
u32 divisor = 0;
 
@@ -156,7 +156,7 @@ void serial_setbrg (void)
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  *
  */
-int serial_init (void)
+static int s3c44b0_serial_init(void)
 {
serial_setbrg ();
 
@@ -167,7 +167,7 @@ int serial_init (void)
 /*
  * Output a single byte to the serial port.
  */
-void serial_putc (const char c)
+static void s3c44b0_serial_putc(const char c)
 {
/* wait for room in the transmit FIFO */
while(!(UTRSTAT0  0x02));
@@ -187,7 +187,7 @@ void serial_putc (const char c)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_tstc (void)
+static int s3c44b0_serial_tstc(void)
 {
return (UTRSTAT0  0x01);
 }
@@ -197,22 +197,74 @@ int serial_tstc (void)
  * otherwise. When the function is succesfull, the character read is
  * written into its argument c.
  */
-int serial_getc (void)
+static int s3c44b0_serial_getc(void)
 {
int rv;
 
for(;;) {
-   rv = serial_tstc();
+   rv = s3c44b0_serial_tstc();
 
if(rv  0)
return URXH0;
}
 }
 
-void
-serial_puts (const char *s)
+static void s3c44b0_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device s3c44b0_serial_drv = {
+   .name   = s3c44b0_serial,
+   .start  = s3c44b0_serial_init,
+   .stop   = NULL,
+   .setbrg = s3c44b0_serial_setbrg,
+   .putc   = s3c44b0_serial_putc,
+   .puts   = s3c44b0_serial_puts,
+   .getc   = s3c44b0_serial_getc,
+   .tstc   = s3c44b0_serial_tstc,
+};
+
+void s3c44b0_serial_initialize(void)
+{
+   serial_register(s3c44b0_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return s3c44b0_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return s3c44b0_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   s3c44b0_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   s3c44b0_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   s3c44b0_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return s3c44b0_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return s3c44b0_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 62/71] serial: spl: Implement empty functions for SPL

2012-09-16 Thread Marek Vasut
Implement empty serial_* functions for SPL without serial
support enabled. This is imperative to haave once serial
multi is enabled unconditionally.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c |   12 
 1 file changed, 12 insertions(+)

diff --git a/common/serial.c b/common/serial.c
index 631af65..cef4ba8 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -27,6 +27,16 @@
 #include post.h
 #include linux/compiler.h
 
+/* Implement prototypes for SPL without serial support */
+#if defined(CONFIG_SPL_BUILD)  !defined(CONFIG_SPL_SERIAL_SUPPORT)
+int serial_init(void) { return 0; }
+void serial_setbrg(void) {}
+int serial_getc(void) { return 0; }
+int serial_tstc(void) { return 0; }
+void serial_putc(const char c) {}
+void serial_puts(const char *s) {}
+#else
+
 DECLARE_GLOBAL_DATA_PTR;
 
 static struct serial_device *serial_devices;
@@ -344,3 +354,5 @@ int uart_post_test(int flags)
return ret;
 }
 #endif
+
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 70/71] serial: Compile common/serial.c by default

2012-09-16 Thread Marek Vasut
Compile common/serial.c by default both into SPL and into non-SPL
builds, since CONFIG_SERIAL_MULTI is now the default state. Also
having common/serial.c in by default now, it's pointless to keep
-DCONFIG_SERIAL_MULTI in CPPFLAGS any longer, so remove it as well.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 common/Makefile |2 +-
 config.mk   |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/Makefile b/common/Makefile
index 8b1ee5d..7f63f09 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -194,7 +194,7 @@ COBJS-y += dlmalloc.o
 COBJS-y += image.o
 COBJS-y += memsize.o
 COBJS-y += stdio.o
-COBJS-$(CONFIG_SERIAL_MULTI) += serial.o
+COBJS-y += serial.o
 
 
 COBJS  := $(sort $(COBJS-y))
diff --git a/config.mk b/config.mk
index 88c72f1..c3822a2 100644
--- a/config.mk
+++ b/config.mk
@@ -193,7 +193,7 @@ OBJCFLAGS += --gap-fill=0xff
 gccincdir := $(shell $(CC) -print-file-name=include)
 
 CPPFLAGS := $(DBGFLAGS) $(OPTFLAGS) $(RELFLAGS)\
-   -D__KERNEL__ -DCONFIG_SERIAL_MULTI
+   -D__KERNEL__
 
 # Enable garbage collection of un-used sections for SPL
 ifeq ($(CONFIG_SPL_BUILD),y)
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 56/71] serial: arm: Implement CONFIG_SERIAL_MULTI into mxc serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into mxc serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the mxc driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Stefano Babic sba...@denx.de
---
 common/serial.c |2 ++
 drivers/serial/serial_mxc.c |   68 ++-
 2 files changed, 63 insertions(+), 7 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index f007d13..566a3cc 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -86,6 +86,7 @@ serial_initfunc(ks8695_serial_initialize);
 serial_initfunc(lh7a40x_serial_initialize);
 serial_initfunc(lpc2292_serial_initialize);
 serial_initfunc(max3100_serial_initialize);
+serial_initfunc(mxc_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -150,6 +151,7 @@ void serial_initialize(void)
lh7a40x_serial_initialize();
lpc2292_serial_initialize();
max3100_serial_initialize();
+   mxc_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_mxc.c b/drivers/serial/serial_mxc.c
index af00b9c..0899e9b 100644
--- a/drivers/serial/serial_mxc.c
+++ b/drivers/serial/serial_mxc.c
@@ -21,6 +21,8 @@
 #include watchdog.h
 #include asm/arch/imx-regs.h
 #include asm/arch/clock.h
+#include serial.h
+#include linux/compiler.h
 
 #define __REG(x) (*((volatile u32 *)(x)))
 
@@ -145,7 +147,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void serial_setbrg (void)
+static void mxc_serial_setbrg(void)
 {
u32 clk = imx_get_uartclk();
 
@@ -158,14 +160,14 @@ void serial_setbrg (void)
 
 }
 
-int serial_getc (void)
+static int mxc_serial_getc(void)
 {
while (__REG(UART_PHYS + UTS)  UTS_RXEMPTY)
WATCHDOG_RESET();
return (__REG(UART_PHYS + URXD)  URXD_RX_DATA); /* mask out status 
from upper word */
 }
 
-void serial_putc (const char c)
+static void mxc_serial_putc(const char c)
 {
__REG(UART_PHYS + UTXD) = c;
 
@@ -181,7 +183,7 @@ void serial_putc (const char c)
 /*
  * Test whether a character is in the RX buffer
  */
-int serial_tstc (void)
+static int mxc_serial_tstc(void)
 {
/* If receive fifo is empty, return false */
if (__REG(UART_PHYS + UTS)  UTS_RXEMPTY)
@@ -189,8 +191,7 @@ int serial_tstc (void)
return 1;
 }
 
-void
-serial_puts (const char *s)
+static void mxc_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
@@ -202,7 +203,7 @@ serial_puts (const char *s)
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  *
  */
-int serial_init (void)
+static int mxc_serial_init(void)
 {
__REG(UART_PHYS + UCR1) = 0x0;
__REG(UART_PHYS + UCR2) = 0x0;
@@ -224,3 +225,56 @@ int serial_init (void)
 
return 0;
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device mxc_serial_drv = {
+   .name   = mxc_serial,
+   .start  = mxc_serial_init,
+   .stop   = NULL,
+   .setbrg = mxc_serial_setbrg,
+   .putc   = mxc_serial_putc,
+   .puts   = mxc_serial_puts,
+   .getc   = mxc_serial_getc,
+   .tstc   = mxc_serial_tstc,
+};
+
+void mxc_serial_initialize(void)
+{
+   serial_register(mxc_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return mxc_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return mxc_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   mxc_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   mxc_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   mxc_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return mxc_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return mxc_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 66/71] serial: Unconditionally enable CONFIG_SERIAL_MULTI

2012-09-16 Thread Marek Vasut
Enable CONFIG_SERIAL_MULTI for all builds of U-Boot. That includes
both SPL builds and non-SPL builds, everything. To avoid poluting
this patch with removal of ifdef-endif constructions containing
CONFIG_SERIAL_MULTI, the CONFIG_SERIAL_MULTI is temporarily added
into CPPFLAGS in config.mk . This will be again removed in following
patch.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/Makefile |2 +-
 config.mk   |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/Makefile b/common/Makefile
index 57da76f..8b1ee5d 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -32,7 +32,6 @@ COBJS-y += command.o
 COBJS-y += exports.o
 COBJS-$(CONFIG_SYS_HUSH_PARSER) += hush.o
 COBJS-y += s_record.o
-COBJS-$(CONFIG_SERIAL_MULTI) += serial.o
 COBJS-y += xyzModem.o
 
 # core command
@@ -195,6 +194,7 @@ COBJS-y += dlmalloc.o
 COBJS-y += image.o
 COBJS-y += memsize.o
 COBJS-y += stdio.o
+COBJS-$(CONFIG_SERIAL_MULTI) += serial.o
 
 
 COBJS  := $(sort $(COBJS-y))
diff --git a/config.mk b/config.mk
index c3822a2..88c72f1 100644
--- a/config.mk
+++ b/config.mk
@@ -193,7 +193,7 @@ OBJCFLAGS += --gap-fill=0xff
 gccincdir := $(shell $(CC) -print-file-name=include)
 
 CPPFLAGS := $(DBGFLAGS) $(OPTFLAGS) $(RELFLAGS)\
-   -D__KERNEL__
+   -D__KERNEL__ -DCONFIG_SERIAL_MULTI
 
 # Enable garbage collection of un-used sections for SPL
 ifeq ($(CONFIG_SPL_BUILD),y)
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 57/71] serial: arm: Implement CONFIG_SERIAL_MULTI into netarm serial driver

2012-09-16 Thread Marek Vasut
Implement support for CONFIG_SERIAL_MULTI into netarm serial driver.
This driver was so far only usable directly, but this patch also adds
support for the multi method. This allows using more than one serial
driver alongside the netarm driver. Also, add a weak implementation
of default_serial_console() returning this driver.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Stefano Babic sba...@denx.de
---
 common/serial.c|2 ++
 drivers/serial/serial_netarm.c |   65 
 2 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index 566a3cc..c033cf0 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -87,6 +87,7 @@ serial_initfunc(lh7a40x_serial_initialize);
 serial_initfunc(lpc2292_serial_initialize);
 serial_initfunc(max3100_serial_initialize);
 serial_initfunc(mxc_serial_initialize);
+serial_initfunc(netarm_serial_initialize);
 
 void serial_register(struct serial_device *dev)
 {
@@ -152,6 +153,7 @@ void serial_initialize(void)
lpc2292_serial_initialize();
max3100_serial_initialize();
mxc_serial_initialize();
+   netarm_serial_initialize();
 
serial_assign(default_serial_console()-name);
 }
diff --git a/drivers/serial/serial_netarm.c b/drivers/serial/serial_netarm.c
index d04790d..ff6612d 100644
--- a/drivers/serial/serial_netarm.c
+++ b/drivers/serial/serial_netarm.c
@@ -59,7 +59,7 @@ extern void _netarm_led_FAIL1(void);
 /*
  * Setup both serial i/f with given baudrate
  */
-void serial_setbrg (void)
+static void netarm_serial_setbrg(void)
 {
/* set 0 ... make sure pins are configured for serial */
 #if !defined(CONFIG_NETARM_NS7520)
@@ -108,7 +108,7 @@ void serial_setbrg (void)
  * Initialise the serial port with the given baudrate. The settings
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
  */
-int serial_init (void)
+static int netarm_serial_init(void)
 {
serial_setbrg ();
return 0;
@@ -118,7 +118,7 @@ int serial_init (void)
 /*
  * Output a single byte to the serial port.
  */
-void serial_putc (const char c)
+static void netarm_serial_putc(const char c)
 {
volatile unsigned char *fifo;
 
@@ -135,7 +135,7 @@ void serial_putc (const char c)
  * Test of a single byte from the serial port. Returns 1 on success, 0
  * otherwise.
  */
-int serial_tstc(void)
+static int netarm_serial_tstc(void)
 {
return serial_reg_ch1-status_a  NETARM_SER_STATA_RX_RDY;
 }
@@ -144,7 +144,7 @@ int serial_tstc(void)
  * Read a single byte from the serial port. Returns 1 on success, 0
  * otherwise.
  */
-int serial_getc (void)
+static int netarm_serial_getc(void)
 {
unsigned int ch_uint;
volatile unsigned int *fifo;
@@ -182,9 +182,62 @@ int serial_getc (void)
return ch_uint  0xff;
 }
 
-void serial_puts (const char *s)
+static void netarm_serial_puts(const char *s)
 {
while (*s) {
serial_putc (*s++);
}
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device netarm_serial_drv = {
+   .name   = netarm_serial,
+   .start  = netarm_serial_init,
+   .stop   = NULL,
+   .setbrg = netarm_serial_setbrg,
+   .putc   = netarm_serial_putc,
+   .puts   = netarm_serial_puts,
+   .getc   = netarm_serial_getc,
+   .tstc   = netarm_serial_tstc,
+};
+
+void netarm_serial_initialize(void)
+{
+   serial_register(netarm_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+   return netarm_serial_drv;
+}
+#else
+int serial_init(void)
+{
+   return netarm_serial_init();
+}
+
+void serial_setbrg(void)
+{
+   netarm_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+   netarm_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+   netarm_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+   return netarm_serial_getc();
+}
+
+int serial_tstc(void)
+{
+   return netarm_serial_tstc();
+}
+#endif
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 65/71] serial: Use puts() and hang() instead of panic() in SPL

2012-09-16 Thread Marek Vasut
If case the get_current() call fails before relocation, the U-Boot
must try to print an error message, fail and either reset or halt.
Such error is critical enough to halt the system, as it means the
system is in very bad state.

This is now also used in SPL, since CONFIG_SERIAL_MULTI is enabled
unconditionally. To avoid compiling whole vsprintf.c into SPL, use
puts() to print error message and hang() to stop the system in case
of SPL build.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
---
 common/serial.c |   10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/common/serial.c b/common/serial.c
index cef4ba8..8e0d8a1 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -230,8 +230,14 @@ static struct serial_device *get_current(void)
dev = default_serial_console();
 
/* We must have a console device */
-   if (!dev)
-   panic(Cannot find console);
+   if (!dev) {
+#ifdef CONFIG_SPL_BUILD
+   puts(Cannot find console\n);
+   hang();
+#else
+   panic(Cannot find console\n);
+#endif
+   }
} else
dev = serial_current;
return dev;
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 67/71] serial: Remove CONFIG_SERIAL_MULTI from config files

2012-09-16 Thread Marek Vasut
Remove any notion of CONFIG_SERIAL_MULTI from board config files.
Since CONFIG_SERIAL_MULTI is now enabled by default, it is useless
to specify this config option in the board config files. Therefore
remove it.

Signed-off-by: Marek Vasut ma...@denx.de
Cc: Marek Vasut marek.va...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Anatolij Gustschin ag...@denx.de
Cc: Stefan Roese s...@denx.de
---
 include/configs/DU440.h   |1 -
 include/configs/KAREF.h   |1 -
 include/configs/METROBOX.h|1 -
 include/configs/MPC8569MDS.h  |1 -
 include/configs/P1010RDB.h|1 -
 include/configs/P1_P2_RDB.h   |1 -
 include/configs/P2020COME.h   |1 -
 include/configs/PMC440.h  |1 -
 include/configs/TB5200.h  |1 -
 include/configs/amcc-common.h |1 -
 include/configs/bfin_adi_common.h |1 -
 include/configs/coreboot.h|1 -
 include/configs/eNET.h|1 -
 include/configs/harmony.h |1 -
 include/configs/jadecpu.h |1 -
 include/configs/korat.h   |1 -
 include/configs/lwmon.h   |1 -
 include/configs/lwmon5.h  |1 -
 include/configs/mcc200.h  |5 -
 include/configs/medcom.h  |1 -
 include/configs/omap3_zoom2.h |1 -
 include/configs/origen.h  |1 -
 include/configs/paz00.h   |1 -
 include/configs/pcs440ep.h|1 -
 include/configs/pdm360ng.h|3 ---
 include/configs/plutux.h  |1 -
 include/configs/quad100hd.h   |1 -
 include/configs/s5p_goni.h|1 -
 include/configs/s5pc210_universal.h   |1 -
 include/configs/sc3.h |1 -
 include/configs/seaboard.h|1 -
 include/configs/smdk5250.h|1 -
 include/configs/smdkc100.h|1 -
 include/configs/smdkv310.h|1 -
 include/configs/tec.h |1 -
 include/configs/tegra20-common-post.h |5 -
 include/configs/trats.h   |1 -
 include/configs/trimslice.h   |1 -
 include/configs/trizepsiv.h   |1 -
 include/configs/ventana.h |1 -
 include/configs/whistler.h|1 -
 include/configs/zeus.h|1 -
 42 files changed, 52 deletions(-)

diff --git a/include/configs/DU440.h b/include/configs/DU440.h
index 8bd7940..bbe2713 100644
--- a/include/configs/DU440.h
+++ b/include/configs/DU440.h
@@ -93,7 +93,6 @@
 #define CONFIG_SYS_NS16550_CLK get_serial_clock()
 #undef CONFIG_SYS_EXT_SERIAL_CLOCK
 #define CONFIG_BAUDRATE115200
-#define CONFIG_SERIAL_MULTI 1
 
 #define CONFIG_SYS_BAUDRATE_TABLE  
\
{300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
diff --git a/include/configs/KAREF.h b/include/configs/KAREF.h
index 3daf480..546e28b 100644
--- a/include/configs/KAREF.h
+++ b/include/configs/KAREF.h
@@ -96,7 +96,6 @@
 #define CONFIG_SYS_NS16550_SERIAL
 #define CONFIG_SYS_NS16550_REG_SIZE1
 #define CONFIG_SYS_NS16550_CLK get_serial_clock()
-#define CONFIG_SERIAL_MULTI   1
 #define CONFIG_BAUDRATE  9600
 
 #define CONFIG_SYS_BAUDRATE_TABLE  \
diff --git a/include/configs/METROBOX.h b/include/configs/METROBOX.h
index 34376bc..286f869 100644
--- a/include/configs/METROBOX.h
+++ b/include/configs/METROBOX.h
@@ -158,7 +158,6 @@
 #define CONFIG_SYS_NS16550_SERIAL
 #define CONFIG_SYS_NS16550_REG_SIZE1
 #define CONFIG_SYS_NS16550_CLK get_serial_clock()
-#define CONFIG_SERIAL_MULTI   1
 #define CONFIG_BAUDRATE  9600
 
 #define CONFIG_SYS_BAUDRATE_TABLE  \
diff --git a/include/configs/MPC8569MDS.h b/include/configs/MPC8569MDS.h
index d973364..acd3276 100644
--- a/include/configs/MPC8569MDS.h
+++ b/include/configs/MPC8569MDS.h
@@ -274,7 +274,6 @@ extern unsigned long get_clock_freq(void);
 
 /* Serial Port */
 #define CONFIG_CONS_INDEX  1
-#define CONFIG_SERIAL_MULTI1
 #define CONFIG_SYS_NS16550
 #define CONFIG_SYS_NS16550_SERIAL
 #define CONFIG_SYS_NS16550_REG_SIZE1
diff --git a/include/configs/P1010RDB.h b/include/configs/P1010RDB.h
index 67dba9f..540f32d 100644
--- a/include/configs/P1010RDB.h
+++ b/include/configs/P1010RDB.h
@@ -453,7 +453,6 @@ extern unsigned long get_sdram_size(void);
 #define CONFIG_NS16550_MIN_FUNCTIONS
 #endif
 
-#define CONFIG_SERIAL_MULTI/* Enable both serial ports */
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV   /* determine from environment */
 
 #define CONFIG_SYS_BAUDRATE_TABLE  \
diff --git a/include/configs/P1_P2_RDB.h b/include/configs/P1_P2_RDB.h
index ab88166..9db0e87 100644
--- a/include/configs/P1_P2_RDB.h
+++ b/include/configs/P1_P2_RDB.h
@@ -343,7 +343,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 #define 

  1   2   >