[U-Boot] [PATCH] arm: remove unneeded symbol offsets and _TEXT_BASE

2013-10-12 Thread Albert ARIBAUD
Remove the last uses of symbol offsets in ARM U-Boot.
Remove some needless uses of _TEXT_BASE.
Remove all _TEXT_BASE definitions.

Signed-off-by: Albert ARIBAUD 
---
NOTE: this is not intended for inclusion in 2013.10. :)

_TEXT_BASE was only used by ARM to allow resolution of
symbol offsets, themselves only needed due to absolute
relocations.

In some places, _TEXT_BASE was locally defined only
to provide a literal for CONFIG_SYS_TEXT_BASE when the
latter could have been used directly.

Sometimes even, _TEXT_BASE was defined but unused.

Since all relocations in ARM are relative, offsets,
_TEXT_BASE and CONFIG_SYS_SYM_OFFSETS can be completely
removed, and their uses can be replaced with adequate
use of compiler-generated symbols from sections.c file.

 README  |  6 --
 arch/arm/cpu/arm1136/start.S| 27 ---
 arch/arm/cpu/arm1176/start.S| 27 ---
 arch/arm/cpu/arm720t/start.S| 26 --
 arch/arm/cpu/arm920t/start.S| 26 --
 arch/arm/cpu/arm926ejs/at91/lowlevel_init.S | 14 +-
 arch/arm/cpu/arm926ejs/mxs/start.S  | 27 ---
 arch/arm/cpu/arm926ejs/start.S  | 27 ---
 arch/arm/cpu/arm946es/start.S   | 26 --
 arch/arm/cpu/arm_intcm/start.S  | 26 --
 arch/arm/cpu/armv7/omap3/lowlevel_init.S|  3 ---
 arch/arm/cpu/armv7/start.S  | 23 ---
 arch/arm/cpu/ixp/start.S| 26 --
 arch/arm/cpu/pxa/start.S| 27 ---
 arch/arm/cpu/sa1100/start.S | 26 --
 arch/arm/lib/board.c| 12 ++--
 board/armltd/integrator/lowlevel_init.S |  2 +-
 board/cm4008/flash.c|  2 +-
 board/cm41xx/flash.c|  2 +-
 board/mpl/vcma9/lowlevel_init.S |  5 +
 board/mx1ads/lowlevel_init.S|  4 
 board/samsung/goni/lowlevel_init.S  |  3 ---
 board/samsung/smdk2410/lowlevel_init.S  |  5 +
 board/samsung/smdk5250/lowlevel_init.S  |  5 +
 board/samsung/smdkc100/lowlevel_init.S  |  3 ---
 board/ti/omap5912osk/lowlevel_init.S|  4 
 board/ti/omap730p2/lowlevel_init.S  |  3 ---
 common/board_f.c| 18 +++---
 common/board_r.c|  4 ++--
 include/asm-generic/sections.h  | 26 +++---
 30 files changed, 29 insertions(+), 406 deletions(-)

diff --git a/README b/README
index 0bb1ad5..1f9e16f 100644
--- a/README
+++ b/README
@@ -3522,12 +3522,6 @@ Configuration Settings:
its config.mk file). If you find problems enabling this option on
your board please report the problem and send patches!
 
-- CONFIG_SYS_SYM_OFFSETS
-   This is set by architectures that use offsets for link symbols
-   instead of absolute values. So bss_start is obtained using an
-   offset _bss_start_ofs from CONFIG_SYS_TEXT_BASE, rather than
-   directly. You should not need to touch this setting.
-
 - CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC (OMAP only)
This is set by OMAP boards for the max time that reset should
be asserted. See doc/README.omap-reset-time for details on how
diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S
index bd1e067..d15124b 100644
--- a/arch/arm/cpu/arm1136/start.S
+++ b/arch/arm/cpu/arm1136/start.S
@@ -70,32 +70,6 @@ _end_vect:
  *
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-   .word   CONFIG_SPL_TEXT_BASE
-#else
-   .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-   .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-   .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-   .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
@@ -295,7 +269,6 @@ cpu_init_crit:
 #ifdef CONFIG_SPL_BUILD
.align  5
 do_hang:
-   ldr sp, _TEXT_BASE  /* use 32 words about stack */
bl  hang/* hang and never return */
 #else  /* !CONFIG_SPL_BUILD */
.align  5
diff --git a/arch/arm/cpu/arm1176/start.S b/arch/arm/cpu/arm1176/start.S
index ffd7dd0..ce62011 100644
--- a/arch/arm/cpu/arm1176/start.S
+++ b/arch/arm/cpu/arm1176/start.S
@@ -77

Re: [U-Boot] [Patch v3] cmd/gpt: Support gpt command for all devices

2013-10-12 Thread Egbert Eich
On Fri, Oct 11, 2013 at 09:13:22AM +0200, Piotr Wilczek wrote:
> Dear Egbert Eich,
> 
> > -Original Message-
> > From: Egbert Eich [mailto:egbert.e...@gmail.com]
> > Sent: Friday, October 04, 2013 6:53 PM
> > To: u-boot@lists.denx.de
> > Cc: Piotr Wilczek; Tom Rini; Egbert Eich; Egbert Eich
> > Subject: [Patch v3] cmd/gpt: Support gpt command for all devices
> > 
> > From: Egbert Eich 
> > 
> > The gpt command was only implemented for mmc devices. There is no
> > reason why this command should not be generalized and be applied all
> > other storage device classes.
> > This change both simplifies the implementation and eliminates a build
> > failure for systems that don't support mmcs.
> > 
> > Signed-off-by: Egbert Eich 
> > ---
> > Changes for v2:
> >- Coding style cleanup.
> > Changes for v3:
> >- Removed wrong '&'
> >- Removed unused variable
> >- Fixed argument checking
> >Spotted by Piotr Wilczek 
> > 
> >  common/cmd_gpt.c | 45 +++--
> >  1 file changed, 19 insertions(+), 26 deletions(-)
> > 
> > diff --git a/common/cmd_gpt.c b/common/cmd_gpt.c index a46f5cc..17b1180
> > 100644
> > --- a/common/cmd_gpt.c
> > +++ b/common/cmd_gpt.c

[..]

> > 
> > @@ -287,27 +279,28 @@ static int do_gpt(cmd_tbl_t *cmdtp, int flag, int

[..]

> > -   /* device: 'mmc' */
> > -   if (strcmp(argv[2], "mmc") == 0) {
> > -   /* check if 'dev' is a number */
> > -   for (pstr = argv[3]; *pstr != '\0'; pstr++)
> > -   if (!isdigit(*pstr)) {
> > -   printf("'%s' is not a number\n",
> > -   argv[3]);
> > -   return CMD_RET_USAGE;
> > -   }
> > -   dev = (int)simple_strtoul(argv[3], NULL, 10);
> > -   /* write to mmc */
> > -   if (gpt_mmc_default(dev, argv[4]))
> > -   return CMD_RET_FAILURE;
> > +   char *ep;
> > +   block_dev_desc_t *blk_dev_desc;
> This probably should be at the beginning of the function

I personally prefer to keep symbols as local as possible (ie. declare them
in the block they are used in if they are just used within a single block) 
for the following rasons:
1. It makes the code more readable ie. the definition is closeby to
   the location where it is used and doesn't require scrolling to 
   the beginning of a function and the scope of the variable is is 
   much more obvious.
2. The compiler can optimize much better as it knows that a variable 
   can be discarded at the end of the block also by reusing stack 
   slots stack sapce can be used much more efficiently by the compiler.

I agree that in the case at hand the second argument is not too
relevant, it is more a coding style issue. If there is a coding
style requirement to have those definitions at the beginning of
the function I will create a new patch.


[..]

> > +   blk_dev_desc = get_dev(argv[2], dev);
> > +   if (!blk_dev_desc) {
> > +   printf("%s: %s dev %d NOT available\n",
> > +  __func__, argv[2], dev);
> I think it is not necessary since the mmc subsystem prints 'MMC Device not
> found'.

I've done a quick look over the code - of all subsystems MMC seems to be 
the only one which prints a message when its get_dev() method is called 
but no device is found. Therefore I'd prefer to leave this there.

> 
> Except minor comments this patch looks good to me.
> I tested it on mmc device (Trats2) and works well.

Ok, thanks!

> 
> Tested-by: Piotr Wilczek 
> 

Thanks a lot for testing!

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


Re: [U-Boot] [RFC PATCH] usb: dfu: make nand upload working

2013-10-12 Thread Lukasz Majewski
On Sat, 12 Oct 2013 15:47:14 +0800
Bo Shen  wrote:

> If won't pass value to dfu->r_left, it always 0, make no transfer,
> the dfu-util on host side report failed. So, before starting transfer,
> pass the value, then nand uploading can work.
> 
> Signed-off-by: Bo Shen 
> 
> ---
>  drivers/dfu/dfu.c |1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
> index 56b21c7..3c3ad1b 100644
> --- a/drivers/dfu/dfu.c
> +++ b/drivers/dfu/dfu.c
> @@ -274,6 +274,7 @@ int dfu_read(struct dfu_entity *dfu, void *buf,
> int size, int blk_seq_num) if (dfu->i_buf_start == NULL)
>   return -ENOMEM;
>  
> + dfu->r_left = dfu->data.nand.size;

Please do not add nand related code to "generic" DFU code. This can
damage DFU operation with other memories (like eMMC).

Such code shall be added to dfu_nand.c file.

>   ret = dfu->read_medium(dfu, 0, dfu->i_buf_start,
> &dfu->r_left); if (ret != 0) {
>   debug("%s: failed to get r_left\n",
> __func__);

Best regards,

Lukasz Majewski


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


Re: [U-Boot] How/Where does "_start" get assigned a value ?

2013-10-12 Thread Albert ARIBAUD
Hi Djoker,

On Wed, 9 Oct 2013 16:02:43 -0700, Djoker 
wrote:

> On Wed, Oct 9, 2013 at 12:54 PM, Arvid Brodin  wrote:
> > On 2013-10-09 18:07, djoker wrote:
> >> Hi Everyone,
> >>
> >> I have a armv7 board and am looking at the "_start" symbol address, using
> >> the following command:
> >> *nm u-boot | grep -w _start*
> >>
> >> It returned the following:
> >> *6720 T _start*
> >>
> >> I couldn't help notice that the the _start value is very "close" in vlaue 
> >> to
> >> the value of CONFIG_SYS_TEXT_BASE defined in my board file:
> >> *#define CONFIG_SYS_TEXT_BASE 0x6704*
> >>
> >> But, I have searched through the source code, but not found where _start
> >> gets assigned a value.. Could someone please help me understand this ?
> >
> > This symbol is declared in arch/<...>/start.S, as the entry point for the
> > u-boot code, if I understand things correctly.
> >
> 
> Arvid, I know that the symbol is declared under that file.
> But, how is it getting assigned a value equal to or greater than
> CONFIG_SYS_TEXT_BASE ?
> Basically, I am seeing a similar issue as below:
> 
> u-boot.10912.n7.nabble.com/U-Boot-ARM-gap-between-start-and-CONFIG-SYS-TEXT-BASE-td4134.html#none
> 
> There really was no conclusion as to why the padding of 0's happened ?

That's a 2010 issue and it contains hardly enough information to know
what happened, considering the person who asked had modified the source
code to match unusual constraints, and could just as well have caused
the padding by his own changes.

Regarding your question, it is the linker which is responsible for
assigning addresses to symbols, and it does so based on a linker script
(.lds file) and on the object files provided to it. It will align
symbols if instructed to. In most, if not all, ARM cases, _start will
be equal to CONFIG_SYS_TEXT_BASE because the .lds file specifies that
the .text section of start.o be the first section output, and _start is
the first label in that section.

HTH.

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


Re: [U-Boot] [PATCH v5 2/8] ARM: add secure monitor handler to switchto non-secure state

2013-10-12 Thread Albert ARIBAUD
Hi tiger...@viatech.com.cn,

On Sat, 12 Oct 2013 17:27:30 +0800,  wrote:

> Hi, experts:
> I found Linaro engineers had pushed some secure monitor related code.
> But not find these code in 2013.10.rc4 .
> So, how to get these latest code?

As always: by submitting them, or having someone submit them, to the
mainline U-Boot project.

> Best wishes,

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


Re: [U-Boot] [Patch v1 1/1] jffs2: change U_BOOT_CMD ls to fsls

2013-10-12 Thread Wolfgang Denk
Dear Suriyan Ramasami,

In message <1381366918-17590-1-git-send-email-suriya...@gmail.com> you wrote:
> multiple definitions of `_u_boot_list_2_cmd_2_ls' if CONFIG_CMD_JFFS2
> and CONFIG_CMD_FS_GENERIC are defined.
> 
> Signed-off-by: Suriyan Ramasami 
> ---
>  common/cmd_jffs2.c |2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/common/cmd_jffs2.c b/common/cmd_jffs2.c
> index bce0983..f38455f 100644
> --- a/common/cmd_jffs2.c
> +++ b/common/cmd_jffs2.c
> @@ -606,7 +606,7 @@ U_BOOT_CMD(
>   "  with offset 'off'"
>  );
>  U_BOOT_CMD(
> - ls, 2,  1,  do_jffs2_ls,
> + fsls,   2,  1,  do_jffs2_ls,

This makes no sense to me.  Either we mimick Unix style, then the
command name shouldbe "ls' (where else but in a file system could you
LiSt files?); or we implement file system specific commands, than the
name of the file system should be recognizable.

I think your problem should be fixed differently (such that "ls" also
works with JFFS2).


Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
backups: always in season, never out of style.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] Net: FEC: Fix huge memory leak

2013-10-12 Thread Marek Vasut
The fec_halt() never free'd both RX and TX DMA descriptors that
were allocated in fec_init(), nor did it free the RX buffers.
Rework the FEC driver so that these descriptors and buffers are
allocated only once in fec_probe().

Signed-off-by: Marek Vasut 
Cc: Fabio Estevam 
Cc: Stefano Babic 
---
 drivers/net/fec_mxc.c | 177 --
 1 file changed, 99 insertions(+), 78 deletions(-)

diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index 107cd6e..3b2b995 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -270,49 +270,34 @@ static int fec_tx_task_disable(struct fec_priv *fec)
  * @param[in] dsize desired size of each receive buffer
  * @return 0 on success
  *
- * For this task we need additional memory for the data buffers. And each
- * data buffer requires some alignment. Thy must be aligned to a specific
- * boundary each.
+ * Init all RX descriptors to default values.
  */
-static int fec_rbd_init(struct fec_priv *fec, int count, int dsize)
+static void fec_rbd_init(struct fec_priv *fec, int count, int dsize)
 {
uint32_t size;
+   uint8_t *data;
int i;
 
/*
-* Allocate memory for the buffers. This allocation respects the
-* alignment
+* Reload the RX descriptors with default values and wipe
+* the RX buffers.
 */
size = roundup(dsize, ARCH_DMA_MINALIGN);
for (i = 0; i < count; i++) {
-   uint32_t data_ptr = readl(&fec->rbd_base[i].data_pointer);
-   if (data_ptr == 0) {
-   uint8_t *data = memalign(ARCH_DMA_MINALIGN,
-size);
-   if (!data) {
-   printf("%s: error allocating rxbuf %d\n",
-  __func__, i);
-   goto err;
-   }
-   writel((uint32_t)data, &fec->rbd_base[i].data_pointer);
-   } /* needs allocation */
-   writew(FEC_RBD_EMPTY, &fec->rbd_base[i].status);
-   writew(0, &fec->rbd_base[i].data_length);
+   data = (uint8_t *)fec->rbd_base[i].data_pointer;
+   memset(data, 0, dsize);
+   flush_dcache_range((uint32_t)data, (uint32_t)data + size);
+
+   fec->rbd_base[i].status = FEC_RBD_EMPTY;
+   fec->rbd_base[i].data_length = 0;
}
 
/* Mark the last RBD to close the ring. */
-   writew(FEC_RBD_WRAP | FEC_RBD_EMPTY, &fec->rbd_base[i - 1].status);
+   fec->rbd_base[i - 1].status = FEC_RBD_WRAP | FEC_RBD_EMPTY;
fec->rbd_index = 0;
 
-   return 0;
-
-err:
-   for (; i >= 0; i--) {
-   uint32_t data_ptr = readl(&fec->rbd_base[i].data_pointer);
-   free((void *)data_ptr);
-   }
-
-   return -ENOMEM;
+   flush_dcache_range((unsigned)fec->rbd_base,
+  (unsigned)fec->rbd_base + size);
 }
 
 /**
@@ -332,10 +317,12 @@ static void fec_tbd_init(struct fec_priv *fec)
unsigned addr = (unsigned)fec->tbd_base;
unsigned size = roundup(2 * sizeof(struct fec_bd),
ARCH_DMA_MINALIGN);
-   writew(0x, &fec->tbd_base[0].status);
-   writew(FEC_TBD_WRAP, &fec->tbd_base[1].status);
+
+   memset(fec->tbd_base, 0, size);
+   fec->tbd_base[0].status = 0;
+   fec->tbd_base[1].status = FEC_TBD_WRAP;
fec->tbd_index = 0;
-   flush_dcache_range(addr, addr+size);
+   flush_dcache_range(addr, addr + size);
 }
 
 /**
@@ -527,51 +514,18 @@ static int fec_init(struct eth_device *dev, bd_t* bd)
 {
struct fec_priv *fec = (struct fec_priv *)dev->priv;
uint32_t mib_ptr = (uint32_t)&fec->eth->rmon_t_drop;
-   uint32_t size;
-   int i, ret;
+   int i;
 
/* Initialize MAC address */
fec_set_hwaddr(dev);
 
/*
-* Allocate transmit descriptors, there are two in total. This
-* allocation respects cache alignment.
+* Setup transmit descriptors, there are two in total.
 */
-   if (!fec->tbd_base) {
-   size = roundup(2 * sizeof(struct fec_bd),
-   ARCH_DMA_MINALIGN);
-   fec->tbd_base = memalign(ARCH_DMA_MINALIGN, size);
-   if (!fec->tbd_base) {
-   ret = -ENOMEM;
-   goto err1;
-   }
-   memset(fec->tbd_base, 0, size);
-   fec_tbd_init(fec);
-   }
+   fec_tbd_init(fec);
 
-   /*
-* Allocate receive descriptors. This allocation respects cache
-* alignment.
-*/
-   if (!fec->rbd_base) {
-   size = roundup(FEC_RBD_NUM * sizeof(struct fec_bd),
-   ARCH_DMA_MINALIGN);
-   fec->rbd_base = memalign(ARCH_DMA_MINALIGN, size);
-   if (!fec->rbd_base) {
-   

[U-Boot] [PATCH 2/3] mx28evk: Add 'nandboot' environment command

2013-10-12 Thread Otavio Salvador
This reads the kernel, ftd and boot into ubifs filesystem. While on
that, the SD firmware filename definition has been moved next to the
other SD related commands.

Signed-off-by: Otavio Salvador 
---
 include/configs/mx28evk.h | 18 +-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/include/configs/mx28evk.h b/include/configs/mx28evk.h
index 27b1a41..e40df09 100644
--- a/include/configs/mx28evk.h
+++ b/include/configs/mx28evk.h
@@ -163,7 +163,6 @@
 #define CONFIG_EXTRA_ENV_SETTINGS \
"update_nand_full_filename=u-boot.nand\0" \
"update_nand_firmware_filename=u-boot.sb\0" \
-   "update_sd_firmware_filename=u-boot.sd\0" \
"update_nand_firmware_maxsz=0x10\0" \
"update_nand_stride=0x40\0" /* MX28 datasheet ch. 12.12 */ \
"update_nand_count=0x4\0"   /* MX28 datasheet ch. 12.12 */ \
@@ -191,6 +190,23 @@
"nand write ${loadaddr} ${fcb_sz} ${filesize} ; " \
"nand write ${loadaddr} ${fw_off} ${filesize} ; " \
"fi\0" \
+   "nandargs=setenv bootargs console=${console_mainline},${baudrate} " \
+   "rootfstype=ubifs ubi.mtd=6 root=ubi0_0 ${mtdparts}\0" \
+   "nandboot=" /* Boot from NAND */ \
+   "mtdparts default; " \
+   "run nandargs; " \
+   "nand read ${loadaddr} kernel 0x0040; " \
+   "if test ${boot_fdt} = yes; then " \
+   "nand read ${fdt_addr} fdt 0x0008; " \
+   "bootm ${loadaddr} - ${fdt_addr}; " \
+   "else " \
+   "if test ${boot_fdt} = no; then " \
+   "bootm; " \
+   "else " \
+   "echo \"ERROR: Set boot_fdt to yes or no.\"; " \
+   "fi; " \
+   "fi\0" \
+   "update_sd_firmware_filename=u-boot.sd\0" \
"update_sd_firmware="   /* Update the SD firmware partition */ \
"if mmc rescan ; then " \
"if tftp ${update_sd_firmware_filename} ; then " \
-- 
1.8.4.rc3

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


[U-Boot] [PATCH 1/3] mx28evk: Use 512k for fdt partition to align it

2013-10-12 Thread Otavio Salvador
Using 512k for fdt partition allow it to be aligned with the other
small partitions and 512k erase block size.

Signed-off-by: Otavio Salvador 
---
 include/configs/mx28evk.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/configs/mx28evk.h b/include/configs/mx28evk.h
index 07f88ca..27b1a41 100644
--- a/include/configs/mx28evk.h
+++ b/include/configs/mx28evk.h
@@ -97,7 +97,7 @@
"512k(environment),"\
"512k(redundant-environment),"  \
"4m(kernel),"   \
-   "128k(fdt),"\
+   "512k(fdt),"\
"8m(ramdisk),"  \
"-(filesystem)"
 #endif
-- 
1.8.4.rc3

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


[U-Boot] [PATCH 3/3] mx28evk: Extend environment to easy write of NAND system

2013-10-12 Thread Otavio Salvador
This adds following new targets:

 - update_nand_kernel
 - update_nand_fdt
 - update_nand_filesystem

and to avoid confusion, the 'update_nand_full' has been renamed to
'update_nand_firmware_full'.

Signed-off-by: Otavio Salvador 
---
 include/configs/mx28evk.h | 35 ++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/include/configs/mx28evk.h b/include/configs/mx28evk.h
index e40df09..5e43226 100644
--- a/include/configs/mx28evk.h
+++ b/include/configs/mx28evk.h
@@ -161,6 +161,7 @@
 
 /* Extra Environment */
 #define CONFIG_EXTRA_ENV_SETTINGS \
+   "ubifs_file=filesystem.ubifs\0" \
"update_nand_full_filename=u-boot.nand\0" \
"update_nand_firmware_filename=u-boot.sb\0" \
"update_nand_firmware_maxsz=0x10\0" \
@@ -171,7 +172,7 @@
"nand info ; " \
"setexpr fcb_sz ${update_nand_stride} * ${update_nand_count};" \
"setexpr update_nand_fcb ${fcb_sz} * ${nand_writesize}\0" \
-   "update_nand_full=" /* Update FCB, DBBT and FW */ \
+   "update_nand_firmware_full=" /* Update FCB, DBBT and FW */ \
"if tftp ${update_nand_full_filename} ; then " \
"run update_nand_get_fcb_size ; " \
"nand scrub -y 0x0 ${filesize} ; " \
@@ -190,6 +191,38 @@
"nand write ${loadaddr} ${fcb_sz} ${filesize} ; " \
"nand write ${loadaddr} ${fw_off} ${filesize} ; " \
"fi\0" \
+   "update_nand_kernel="   /* Update kernel */ \
+   "mtdparts default; " \
+   "nand erase.part kernel; " \
+   "if test ${ip_dyn} = yes; then " \
+   "setenv get_cmd dhcp; " \
+   "else " \
+   "setenv get_cmd tftp; " \
+   "fi; " \
+   "${get_cmd} ${uimage}; " \
+   "nand write ${loadaddr} kernel ${filesize}\0" \
+   "update_nand_fdt="  /* Update fdt */ \
+   "mtdparts default; " \
+   "nand erase.part fdt; " \
+   "if test ${ip_dyn} = yes; then " \
+   "setenv get_cmd dhcp; " \
+   "else " \
+   "setenv get_cmd tftp; " \
+   "fi; " \
+   "${get_cmd} ${fdt_file}; " \
+   "nand write ${loadaddr} fdt ${filesize}\0" \
+   "update_nand_filesystem="   /* Update filesystem */ \
+   "mtdparts default; " \
+   "nand erase.part filesystem; " \
+   "if test ${ip_dyn} = yes; then " \
+   "setenv get_cmd dhcp; " \
+   "else " \
+   "setenv get_cmd tftp; " \
+   "fi; " \
+   "${get_cmd} ${ubifs_file}; " \
+   "ubi part filesystem; " \
+   "ubi create filesystem; " \
+   "ubi write ${loadaddr} filesystem ${filesize}\0" \
"nandargs=setenv bootargs console=${console_mainline},${baudrate} " \
"rootfstype=ubifs ubi.mtd=6 root=ubi0_0 ${mtdparts}\0" \
"nandboot=" /* Boot from NAND */ \
-- 
1.8.4.rc3

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


[U-Boot] [PATCH 0/3] Improved NAND support for mx28evk

2013-10-12 Thread Otavio Salvador
This patchset improves the mx28evk default environment so it is
easier to use by users when testing the NAND support.

It provides a set of new environment routines as:

 - update_nand_kernel
 - update_nand_fdt
 - update_nand_filesystem

and allow for easy NAND boot using:

 'run nandboot'

This has been tested using:

 Samsung 4G NAND, part-#: K9LBG08U0D-PCB0


Otavio Salvador (3):
  mx28evk: Use 512k for fdt partition to align it
  mx28evk: Add 'nandboot' environment command
  mx28evk: Extend environment to easy write of NAND system

 include/configs/mx28evk.h | 55 ---
 1 file changed, 52 insertions(+), 3 deletions(-)

-- 
1.8.4.rc3

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


[U-Boot] [PATCH] fsl_esdhc: Add Auto command 12 interrupt bit detecting

2013-10-12 Thread Haijun Zhang
When Auto-CMD12 is used, the corresponding interrupt and error bit
should be enabled and set to reflect auto cmd 12 error.
Also add other command error detecting, like command index error,
CRC error etc. Without this command error bit set system will hang
due to the while loop.

Signed-off-by: Haijun Zhang 
---
 drivers/mmc/fsl_esdhc.c | 10 +-
 include/fsl_esdhc.h |  3 ++-
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
index dc1d002..5aa592b 100644
--- a/drivers/mmc/fsl_esdhc.c
+++ b/drivers/mmc/fsl_esdhc.c
@@ -342,13 +342,13 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, 
struct mmc_data *data)
 #endif
 
/* Wait for the command to complete */
-   while (!(esdhc_read32(®s->irqstat) & (IRQSTAT_CC | IRQSTAT_CTOE)))
+   while (!(esdhc_read32(®s->irqstat) & (IRQSTAT_CC | CMD_ERR)))
;
 
irqstat = esdhc_read32(®s->irqstat);
 
/* Reset CMD and DATA portions on error */
-   if (irqstat & (CMD_ERR | IRQSTAT_CTOE)) {
+   if (irqstat & CMD_ERR) {
esdhc_write32(®s->sysctl, esdhc_read32(®s->sysctl) |
  SYSCTL_RSTC);
while (esdhc_read32(®s->sysctl) & SYSCTL_RSTC)
@@ -363,12 +363,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, 
struct mmc_data *data)
}
}
 
-   if (irqstat & CMD_ERR)
-   return COMM_ERR;
-
if (irqstat & IRQSTAT_CTOE)
return TIMEOUT;
 
+   if (irqstat & CMD_ERR)
+   return COMM_ERR;
+
/* Workaround for ESDHC errata ENGcm03648 */
if (!data && (cmd->resp_type & MMC_RSP_BUSY)) {
int timeout = 2500;
diff --git a/include/fsl_esdhc.h b/include/fsl_esdhc.h
index 67d6057..37dbe27 100644
--- a/include/fsl_esdhc.h
+++ b/include/fsl_esdhc.h
@@ -62,7 +62,8 @@
 #define IRQSTAT_TC (0x0002)
 #define IRQSTAT_CC (0x0001)
 
-#define CMD_ERR(IRQSTAT_CIE | IRQSTAT_CEBE | IRQSTAT_CCE)
+#define CMD_ERR(IRQSTAT_CIE | IRQSTAT_CEBE | IRQSTAT_CCE | \
+   IRQSTAT_CTOE | IRQSTAT_AC12E)
 #define DATA_ERR   (IRQSTAT_DEBE | IRQSTAT_DCE | IRQSTAT_DTOE | \
IRQSTAT_DMAE)
 #define DATA_COMPLETE  (IRQSTAT_TC | IRQSTAT_DINT)
-- 
1.8.0


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


Re: [U-Boot] [PATCH v5 2/8] ARM: add secure monitor handler to switchto non-secure state

2013-10-12 Thread TigerLiu
Hi, experts:
I found Linaro engineers had pushed some secure monitor related code.
But not find these code in 2013.10.rc4 .
So, how to get these latest code?

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


[U-Boot] [PATCH v14 09/10] arm64: board support of vexpress_aemv8a

2013-10-12 Thread fenghua
From: David Feng 

Signed-off-by: David Feng 
---
 board/armltd/vexpress64/Makefile |   27 +
 board/armltd/vexpress64/vexpress64.c |   50 +
 boards.cfg   |1 +
 include/configs/vexpress_aemv8a.h|  191 ++
 4 files changed, 269 insertions(+)
 create mode 100644 board/armltd/vexpress64/Makefile
 create mode 100644 board/armltd/vexpress64/vexpress64.c
 create mode 100644 include/configs/vexpress_aemv8a.h

diff --git a/board/armltd/vexpress64/Makefile b/board/armltd/vexpress64/Makefile
new file mode 100644
index 000..f907c92
--- /dev/null
+++ b/board/armltd/vexpress64/Makefile
@@ -0,0 +1,27 @@
+#
+# (C) Copyright 2000-2004
+# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+include $(TOPDIR)/config.mk
+
+LIB= $(obj)lib$(BOARD).o
+
+COBJS  := vexpress64.o
+
+SRCS   := $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+
+$(LIB):$(obj).depend $(OBJS)
+   $(call cmd_link_o_target, $(OBJS))
+
+#
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#
diff --git a/board/armltd/vexpress64/vexpress64.c 
b/board/armltd/vexpress64/vexpress64.c
new file mode 100644
index 000..dae18d4
--- /dev/null
+++ b/board/armltd/vexpress64/vexpress64.c
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright 2013
+ * David Feng 
+ * Sharma Bhupesh 
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int board_init(void)
+{
+   return 0;
+}
+
+int dram_init(void)
+{
+   gd->ram_size = PHYS_SDRAM_1_SIZE;
+   return 0;
+}
+
+int timer_init(void)
+{
+   return 0;
+}
+
+/*
+ * Board specific reset that is system reset.
+ */
+void reset_cpu(ulong addr)
+{
+}
+
+/*
+ * Board specific ethernet initialization routine.
+ */
+int board_eth_init(bd_t *bis)
+{
+   int rc = 0;
+#ifdef CONFIG_SMC9
+   rc = smc9_initialize(0, CONFIG_SMC9_BASE);
+#endif
+   return rc;
+}
diff --git a/boards.cfg b/boards.cfg
index 85143c6..6d3dd69 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -383,6 +383,7 @@ Active  arm pxa-   -
   vpac270
 Active  arm pxa-   icpdas  lp8x4x  
lp8x4x   -  

   Sergey Yanovich 
 Active  arm pxa-   toradex -   
colibri_pxa270   -  

   Marek Vasut 
 Active  arm sa1100 -   -   -   
jornada  -  

   Kristoffer Ericson 
+Active  arm armv8  -   armltd  vexpress64  
vexpress_aemv8a  vexpress_aemv8a:ARM64  

   David Feng 
 Active  avr32   at32ap at32ap700x  atmel   -   
atngw100 -  

   Haavard Skinnemoen 
 Active  avr32   at32ap at32ap700x  atmel   -   
atngw100mkii -  

   Andreas Bießmann 
 Active  avr32   at32ap at32ap700x  atmel   atstk1000   
atstk1002-  

   Haavard Skinnemoen 
diff --git a/include/configs/vexpress_aemv8a.h 
b/include/configs/vexpress_aemv8a.h
new file mode 100644
index 000..e93b00f
--- /dev/null
+++ b/include/configs/vexpress_aemv8a.h
@@ -0,0 +1,191 @@
+/*
+ * Configuration for Versatile Express. Parts were derived from other ARM
+ *   configurations.
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#ifndef __VEXPRESS_AEMV8A_H
+#define __VEXPRESS_AEMV8A_H
+
+#define DEBUG
+
+#define CONFIG_REMAKE_ELF
+
+/*#define CONFIG_BOOTING_EL1*/
+
+/*#define CONFIG_SYS_GENERIC_BOARD*/
+
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_SUPPORT_RAW_INITRD
+
+/* Cache Definitions */
+#define CONFIG_SYS_DCACHE_OFF
+#define CONFIG_SYS_ICACHE_OFF

[U-Boot] [PATCH v14 06/10] arm64: Make checkarmreloc accept arm64 relocations

2013-10-12 Thread fenghua
From: David Feng 

Signed-off-by: Scott Wood 
Signed-off-by: David Feng 
---
 Makefile |   14 +-
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 86464c9..edf52f2 100644
--- a/Makefile
+++ b/Makefile
@@ -805,12 +805,16 @@ tools: $(VERSION_FILE) $(TIMESTAMP_FILE)
$(MAKE) -C $@ all
 endif  # config.mk
 
-# ARM relocations should all be R_ARM_RELATIVE.
+# ARM relocations should all be R_ARM_RELATIVE (32-bit) or
+# R_AARCH64_RELATIVE (64-bit).
 checkarmreloc: $(obj)u-boot
-   @if test "R_ARM_RELATIVE" != \
-   "`$(CROSS_COMPILE)readelf -r $< | cut -d ' ' -f 4 | grep R_ARM 
| sort -u`"; \
-   then echo "$< contains relocations other than \
-   R_ARM_RELATIVE"; false; fi
+   @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
+   grep R_A | sort -u`"; \
+   if test "$$RELOC" != "R_ARM_RELATIVE" -a \
+"$$RELOC" != "R_AARCH64_RELATIVE"; then \
+   echo "$< contains unexpected relocations: $$RELOC"; \
+   false; \
+   fi
 
 $(VERSION_FILE):
@mkdir -p $(dir $(VERSION_FILE))
-- 
1.7.9.5


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


[U-Boot] [PATCH v14 04/10] arm64: Add tool to statically apply RELA relocations

2013-10-12 Thread fenghua
From: David Feng 

ARM64 uses the newer RELA-style relocations rather than the older REL.
RELA relocations have an addend in the relocation struct, rather than
expecting the loader to read a value from the location to be updated.

While this is beneficial for ordinary program loading, it's problematic
for U-Boot because the location to be updated starts out with zero,
rather than a pre-relocation value.  Since we need to be able to run C
code before relocation, we need a tool to apply the relocations at
build time.

In theory this tool is applicable to other newer architectures (mainly
64-bit), but currently the only relocations it supports are for arm64,
and it assumes a 64-bit little-endian target.  If the latter limitation
is ever to be changed, we'll need a way to tell the tool what format
the image is in.  Eventually this may be replaced by a tool that uses
libelf or similar and operates directly on the ELF file.  I've written
some code for such an approach but libelf does not make it easy to poke
addresses by memory address (rather than by section), and I was
hesitant to write code to manually parse the program headers and do the
update outside of libelf (or to iterate over sections) -- especially
since it wouldn't get test coverage on things like binaries with
multiple PT_LOAD segments.  This should be good enough for now to let
the manual relocation stuff be removed from the arm64 patches.

NOTE: Please make sure R_AARCH64_RELATIVE is defined at system include
  files or define it manually. Otherwise, the rela relocation will
  not apply.

Signed-off-by: Scott Wood 
Signed-off-by: David Feng 
---
 Makefile  |   12 
 tools/Makefile|6 ++
 tools/relocate-rela.c |  185 +
 3 files changed, 203 insertions(+)
 create mode 100644 tools/relocate-rela.c

diff --git a/Makefile b/Makefile
index b09bfcc..5dd28a9 100644
--- a/Makefile
+++ b/Makefile
@@ -392,6 +392,17 @@ else
 BOARD_SIZE_CHECK =
 endif
 
+# Statically apply RELA-style relocations (currently arm64 only)
+ifneq ($(CONFIG_STATIC_RELA),)
+# $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
+DO_STATIC_RELA = \
+   start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
+   end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
+   $(obj)tools/relocate-rela $(2) $(3) $$start $$end
+else
+DO_STATIC_RELA =
+endif
+
 # Always append ALL so that arch config.mk's can add custom ones
 ALL-y += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map
 
@@ -431,6 +442,7 @@ $(obj)u-boot.srec:  $(obj)u-boot
 
 $(obj)u-boot.bin:  $(obj)u-boot
$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
+   $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
$(BOARD_SIZE_CHECK)
 
 $(obj)u-boot.ldr:  $(obj)u-boot
diff --git a/tools/Makefile b/tools/Makefile
index c36cde2..a5eb85e 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -59,6 +59,7 @@ BIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX)
 BIN_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX)
 BIN_FILES-$(CONFIG_KIRKWOOD) += kwboot$(SFX)
 BIN_FILES-y += proftool(SFX)
+BIN_FILES-$(CONFIG_STATIC_RELA) += relocate-rela$(SFX)
 
 # Source files which exist outside the tools directory
 EXT_OBJ_FILES-$(CONFIG_BUILD_ENVCRC) += common/env_embedded.o
@@ -84,6 +85,7 @@ NOPED_OBJ_FILES-y += os_support.o
 NOPED_OBJ_FILES-y += pblimage.o
 NOPED_OBJ_FILES-y += proftool.o
 NOPED_OBJ_FILES-y += ublimage.o
+NOPED_OBJ_FILES-y += relocate-rela.o
 OBJ_FILES-$(CONFIG_BUILD_ENVCRC) += envcrc.o
 OBJ_FILES-$(CONFIG_CMD_LOADS) += img2srec.o
 OBJ_FILES-$(CONFIG_CMD_NET) += gen_eth_addr.o
@@ -250,6 +252,10 @@ $(obj)kwboot$(SFX): $(obj)kwboot.o
$(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
$(HOSTSTRIP) $@
 
+$(obj)relocate-rela$(SFX): $(obj)relocate-rela.o
+   $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $^
+   $(HOSTSTRIP) $@
+
 # Some of the tool objects need to be accessed from outside the tools directory
 $(obj)%.o: $(SRCTREE)/common/%.c
$(HOSTCC) -g $(HOSTCFLAGS_NOPED) -c -o $@ $<
diff --git a/tools/relocate-rela.c b/tools/relocate-rela.c
new file mode 100644
index 000..47afe0b
--- /dev/null
+++ b/tools/relocate-rela.c
@@ -0,0 +1,185 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:GPL-2.0+ BSD-2-Clause
+ *
+ * 64-bit and little-endian target only until we need to support a different
+ * arch that needs this.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+static const bool debug_en;
+
+static void debug(const char *fmt, ...)
+{
+   va_list args;
+
+   va_start(args, fmt);
+   if (debug_en)
+   vprintf(fmt, args);
+}
+
+static bool supported_rela(Elf64_Rela *rela)
+{
+   uint64_t mask = 0xULL; /* would be different on 32-bit */
+   uint32_t type = rela->r_info & mask;
+
+   switch (type) {
+#ifdef R_AARCH64_RELATIVE
+  

[U-Boot] [PATCH v14 07/10] arm64: core support

2013-10-12 Thread fenghua
From: David Feng 

Relocation code based on a patch by Scott Wood, which is:
Signed-off-by: Scott Wood 

Signed-off-by: David Feng 
---
 arch/arm/config.mk  |3 +-
 arch/arm/cpu/armv8/Makefile |   38 +
 arch/arm/cpu/armv8/cache.S  |  130 +
 arch/arm/cpu/armv8/cache_v8.c   |  218 
 arch/arm/cpu/armv8/config.mk|   15 ++
 arch/arm/cpu/armv8/cpu.c|   67 +
 arch/arm/cpu/armv8/exceptions.S |  112 +++
 arch/arm/cpu/armv8/start.S  |  234 +++
 arch/arm/cpu/armv8/timer.c  |   80 +++
 arch/arm/cpu/armv8/tlb.S|   30 
 arch/arm/cpu/armv8/u-boot.lds   |   89 
 arch/arm/include/asm/armv8/mmu.h|  110 +++
 arch/arm/include/asm/byteorder.h|   12 ++
 arch/arm/include/asm/cache.h|5 +
 arch/arm/include/asm/config.h   |6 +
 arch/arm/include/asm/global_data.h  |6 +-
 arch/arm/include/asm/io.h   |   15 +-
 arch/arm/include/asm/macro.h|   36 +
 arch/arm/include/asm/posix_types.h  |   10 ++
 arch/arm/include/asm/proc-armv/ptrace.h |   21 +++
 arch/arm/include/asm/proc-armv/system.h |   59 +++-
 arch/arm/include/asm/system.h   |   77 ++
 arch/arm/include/asm/types.h|4 +
 arch/arm/include/asm/u-boot.h   |4 +
 arch/arm/include/asm/unaligned.h|2 +-
 arch/arm/lib/Makefile   |   14 ++
 arch/arm/lib/board.c|7 +-
 arch/arm/lib/bootm.c|   16 +++
 arch/arm/lib/crt0_64.S  |  113 +++
 arch/arm/lib/interrupts_64.c|  120 
 arch/arm/lib/relocate_64.S  |   58 
 common/image.c  |1 +
 doc/README.arm64|   45 ++
 examples/standalone/stubs.c |   15 ++
 include/image.h |1 +
 35 files changed, 1762 insertions(+), 11 deletions(-)
 create mode 100644 arch/arm/cpu/armv8/Makefile
 create mode 100644 arch/arm/cpu/armv8/cache.S
 create mode 100644 arch/arm/cpu/armv8/cache_v8.c
 create mode 100644 arch/arm/cpu/armv8/config.mk
 create mode 100644 arch/arm/cpu/armv8/cpu.c
 create mode 100644 arch/arm/cpu/armv8/exceptions.S
 create mode 100644 arch/arm/cpu/armv8/start.S
 create mode 100644 arch/arm/cpu/armv8/timer.c
 create mode 100644 arch/arm/cpu/armv8/tlb.S
 create mode 100644 arch/arm/cpu/armv8/u-boot.lds
 create mode 100644 arch/arm/include/asm/armv8/mmu.h
 create mode 100644 arch/arm/lib/crt0_64.S
 create mode 100644 arch/arm/lib/interrupts_64.c
 create mode 100644 arch/arm/lib/relocate_64.S
 create mode 100644 doc/README.arm64

diff --git a/arch/arm/config.mk b/arch/arm/config.mk
index d0cf43f..a259193 100644
--- a/arch/arm/config.mk
+++ b/arch/arm/config.mk
@@ -17,7 +17,8 @@ endif
 
 LDFLAGS_FINAL += --gc-sections
 PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections \
- -fno-common -ffixed-r9 -msoft-float
+ -fno-common -ffixed-r9
+PLATFORM_RELFLAGS += $(call cc-option, -msoft-float)
 
 # Support generic board on ARM
 __HAVE_ARCH_GENERIC_BOARD := y
diff --git a/arch/arm/cpu/armv8/Makefile b/arch/arm/cpu/armv8/Makefile
new file mode 100644
index 000..b216f27
--- /dev/null
+++ b/arch/arm/cpu/armv8/Makefile
@@ -0,0 +1,38 @@
+#
+# (C) Copyright 2000-2003
+# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+include $(TOPDIR)/config.mk
+
+LIB= $(obj)lib$(CPU).o
+
+START  := start.o
+
+COBJS  += cpu.o
+COBJS  += timer.o
+COBJS  += cache_v8.o
+
+SOBJS  += exceptions.o
+SOBJS  += cache.o
+SOBJS  += tlb.o
+
+SRCS   := $(START:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS) $(SOBJS))
+START  := $(addprefix $(obj),$(START))
+
+all:   $(obj).depend $(START) $(LIB)
+
+$(LIB):$(OBJS)
+   $(call cmd_link_o_target, $(OBJS))
+
+#
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#
diff --git a/arch/arm/cpu/armv8/cache.S b/arch/arm/cpu/armv8/cache.S
new file mode 100644
index 000..419f169
--- /dev/null
+++ b/arch/arm/cpu/armv8/cache.S
@@ -0,0 +1,130 @@
+/*
+ * (C) Copyright 2013
+ * David Feng 
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+/*
+ * void __asm_flush_dcache_level(level)
+ *
+ * clean and invalidate one level cache.
+ *
+ * x0: cache level
+ * x1~x9: clobbered
+ */
+ENTRY(__asm_flush_dcache_level)
+   lsl x1, x0, #1
+   msr csselr_el1, x1  /* select cache level */
+   isb /* isb to sych the new

[U-Boot] [PATCH v14 05/10] arm64: Turn u-boot.bin back into an ELF file after relocate-rela

2013-10-12 Thread fenghua
From: David Feng 

While performing relocations on u-boot.bin should be good enough for
booting on real hardware, some simulators insist on booting an ELF file
(and yet don't perform ELF relocations), so convert the relocated
binary back into an ELF file.  This can go away in the future if we
change relocate-rela to operate directly on the ELF file, or if and
when we stop caring about a simulator with this restriction.

Signed-off-by: Scott Wood 
Signed-off-by: David Feng 
---
 Makefile |   13 +
 1 file changed, 13 insertions(+)

diff --git a/Makefile b/Makefile
index 5dd28a9..86464c9 100644
--- a/Makefile
+++ b/Makefile
@@ -415,6 +415,7 @@ ALL-$(CONFIG_OF_SEPARATE) += $(obj)u-boot.dtb 
$(obj)u-boot-dtb.bin
 ifneq ($(CONFIG_SPL_TARGET),)
 ALL-$(CONFIG_SPL) += $(obj)$(subst ",,$(CONFIG_SPL_TARGET))
 endif
+ALL-$(CONFIG_REMAKE_ELF) += $(obj)u-boot.elf
 
 # enable combined SPL/u-boot/dtb rules for tegra
 ifneq ($(CONFIG_TEGRA),)
@@ -581,6 +582,18 @@ $(obj)u-boot-img-spl-at-end.bin: $(obj)spl/u-boot-spl.bin 
$(obj)u-boot.img
conv=notrunc 2>/dev/null
cat $(obj)u-boot-pad.img $(obj)spl/u-boot-spl.bin > $@
 
+# Create a new ELF from a raw binary file.  This is useful for arm64
+# where static relocation needs to be performed on the raw binary,
+# but certain simulators only accept an ELF file (but don't do the
+# relocation).
+# FIXME refactor dts/Makefile to share target/arch detection
+$(obj)u-boot.elf: $(obj)u-boot.bin
+   @$(OBJCOPY)  -B aarch64 -I binary -O elf64-littleaarch64 \
+   $< $(obj)u-boot-elf.o
+   @$(LD) $(obj)u-boot-elf.o -o $@ \
+   --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
+   -Ttext=$(CONFIG_SYS_TEXT_BASE)
+
 ifeq ($(CONFIG_SANDBOX),y)
 GEN_UBOOT = \
cd $(LNDIR) && $(CC) $(SYMS) -T $(obj)u-boot.lds \
-- 
1.7.9.5


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


[U-Boot] [PATCH v14 10/10] arm64: MAKEALL, filter armv8 boards from LIST_arm

2013-10-12 Thread fenghua
From: David Feng 

Signed-off-by: David Feng 
---
 MAKEALL |   12 +++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/MAKEALL b/MAKEALL
index 956f3da..cb414ca 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -370,6 +370,12 @@ LIST_ARM11="$(boards_by_cpu arm1136)   \
 LIST_ARMV7="$(boards_by_cpu armv7)"
 
 #
+## ARMV8 Systems
+#
+
+LIST_ARMV8="$(boards_by_cpu armv8)"
+
+#
 ## AT91 Systems
 #
 
@@ -393,7 +399,11 @@ LIST_spear="$(boards_by_soc spear)"
 ## ARM groups
 #
 
-LIST_arm="$(boards_by_arch arm)"
+LIST_arm="$(boards_by_arch arm |   \
+   for ARMV8_BOARD in $LIST_ARMV8; \
+   do sed "/$ARMV8_BOARD/d";   \
+   done)   \
+"
 
 #
 ## MIPS Systems(default = big endian)
-- 
1.7.9.5


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


[U-Boot] [PATCH v14 02/10] cmd_pxe: remove compiling warnings

2013-10-12 Thread fenghua
From: David Feng 

Signed-off-by: David Feng 
---
 common/cmd_pxe.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c
index c5f4a22..1df9a8a 100644
--- a/common/cmd_pxe.c
+++ b/common/cmd_pxe.c
@@ -57,7 +57,7 @@ static int format_mac_pxe(char *outbuf, size_t outbuf_len)
uchar ethaddr[6];
 
if (outbuf_len < 21) {
-   printf("outbuf is too small (%d < 21)\n", outbuf_len);
+   printf("outbuf is too small (%zd < 21)\n", outbuf_len);
 
return -EINVAL;
}
@@ -100,7 +100,7 @@ static int get_bootfile_path(const char *file_path, char 
*bootfile_path,
path_len = (last_slash - bootfile) + 1;
 
if (bootfile_path_size < path_len) {
-   printf("bootfile_path too small. (%d < %d)\n",
+   printf("bootfile_path too small. (%zd < %zd)\n",
bootfile_path_size, path_len);
 
return -1;
-- 
1.7.9.5


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


[U-Boot] [PATCH v14 08/10] arm64: generic board support

2013-10-12 Thread fenghua
From: David Feng 

Signed-off-by: David Feng 
---
 common/board_f.c |   20 +---
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/common/board_f.c b/common/board_f.c
index 0ada1af..d821dbe 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -458,7 +458,7 @@ static int reserve_round_4k(void)
 static int reserve_mmu(void)
 {
/* reserve TLB table */
-   gd->arch.tlb_size = 4096 * 4;
+   gd->arch.tlb_size = PGTABLE_SIZE;
gd->relocaddr -= gd->arch.tlb_size;
 
/* round down to next 64 kB limit */
@@ -610,7 +610,7 @@ static int reserve_stacks(void)
 * TODO(s...@chromium.org): Perhaps create arch_reserve_stack()
 * to handle this and put in arch/xxx/lib/stack.c
 */
-# ifdef CONFIG_ARM
+# if defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
 #  ifdef CONFIG_USE_IRQ
gd->start_addr_sp -= (CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ);
debug("Reserving %zu Bytes for IRQ stack at: %08lx\n",
@@ -807,11 +807,6 @@ static int mark_bootstage(void)
 }
 
 static init_fnc_t init_sequence_f[] = {
-#if !defined(CONFIG_CPM2) && !defined(CONFIG_MPC512X) && \
-   !defined(CONFIG_MPC83xx) && !defined(CONFIG_MPC85xx) && \
-   !defined(CONFIG_MPC86xx) && !defined(CONFIG_X86)
-   zero_global_data,
-#endif
 #ifdef CONFIG_SANDBOX
setup_ram_buf,
 #endif
@@ -1005,6 +1000,17 @@ void board_init_f(ulong boot_flags)
gd = &data;
 #endif
 
+   /*
+* Clear global data before it is accessed at debug print
+* in initcall_run_list. Otherwise the debug print probably
+* get the wrong vaule of gd->have_console.
+*/
+#if !defined(CONFIG_CPM2) && !defined(CONFIG_MPC512X) && \
+   !defined(CONFIG_MPC83xx) && !defined(CONFIG_MPC85xx) && \
+   !defined(CONFIG_MPC86xx) && !defined(CONFIG_X86)
+   zero_global_data();
+#endif
+
gd->flags = boot_flags;
 
if (initcall_run_list(init_sequence_f))
-- 
1.7.9.5


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


[U-Boot] [PATCH v14 01/10] fdt_support: 64bit initrd start address support

2013-10-12 Thread fenghua
From: David Feng 

Signed-off-by: David Feng 
---
 common/fdt_support.c |   66 ++
 1 file changed, 34 insertions(+), 32 deletions(-)

diff --git a/common/fdt_support.c b/common/fdt_support.c
index b034c98..9bc5821 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -21,6 +21,34 @@
  */
 DECLARE_GLOBAL_DATA_PTR;
 
+/*
+ * Get cells len in bytes
+ * if #-cells property is 2 then len is 8
+ * otherwise len is 4
+ */
+static int get_cells_len(void *blob, char *nr_cells_name)
+{
+   const fdt32_t *cell;
+
+   cell = fdt_getprop(blob, 0, nr_cells_name, NULL);
+   if (cell && fdt32_to_cpu(*cell) == 2)
+   return 8;
+
+   return 4;
+}
+
+/*
+ * Write a 4 or 8 byte big endian cell
+ */
+static void write_cell(u8 *addr, u64 val, int size)
+{
+   int shift = (size - 1) * 8;
+   while (size-- > 0) {
+   *addr++ = (val >> shift) & 0xff;
+   shift -= 8;
+   }
+}
+
 /**
  * fdt_getprop_u32_default - Find a node and return it's property or a default
  *
@@ -131,9 +159,9 @@ static int fdt_fixup_stdout(void *fdt, int chosenoff)
 
 int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 {
-   int   nodeoffset;
+   int   nodeoffset, addr_cell_len;
int   err, j, total;
-   fdt32_t  tmp;
+   fdt64_t  tmp;
const char *path;
uint64_t addr, size;
 
@@ -170,9 +198,11 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong 
initrd_end, int force)
return err;
}
 
+   addr_cell_len = get_cells_len(fdt, "#address-cells");
+
path = fdt_getprop(fdt, nodeoffset, "linux,initrd-start", NULL);
if ((path == NULL) || force) {
-   tmp = cpu_to_fdt32(initrd_start);
+   write_cell((u8 *)&tmp, initrd_start, addr_cell_len);
err = fdt_setprop(fdt, nodeoffset,
"linux,initrd-start", &tmp, sizeof(tmp));
if (err < 0) {
@@ -181,7 +211,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong 
initrd_end, int force)
fdt_strerror(err));
return err;
}
-   tmp = cpu_to_fdt32(initrd_end);
+   write_cell((u8 *)&tmp, initrd_end, addr_cell_len);
err = fdt_setprop(fdt, nodeoffset,
"linux,initrd-end", &tmp, sizeof(tmp));
if (err < 0) {
@@ -343,34 +373,6 @@ void do_fixup_by_compat_u32(void *fdt, const char *compat,
do_fixup_by_compat(fdt, compat, prop, &tmp, 4, create);
 }
 
-/*
- * Get cells len in bytes
- * if #-cells property is 2 then len is 8
- * otherwise len is 4
- */
-static int get_cells_len(void *blob, char *nr_cells_name)
-{
-   const fdt32_t *cell;
-
-   cell = fdt_getprop(blob, 0, nr_cells_name, NULL);
-   if (cell && fdt32_to_cpu(*cell) == 2)
-   return 8;
-
-   return 4;
-}
-
-/*
- * Write a 4 or 8 byte big endian cell
- */
-static void write_cell(u8 *addr, u64 val, int size)
-{
-   int shift = (size - 1) * 8;
-   while (size-- > 0) {
-   *addr++ = (val >> shift) & 0xff;
-   shift -= 8;
-   }
-}
-
 #ifdef CONFIG_NR_DRAM_BANKS
 #define MEMORY_BANKS_MAX CONFIG_NR_DRAM_BANKS
 #else
-- 
1.7.9.5


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


[U-Boot] [PATCH v14 00/10] arm64 patch

2013-10-12 Thread fenghua
From: David Feng 

Changes for v14:
  - Merge rela relocation patches from Scott Wood
.
  - Remove all CONFIG_NEED_MANUAL_RELOC and other fixups
due to manual relocation. With rela relocation patches
them are not needed.
  - Fix the bug of MEMORY_ATTRIBUTES definition due to
assembler. That need put brackets around (MT_NORMAL*8).
Otherwise the result is wrong.This bug is reported by
York Sun .
  - -msoft-float is not supported by aarch64-gcc,
make a test though $(call cc-option,-msoft-float).
  - Adjust the virtual address space to 42 bits.
  - Filter armv8 boards from LIST_arm in MAKEALL.
  - remove gpio.h in asm/arch-armv8/ and move mmu.h to
asm/armv8/ directory.
  - remove vexpress64.dts from this patch, it could be
accessed from linux kernel.

Changes for v13:
  - fix the bug of board_r.c and arm/lib/board.c due to
CONFIG_NEED_MANUAL_RELOC. adjust initr_serial() in board_r.c
to the first entry of init_sequence_r[] and relocate
serial_initialize() in arm/lib/board.c, routines of serial_device
should be relocated firstly by serial_initialize(), so that printf
access the correct puts function, otherwise uninitialized
serial_current will be selected as the output device.
  - fix the bug of dcache_enable(). after mmu_setup the sctrl
register value should be fetched again because it has been
modifed by mmu_seup() function. This bug is reported by York Sun
.
  - add macro branch_if_slave to macro.h, it choose processor
with all zero affinity value as the master and is used in start.S.

Changes for v12:
  - custom the patches to new format boards.cfg.

Changes for v11:
  - Replace CONFIG_ARMV8 with CONFIG_ARM64. Currently,
it's hard to distinguish what is armv8 specific and
what is aarch64 specific, so we use CONFIG_ARM64
only, no CONFIG_ARMV8 used.
  - rename README.armv8 with README.arm64 and make some modification.

Changes for v10:
  - add weak definition to include/linux/linkage.h and make
setup_el2/setup_el3/lowlevel_init weak routines,
so them can be easily overridden by processor specific code.
  - modify s-o-f of 0002-board-support-of-vexpress_aemv8a which
use wrong mail address of Bhupesh Sharma.

Changes for v9:
  - add Signed-off-by information to patch "board support of
vexpress_aemv8a" which SMC9 support is integrated
from Sharma Bhupesh's patch.
  - adjust pt_regs struct and add exception state
preservation in exception.S.

Changes for v8:
  - Integrate SMC9 patch of sharma bhupesh.
  - remove v8_outer_cache* which is not need currently.
  - Change license tag.
  - Mov crt0.S/relocate.S/interrupts.c to arm/lib and
rename them with _64 suffix.
  - Make el3/el2 initializing process of start.S as
two separate routines. It could be easier to be
replaced with processor specific codes.
  - Remove exception stack save and restore routine,
it is unnecessary now.
  - simplify __weak function declaration.

Changes for v7:
  - Check the patches with checkpatch.pl and get rid of
almost all warnings. There are a few warnings still,
but I think it should be that.
  - change printf format in cmd_pxe.c, use %zd indtead
of %ld to format size_t type variable.
  - add macro PGTABLE_SIZE to identify tlb table size.

Changes for v6:
  - Make modification to inappropriate licensed file
and bugs according to ScottWood's advice.
Thanks Scott for his checking to these patches.
  - Enable u-boot's running at EL1.
  - Get rid of compiling warnings originated from cmd_pxe.c.

Changes for v5:
  - fix the generic board_f.c, remove zero_global_data
from init_sequence_f array and move it to board_init_f()
function with CONFIG_X86 switch. The previous fixup is
inaccurate.
  - Replace __ARMEB__ with __AARCH64EB__ in byteorder.h
and unaligned.h, gcc for aarch64 use __AARCH64EB__ and
__AARCH64EL__ to identify endian.
  - Some modification to README.armv8

Changes for v4:
  - merge arm64 to arm architecture.

David Feng (10):
  fdt_support: 64bit initrd start address support
  cmd_pxe.c: remove compiling warnings
  add weak entry definition
  arm64: Add tool to statically apply RELA relocations
  arm64: Turn u-boot.bin back into an ELF file after relocate-rela
  arm64: Make checkarmreloc accept arm64 relocations
  arm64: core support
  arm64: generic board support
  arm64: board support of vexpress_aemv8a
  arm64: MAKEALL, filter armv8 boards from LIST_arm

 MAKEALL |   13 +-
 Makefile|   39 +-
 arch/arm/config.mk  |3 +-
 arch/arm/cpu/armv8/Makefile |   38 +
 arch/arm/cpu/armv8/cache.S  |  130 +
 arch/arm/cpu/armv8/cache_v8.c   |  218 
 arch/arm/cpu/armv8/config.mk|   15 ++
 arch/arm/cpu/armv8/cpu.c|   67 +
 arch/arm/cpu/armv8/exceptions.S |  112 

[U-Boot] [PATCH v14 03/10] add weak entry definition

2013-10-12 Thread fenghua
From: David Feng 

Signed-off-by: David Feng 
---
 include/linux/linkage.h |4 
 1 file changed, 4 insertions(+)

diff --git a/include/linux/linkage.h b/include/linux/linkage.h
index 9ddf830..2a2848a 100644
--- a/include/linux/linkage.h
+++ b/include/linux/linkage.h
@@ -49,6 +49,10 @@
.globl SYMBOL_NAME(name); \
LENTRY(name)
 
+#define WEAK(name) \
+   .weak SYMBOL_NAME(name); \
+   LENTRY(name)
+
 #ifndef END
 #define END(name) \
.size name, .-name
-- 
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] usb: dfu: make nand upload working

2013-10-12 Thread Bo Shen
If won't pass value to dfu->r_left, it always 0, make no transfer,
the dfu-util on host side report failed. So, before starting transfer,
pass the value, then nand uploading can work.

Signed-off-by: Bo Shen 

---
 drivers/dfu/dfu.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 56b21c7..3c3ad1b 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -274,6 +274,7 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, 
int blk_seq_num)
if (dfu->i_buf_start == NULL)
return -ENOMEM;
 
+   dfu->r_left = dfu->data.nand.size;
ret = dfu->read_medium(dfu, 0, dfu->i_buf_start, &dfu->r_left);
if (ret != 0) {
debug("%s: failed to get r_left\n", __func__);
-- 
1.7.9.5

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


Re: [U-Boot] [PATCH] Makefile: Introduce ARCH_PLATFORM_LIBGCC variable

2013-10-12 Thread Albert ARIBAUD
Hi Tom,

On Fri, 11 Oct 2013 16:13:03 -0400, Tom Rini  wrote:

> In some cases, such as arm multi-lib hardfloat (hf) toolchains, we will
> have multiple libgcc.a's available, and the arch needs to provide
> additional logic to determine the right file to use
> (-print-libgcc-file-name contains no CFLAG parsing logic).
> 
> Cc: Albert Aribaud 
> Signed-off-by: Tom Rini 
> ---
>  Makefile   |4 
>  arch/arm/config.mk |   11 +++
>  2 files changed, 15 insertions(+)
> 
> diff --git a/Makefile b/Makefile
> index b09bfcc..13b396f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -357,8 +357,12 @@ else
>  PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
>  endif
>  else
> +ifneq ("$(ARCH_PLATFORM_LIBGCC)","")
> +PLATFORM_LIBGCC := -L $(shell dirname $(ARCH_PLATFORM_LIBGCC)) -lgcc
> +else
>  PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(CFLAGS) 
> -print-libgcc-file-name`) -lgcc
>  endif
> +endif
>  PLATFORM_LIBS += $(PLATFORM_LIBGCC)
>  export PLATFORM_LIBS
>  
> diff --git a/arch/arm/config.mk b/arch/arm/config.mk
> index d0cf43f..e1d0dec 100644
> --- a/arch/arm/config.mk
> +++ b/arch/arm/config.mk
> @@ -19,6 +19,17 @@ LDFLAGS_FINAL += --gc-sections
>  PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections \
>   -fno-common -ffixed-r9 -msoft-float
>  
> +#
> +# When we use a hardfp toolchain if there are both 'libgcc.a' (hardfp) and
> +# 'arm-linux-gnueabi/libgcc.a' (softfp) we need to use the latter.  We
> +# cannot always build with a hardfp-only toolchain.

What does this last sentence mean exactly?

> +ARCH_PLATFORM_LIBGCC := $(shell \
> + X=`$(CC) -print-file-name=arm-linux-gnueabi/libgcc.a`; \
> + if [ -f $$X ]; then echo $$X ; \
> + else $(CC) -print-file-name=libgcc.a ; \
> + fi)
> +
>  # Support generic board on ARM
>  __HAVE_ARCH_GENERIC_BOARD := y

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


[U-Boot] Question about dfu flash rootfs image

2013-10-12 Thread Bo Shen

Hi All,
  Now I am implementing DFU support on Atmel sama5d3xek board, when try 
to download rootfs image to NAND flash through DFU, we need to drop ffs 
from rootfs image.
  In dfu_nand.c when it call nand_write_skip_bad() with flags as 0. 
However, I need to call nand_write_skip_bad() with flags at least with 
WITH_DROP_FFS set.


  Till now, I don't find any good solution to pass the parameter, 
except hard code it or through "#ifdef CONFIG_CMD_NAND_TRIMFFS" to set it.

  Any suggestions for it and any other solution?

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