All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 0/12] avr32: add generic board
@ 2015-02-06 22:06 Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 01/12] avr32: use dlmalloc for DMA buffers Andreas Bießmann
                   ` (12 more replies)
  0 siblings, 13 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

This is the first attempt to add generic board support to avr32 architecture. It
has at least one relevant part for other manual reloc architectures.

This series is currently runtime tested on grasshhopper and atstk1002.
Waldemar, could you please test the ngw100 device? Boards not converted to
generic board will be removed soon.

Andreas Bie?mann

Changes in v3:
- new in v3
- make arch_reserve_stacks weak and adopt ppc/arm versions
- remove unnecessary stack implementation for avr32
- fix bdinfo output

Changes in v2:
- new since v1
- new since v1
- provide as extra patch, remove from avr32 generic board support
- remove bootparams allocation, provide as extra patch
- use the else path in setup_mon_len()
- provide arch_reserve_stacks() for avr32
- use the newly introduced dram_init()

Changes in v1:
- new since RFC
- new since RFC
- add timer_init in board_r
- remove extern declaration of mmu_init_r()
- new since RFC

Andreas Bie?mann (12):
  avr32: use dlmalloc for DMA buffers
  avr32: rename cpu_init() -> arch_cpu_init()
  avr32: factor out cpu_mmc_init()
  avr32: rename mmu.h definitions
  avr32: convert to dram_init()
  avr32: use generic gd->start_addr_sp
  common/board_f: factor out reserve_stacks
  common/board_r: manual relocation for cmd table
  common/board_r: allocate bootparams
  avr32: add generic board support
  grasshopper: enable generic board
  atstk1002: enable generic board

 arch/arm/lib/Makefile                        |    1 +
 arch/arm/lib/stack.c                         |   42 +++++++++++++
 arch/avr32/config.mk                         |    3 +
 arch/avr32/cpu/Makefile                      |    1 +
 arch/avr32/cpu/at32ap700x/mmu.c              |    8 +--
 arch/avr32/cpu/cpu.c                         |    2 +-
 arch/avr32/cpu/exception.c                   |    6 +-
 arch/avr32/cpu/mmc.c                         |   16 +++++
 arch/avr32/cpu/u-boot.lds                    |    2 +
 arch/avr32/include/asm/arch-at32ap700x/mmu.h |    6 +-
 arch/avr32/include/asm/config.h              |    1 +
 arch/avr32/include/asm/dma-mapping.h         |    7 ++-
 arch/avr32/include/asm/global_data.h         |    1 -
 arch/avr32/include/asm/u-boot.h              |   10 ++++
 arch/avr32/lib/Makefile                      |    3 +
 arch/avr32/lib/board.c                       |   83 ++++----------------------
 arch/avr32/lib/dram_init.c                   |   17 ++++++
 arch/avr32/lib/interrupts.c                  |    5 ++
 arch/powerpc/lib/Makefile                    |    1 +
 arch/powerpc/lib/stack.c                     |   31 ++++++++++
 board/atmel/atngw100/atngw100.c              |   32 +++-------
 board/atmel/atngw100mkii/atngw100mkii.c      |   39 ++++--------
 board/atmel/atstk1000/atstk1000.c            |   33 +++-------
 board/earthlcd/favr-32-ezkit/favr-32-ezkit.c |   33 +++-------
 board/in-circuit/grasshopper/grasshopper.c   |   32 +++-------
 board/mimc/mimc200/mimc200.c                 |   38 ++++--------
 board/miromico/hammerhead/hammerhead.c       |   32 +++-------
 common/board_f.c                             |   46 ++++----------
 common/board_r.c                             |   40 ++++++++++++-
 common/cmd_bdinfo.c                          |    4 +-
 include/asm-generic/u-boot.h                 |    4 ++
 include/common.h                             |   18 ++++++
 include/configs/atngw100.h                   |    1 -
 include/configs/atngw100mkii.h               |    1 -
 include/configs/atstk1002.h                  |    5 +-
 include/configs/atstk1006.h                  |    1 -
 include/configs/favr-32-ezkit.h              |    1 -
 include/configs/grasshopper.h                |    5 +-
 include/configs/hammerhead.h                 |    1 -
 include/configs/mimc200.h                    |    1 -
 40 files changed, 306 insertions(+), 307 deletions(-)
 create mode 100644 arch/arm/lib/stack.c
 create mode 100644 arch/avr32/cpu/mmc.c
 create mode 100644 arch/avr32/lib/dram_init.c
 create mode 100644 arch/powerpc/lib/stack.c

-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 01/12] avr32: use dlmalloc for DMA buffers
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,01/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 02/12] avr32: rename cpu_init() -> arch_cpu_init() Andreas Bießmann
                   ` (11 subsequent siblings)
  12 siblings, 1 reply; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
---

Changes in v3: None
Changes in v2: None
Changes in v1: None

 arch/avr32/include/asm/dma-mapping.h |    7 ++++-
 arch/avr32/lib/board.c               |   51 ----------------------------------
 include/configs/atngw100.h           |    1 -
 include/configs/atngw100mkii.h       |    1 -
 include/configs/atstk1002.h          |    1 -
 include/configs/atstk1006.h          |    1 -
 include/configs/favr-32-ezkit.h      |    1 -
 include/configs/grasshopper.h        |    1 -
 include/configs/hammerhead.h         |    1 -
 include/configs/mimc200.h            |    1 -
 10 files changed, 6 insertions(+), 60 deletions(-)

diff --git a/arch/avr32/include/asm/dma-mapping.h b/arch/avr32/include/asm/dma-mapping.h
index dbdd2fe..1cde827 100644
--- a/arch/avr32/include/asm/dma-mapping.h
+++ b/arch/avr32/include/asm/dma-mapping.h
@@ -14,7 +14,12 @@ enum dma_data_direction {
 	DMA_TO_DEVICE		= 1,
 	DMA_FROM_DEVICE		= 2,
 };
-extern void *dma_alloc_coherent(size_t len, unsigned long *handle);
+
+static inline void *dma_alloc_coherent(size_t len, unsigned long *handle)
+{
+	*handle = (unsigned long)memalign(ARCH_DMA_MINALIGN, len);
+	return (void *)*handle;
+}
 
 static inline unsigned long dma_map_single(volatile void *vaddr, size_t len,
 					   enum dma_data_direction dir)
diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c
index bf0997f..7d13ac5 100644
--- a/arch/avr32/lib/board.c
+++ b/arch/avr32/lib/board.c
@@ -45,50 +45,6 @@ int cpu_mmc_init(bd_t *bd)
 	return atmel_mci_init((void *)ATMEL_BASE_MMCI);
 }
 
-#ifdef CONFIG_SYS_DMA_ALLOC_LEN
-#include <asm/arch/cacheflush.h>
-#include <asm/io.h>
-
-static unsigned long dma_alloc_start;
-static unsigned long dma_alloc_end;
-static unsigned long dma_alloc_brk;
-
-static void dma_alloc_init(void)
-{
-	unsigned long monitor_addr;
-
-	monitor_addr = CONFIG_SYS_MONITOR_BASE + gd->reloc_off;
-	dma_alloc_end = monitor_addr - CONFIG_SYS_MALLOC_LEN;
-	dma_alloc_start = dma_alloc_end - CONFIG_SYS_DMA_ALLOC_LEN;
-	dma_alloc_brk = dma_alloc_start;
-
-	printf("DMA: Using memory from 0x%08lx to 0x%08lx\n",
-	       dma_alloc_start, dma_alloc_end);
-
-	invalidate_dcache_range((unsigned long)cached(dma_alloc_start),
-				dma_alloc_end);
-}
-
-void *dma_alloc_coherent(size_t len, unsigned long *handle)
-{
-	unsigned long paddr = dma_alloc_brk;
-
-	if (dma_alloc_brk + len > dma_alloc_end)
-		return NULL;
-
-	dma_alloc_brk = ((paddr + len + CONFIG_SYS_DCACHE_LINESZ - 1)
-			 & ~(CONFIG_SYS_DCACHE_LINESZ - 1));
-
-	*handle = paddr;
-	return uncached(paddr);
-}
-#else
-static inline void dma_alloc_init(void)
-{
-
-}
-#endif
-
 static int init_baudrate(void)
 {
 	gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE);
@@ -180,12 +136,6 @@ void board_init_f(ulong board_type)
 	/* Reserve memory for malloc() */
 	addr -= CONFIG_SYS_MALLOC_LEN;
 
-#ifdef CONFIG_SYS_DMA_ALLOC_LEN
-	/* Reserve DMA memory (must be cache aligned) */
-	addr &= ~(CONFIG_SYS_DCACHE_LINESZ - 1);
-	addr -= CONFIG_SYS_DMA_ALLOC_LEN;
-#endif
-
 #ifdef CONFIG_LCD
 #ifdef CONFIG_FB_ADDR
 	printf("LCD: Frame buffer allocated at preset 0x%08x\n",
@@ -264,7 +214,6 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
 	/* The malloc area is right below the monitor image in RAM */
 	mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
 			CONFIG_SYS_MALLOC_LEN, CONFIG_SYS_MALLOC_LEN);
-	dma_alloc_init();
 
 	enable_interrupts();
 
diff --git a/include/configs/atngw100.h b/include/configs/atngw100.h
index 9c81e31..540e86a 100644
--- a/include/configs/atngw100.h
+++ b/include/configs/atngw100.h
@@ -143,7 +143,6 @@
 #define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
 
 #define CONFIG_SYS_MALLOC_LEN			(256*1024)
-#define CONFIG_SYS_DMA_ALLOC_LEN		(16384)
 
 /* Allow 4MB for the kernel run-time image */
 #define CONFIG_SYS_LOAD_ADDR			(EBI_SDRAM_BASE + 0x00400000)
diff --git a/include/configs/atngw100mkii.h b/include/configs/atngw100mkii.h
index 7b4f9cf..35eae76 100644
--- a/include/configs/atngw100mkii.h
+++ b/include/configs/atngw100mkii.h
@@ -164,7 +164,6 @@
 #define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
 
 #define CONFIG_SYS_MALLOC_LEN		(256*1024)
-#define CONFIG_SYS_DMA_ALLOC_LEN	(16384)
 
 /* Allow 4MB for the kernel run-time image */
 #define CONFIG_SYS_LOAD_ADDR		(EBI_SDRAM_BASE + 0x00400000)
diff --git a/include/configs/atstk1002.h b/include/configs/atstk1002.h
index 8f3fd0b..9e58238 100644
--- a/include/configs/atstk1002.h
+++ b/include/configs/atstk1002.h
@@ -158,7 +158,6 @@
 #define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
 
 #define CONFIG_SYS_MALLOC_LEN			(256*1024)
-#define CONFIG_SYS_DMA_ALLOC_LEN		(16384)
 
 /* Allow 4MB for the kernel run-time image */
 #define CONFIG_SYS_LOAD_ADDR			(EBI_SDRAM_BASE + 0x00400000)
diff --git a/include/configs/atstk1006.h b/include/configs/atstk1006.h
index bbe0aea..25090a6 100644
--- a/include/configs/atstk1006.h
+++ b/include/configs/atstk1006.h
@@ -159,7 +159,6 @@
 #define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
 
 #define CONFIG_SYS_MALLOC_LEN			(256*1024)
-#define CONFIG_SYS_DMA_ALLOC_LEN		(16384)
 
 /* Allow 4MB for the kernel run-time image */
 #define CONFIG_SYS_LOAD_ADDR			(EBI_SDRAM_BASE + 0x00400000)
diff --git a/include/configs/favr-32-ezkit.h b/include/configs/favr-32-ezkit.h
index 338d3dc..75bff4c 100644
--- a/include/configs/favr-32-ezkit.h
+++ b/include/configs/favr-32-ezkit.h
@@ -162,7 +162,6 @@
 #define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
 
 #define CONFIG_SYS_MALLOC_LEN			(256*1024)
-#define CONFIG_SYS_DMA_ALLOC_LEN		(16384)
 
 /* Allow 4MB for the kernel run-time image */
 #define CONFIG_SYS_LOAD_ADDR			(EBI_SDRAM_BASE + 0x00400000)
diff --git a/include/configs/grasshopper.h b/include/configs/grasshopper.h
index 73534ad..83f0ed2 100644
--- a/include/configs/grasshopper.h
+++ b/include/configs/grasshopper.h
@@ -151,7 +151,6 @@
 					 CONFIG_SYS_INTRAM_SIZE)
 
 #define CONFIG_SYS_MALLOC_LEN		(256*1024)
-#define CONFIG_SYS_DMA_ALLOC_LEN	(16384)
 
 /* Allow 4MB for the kernel run-time image */
 #define CONFIG_SYS_LOAD_ADDR		(EBI_SDRAM_BASE + 0x00400000)
diff --git a/include/configs/hammerhead.h b/include/configs/hammerhead.h
index 4f0603a..0bc42f1 100644
--- a/include/configs/hammerhead.h
+++ b/include/configs/hammerhead.h
@@ -137,7 +137,6 @@
 
 #define CONFIG_SYS_MALLOC_LEN			(256*1024)
 
-#define CONFIG_SYS_DMA_ALLOC_LEN		(16384)
 
 /* Allow 4MB for the kernel run-time image */
 #define CONFIG_SYS_LOAD_ADDR			(CONFIG_SYS_SDRAM_BASE + 0x00400000)
diff --git a/include/configs/mimc200.h b/include/configs/mimc200.h
index fc7ecfa..2fd3add 100644
--- a/include/configs/mimc200.h
+++ b/include/configs/mimc200.h
@@ -157,7 +157,6 @@
 #define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
 
 #define CONFIG_SYS_MALLOC_LEN			(1024*1024)
-#define CONFIG_SYS_DMA_ALLOC_LEN		(16384)
 
 /* Allow 4MB for the kernel run-time image */
 #define CONFIG_SYS_LOAD_ADDR			(EBI_SDRAM_BASE + 0x00400000)
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 02/12] avr32: rename cpu_init() -> arch_cpu_init()
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 01/12] avr32: use dlmalloc for DMA buffers Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,02/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 03/12] avr32: factor out cpu_mmc_init() Andreas Bießmann
                   ` (10 subsequent siblings)
  12 siblings, 1 reply; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---

Changes in v3: None
Changes in v2: None
Changes in v1: None

 arch/avr32/cpu/cpu.c            |    2 +-
 arch/avr32/include/asm/u-boot.h |    2 ++
 arch/avr32/lib/board.c          |    2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/avr32/cpu/cpu.c b/arch/avr32/cpu/cpu.c
index cef630e..cd226a6 100644
--- a/arch/avr32/cpu/cpu.c
+++ b/arch/avr32/cpu/cpu.c
@@ -27,7 +27,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-int cpu_init(void)
+int arch_cpu_init(void)
 {
 	extern void _evba(void);
 
diff --git a/arch/avr32/include/asm/u-boot.h b/arch/avr32/include/asm/u-boot.h
index 6aef808..2387f8a 100644
--- a/arch/avr32/include/asm/u-boot.h
+++ b/arch/avr32/include/asm/u-boot.h
@@ -25,4 +25,6 @@ typedef struct bd_info {
 /* For image.h:image_check_target_arch() */
 #define IH_ARCH_DEFAULT IH_ARCH_AVR32
 
+int arch_cpu_init(void);
+
 #endif /* __ASM_U_BOOT_H__ */
diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c
index 7d13ac5..95f9526 100644
--- a/arch/avr32/lib/board.c
+++ b/arch/avr32/lib/board.c
@@ -98,7 +98,7 @@ void board_init_f(ulong board_type)
 
 	/* Perform initialization sequence */
 	board_early_init_f();
-	cpu_init();
+	arch_cpu_init();
 	board_postclk_init();
 	env_init();
 	init_baudrate();
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 03/12] avr32: factor out cpu_mmc_init()
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 01/12] avr32: use dlmalloc for DMA buffers Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 02/12] avr32: rename cpu_init() -> arch_cpu_init() Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,03/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 04/12] avr32: rename mmu.h definitions Andreas Bießmann
                   ` (9 subsequent siblings)
  12 siblings, 1 reply; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

cpu_mmc_init() is required by the init sequence to have a working MMC interface
on avr32. This will not be included in the binary if we omit the avr32 board.c
when building the generic board.

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>

---

Changes in v3: None
Changes in v2: None
Changes in v1:
- new since RFC

 arch/avr32/cpu/Makefile |    1 +
 arch/avr32/cpu/mmc.c    |   16 ++++++++++++++++
 arch/avr32/lib/board.c  |    8 --------
 3 files changed, 17 insertions(+), 8 deletions(-)
 create mode 100644 arch/avr32/cpu/mmc.c

diff --git a/arch/avr32/cpu/Makefile b/arch/avr32/cpu/Makefile
index 00cede3..e111db3 100644
--- a/arch/avr32/cpu/Makefile
+++ b/arch/avr32/cpu/Makefile
@@ -16,5 +16,6 @@ obj-y			+= cache.o
 obj-y			+= interrupts.o
 obj-$(CONFIG_PORTMUX_PIO) += portmux-pio.o
 obj-$(CONFIG_PORTMUX_GPIO) += portmux-gpio.o
+obj-y += mmc.o
 
 obj-$(if $(filter at32ap700x,$(SOC)),y) += at32ap700x/
diff --git a/arch/avr32/cpu/mmc.c b/arch/avr32/cpu/mmc.c
new file mode 100644
index 0000000..b7213e4
--- /dev/null
+++ b/arch/avr32/cpu/mmc.c
@@ -0,0 +1,16 @@
+/*
+ * Copyright (C) 2004-2006 Atmel Corporation
+ * Copyright (C) 2015 Andreas Bie?mann <andreas.devel@googlmail.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+#include <common.h>
+#include <atmel_mci.h>
+#include <asm/arch/hardware.h>
+
+/* provide cpu_mmc_init, to overwrite provide board_mmc_init */
+int cpu_mmc_init(bd_t *bd)
+{
+	/* This calls the atmel_mci_init in gen_atmel_mci.c */
+	return atmel_mci_init((void *)ATMEL_BASE_MMCI);
+}
diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c
index 95f9526..e86530f 100644
--- a/arch/avr32/lib/board.c
+++ b/arch/avr32/lib/board.c
@@ -9,7 +9,6 @@
 #include <stdio_dev.h>
 #include <version.h>
 #include <net.h>
-#include <atmel_mci.h>
 
 #ifdef CONFIG_BITBANGMII
 #include <miiphy.h>
@@ -38,13 +37,6 @@ static int __do_nothing(void)
 int board_postclk_init(void) __attribute__((weak, alias("__do_nothing")));
 int board_early_init_r(void) __attribute__((weak, alias("__do_nothing")));
 
-/* provide cpu_mmc_init, to overwrite provide board_mmc_init */
-int cpu_mmc_init(bd_t *bd)
-{
-	/* This calls the atmel_mci_init in gen_atmel_mci.c */
-	return atmel_mci_init((void *)ATMEL_BASE_MMCI);
-}
-
 static int init_baudrate(void)
 {
 	gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE);
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 04/12] avr32: rename mmu.h definitions
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (2 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 03/12] avr32: factor out cpu_mmc_init() Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,04/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 05/12] avr32: convert to dram_init() Andreas Bießmann
                   ` (8 subsequent siblings)
  12 siblings, 1 reply; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Prefix mmu.h PAGE_xxx definitions with MMU_ in order to prevent a naming
conflict with other definitions.

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
---

Changes in v3: None
Changes in v2: None
Changes in v1:
- new since RFC

 arch/avr32/cpu/at32ap700x/mmu.c              |    8 ++++----
 arch/avr32/include/asm/arch-at32ap700x/mmu.h |    6 +++---
 board/atmel/atngw100/atngw100.c              |   12 ++++++------
 board/atmel/atngw100mkii/atngw100mkii.c      |   18 +++++++++---------
 board/atmel/atstk1000/atstk1000.c            |   12 ++++++------
 board/earthlcd/favr-32-ezkit/favr-32-ezkit.c |   12 ++++++------
 board/in-circuit/grasshopper/grasshopper.c   |   12 ++++++------
 board/mimc/mimc200/mimc200.c                 |   18 +++++++++---------
 board/miromico/hammerhead/hammerhead.c       |   12 ++++++------
 9 files changed, 55 insertions(+), 55 deletions(-)

diff --git a/arch/avr32/cpu/at32ap700x/mmu.c b/arch/avr32/cpu/at32ap700x/mmu.c
index 0e28b21..f5e62f2 100644
--- a/arch/avr32/cpu/at32ap700x/mmu.c
+++ b/arch/avr32/cpu/at32ap700x/mmu.c
@@ -7,7 +7,7 @@ void mmu_init_r(unsigned long dest_addr)
 	uintptr_t	vmr_table_addr;
 
 	/* Round monitor address down to the nearest page boundary */
-	dest_addr &= PAGE_ADDR_MASK;
+	dest_addr &= MMU_PAGE_ADDR_MASK;
 
 	/* Initialize TLB entry 0 to cover the monitor, and lock it */
 	sysreg_write(TLBEHI, dest_addr | SYSREG_BIT(TLBEHI_V));
@@ -36,7 +36,7 @@ int mmu_handle_tlb_miss(void)
 	unsigned int fault_pgno;
 	int first, last;
 
-	fault_pgno = sysreg_read(TLBEAR) >> PAGE_SHIFT;
+	fault_pgno = sysreg_read(TLBEAR) >> MMU_PAGE_SHIFT;
 	vmr_table = (const struct mmu_vm_range *)sysreg_read(PTBR);
 
 	/* Do a binary search through the VM ranges */
@@ -60,8 +60,8 @@ int mmu_handle_tlb_miss(void)
 			/* Got it; let's slam it into the TLB */
 			uint32_t tlbelo;
 
-			tlbelo = vmr->phys & ~PAGE_ADDR_MASK;
-			tlbelo |= fault_pgno << PAGE_SHIFT;
+			tlbelo = vmr->phys & ~MMU_PAGE_ADDR_MASK;
+			tlbelo |= fault_pgno << MMU_PAGE_SHIFT;
 			sysreg_write(TLBELO, tlbelo);
 			__builtin_tlbw();
 
diff --git a/arch/avr32/include/asm/arch-at32ap700x/mmu.h b/arch/avr32/include/asm/arch-at32ap700x/mmu.h
index fcd9a05..4736312 100644
--- a/arch/avr32/include/asm/arch-at32ap700x/mmu.h
+++ b/arch/avr32/include/asm/arch-at32ap700x/mmu.h
@@ -13,9 +13,9 @@
 
 #include <asm/sysreg.h>
 
-#define PAGE_SHIFT	20
-#define PAGE_SIZE	(1UL << PAGE_SHIFT)
-#define PAGE_ADDR_MASK	(~(PAGE_SIZE - 1))
+#define MMU_PAGE_SHIFT	20
+#define MMU_PAGE_SIZE	(1UL << MMU_PAGE_SHIFT)
+#define MMU_PAGE_ADDR_MASK	(~(MMU_PAGE_SIZE - 1))
 
 #define MMU_VMR_CACHE_NONE						\
 	(SYSREG_BF(AP, 3) | SYSREG_BF(SZ, 3) | SYSREG_BIT(TLBELO_D))
diff --git a/board/atmel/atngw100/atngw100.c b/board/atmel/atngw100/atngw100.c
index 03d767a..ed09c8c 100644
--- a/board/atmel/atngw100/atngw100.c
+++ b/board/atmel/atngw100/atngw100.c
@@ -18,14 +18,14 @@ DECLARE_GLOBAL_DATA_PTR;
 
 struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
 	{
-		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
-		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_NONE,
 	}, {
-		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
-		.nr_pages	= EBI_SDRAM_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_WRBACK,
 	},
 };
diff --git a/board/atmel/atngw100mkii/atngw100mkii.c b/board/atmel/atngw100mkii/atngw100mkii.c
index 72d19e4..912ea10 100644
--- a/board/atmel/atngw100mkii/atngw100mkii.c
+++ b/board/atmel/atngw100mkii/atngw100mkii.c
@@ -23,21 +23,21 @@ DECLARE_GLOBAL_DATA_PTR;
 struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
 	{
 		/* Atmel AT49BV640D 8 MiB x16 NOR flash on NCS0 */
-		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
-		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_NONE,
 	}, {
 		/* Micron MT29F2G16AAD 256 MiB x16 NAND flash on NCS3 */
-		.virt_pgno	= EBI_SRAM_CS3_BASE >> PAGE_SHIFT,
-		.nr_pages	= EBI_SRAM_CS3_SIZE >> PAGE_SHIFT,
-		.phys		= (EBI_SRAM_CS3_BASE >> PAGE_SHIFT)
+		.virt_pgno	= EBI_SRAM_CS3_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= EBI_SRAM_CS3_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (EBI_SRAM_CS3_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_NONE,
 	}, {
 		/* 2x16-bit ISSI IS42S16320B 64 MiB SDRAM (128 MiB total) */
-		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
-		.nr_pages	= EBI_SDRAM_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_WRBACK,
 	},
 };
diff --git a/board/atmel/atstk1000/atstk1000.c b/board/atmel/atstk1000/atstk1000.c
index 4b6b90f..f354694 100644
--- a/board/atmel/atstk1000/atstk1000.c
+++ b/board/atmel/atstk1000/atstk1000.c
@@ -17,14 +17,14 @@ DECLARE_GLOBAL_DATA_PTR;
 
 struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
 	{
-		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
-		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_NONE,
 	}, {
-		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
-		.nr_pages	= EBI_SDRAM_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_WRBACK,
 	},
 };
diff --git a/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c b/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
index a74547b..f9fde79 100644
--- a/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
+++ b/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
@@ -17,14 +17,14 @@ DECLARE_GLOBAL_DATA_PTR;
 
 struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
 	{
-		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
-		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_NONE,
 	}, {
-		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
-		.nr_pages	= EBI_SDRAM_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_WRBACK,
 	},
 };
diff --git a/board/in-circuit/grasshopper/grasshopper.c b/board/in-circuit/grasshopper/grasshopper.c
index 340b713..2ac54db 100644
--- a/board/in-circuit/grasshopper/grasshopper.c
+++ b/board/in-circuit/grasshopper/grasshopper.c
@@ -18,14 +18,14 @@ DECLARE_GLOBAL_DATA_PTR;
 
 struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
 	{
-		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
-		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
 				| MMU_VMR_CACHE_NONE,
 	}, {
-		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
-		.nr_pages	= EBI_SDRAM_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
 				| MMU_VMR_CACHE_WRBACK,
 	},
 };
diff --git a/board/mimc/mimc200/mimc200.c b/board/mimc/mimc200/mimc200.c
index 2ad53ec..186ac7d 100644
--- a/board/mimc/mimc200/mimc200.c
+++ b/board/mimc/mimc200/mimc200.c
@@ -20,19 +20,19 @@
 
 struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
 	{
-		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
-		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_NONE,
 	}, {
-		.virt_pgno	= EBI_SRAM_CS2_BASE >> PAGE_SHIFT,
-		.nr_pages	= EBI_SRAM_CS2_SIZE >> PAGE_SHIFT,
-		.phys		= (EBI_SRAM_CS2_BASE >> PAGE_SHIFT)
+		.virt_pgno	= EBI_SRAM_CS2_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= EBI_SRAM_CS2_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (EBI_SRAM_CS2_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_NONE,
 	}, {
-		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
-		.nr_pages	= EBI_SDRAM_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_WRBACK,
 	},
 };
diff --git a/board/miromico/hammerhead/hammerhead.c b/board/miromico/hammerhead/hammerhead.c
index d82fee7..e9a9e4b 100644
--- a/board/miromico/hammerhead/hammerhead.c
+++ b/board/miromico/hammerhead/hammerhead.c
@@ -21,14 +21,14 @@ DECLARE_GLOBAL_DATA_PTR;
 
 struct mmu_vm_range mmu_vmr_table[CONFIG_SYS_NR_VM_REGIONS] = {
 	{
-		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT,
-		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_FLASH_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= CONFIG_SYS_FLASH_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_FLASH_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_NONE,
 	}, {
-		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT,
-		.nr_pages	= EBI_SDRAM_SIZE >> PAGE_SHIFT,
-		.phys		= (CONFIG_SYS_SDRAM_BASE >> PAGE_SHIFT)
+		.virt_pgno	= CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT,
+		.nr_pages	= EBI_SDRAM_SIZE >> MMU_PAGE_SHIFT,
+		.phys		= (CONFIG_SYS_SDRAM_BASE >> MMU_PAGE_SHIFT)
 					| MMU_VMR_CACHE_WRBACK,
 	},
 };
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 05/12] avr32: convert to dram_init()
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (3 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 04/12] avr32: rename mmu.h definitions Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,05/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 06/12] avr32: use generic gd->start_addr_sp Andreas Bießmann
                   ` (7 subsequent siblings)
  12 siblings, 1 reply; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---

Changes in v3: None
Changes in v2:
- new since v1

Changes in v1: None

 arch/avr32/include/asm/u-boot.h              |    1 +
 arch/avr32/lib/Makefile                      |    1 +
 arch/avr32/lib/board.c                       |   20 ++++++++++----------
 arch/avr32/lib/dram_init.c                   |   17 +++++++++++++++++
 board/atmel/atngw100/atngw100.c              |   20 ++------------------
 board/atmel/atngw100mkii/atngw100mkii.c      |   21 +++------------------
 board/atmel/atstk1000/atstk1000.c            |   21 +++------------------
 board/earthlcd/favr-32-ezkit/favr-32-ezkit.c |   21 +++------------------
 board/in-circuit/grasshopper/grasshopper.c   |   20 ++------------------
 board/mimc/mimc200/mimc200.c                 |   20 ++------------------
 board/miromico/hammerhead/hammerhead.c       |   20 ++------------------
 11 files changed, 46 insertions(+), 136 deletions(-)
 create mode 100644 arch/avr32/lib/dram_init.c

diff --git a/arch/avr32/include/asm/u-boot.h b/arch/avr32/include/asm/u-boot.h
index 2387f8a..232350e 100644
--- a/arch/avr32/include/asm/u-boot.h
+++ b/arch/avr32/include/asm/u-boot.h
@@ -26,5 +26,6 @@ typedef struct bd_info {
 #define IH_ARCH_DEFAULT IH_ARCH_AVR32
 
 int arch_cpu_init(void);
+int dram_init(void);
 
 #endif /* __ASM_U_BOOT_H__ */
diff --git a/arch/avr32/lib/Makefile b/arch/avr32/lib/Makefile
index bb45cbe..5f2d97b 100644
--- a/arch/avr32/lib/Makefile
+++ b/arch/avr32/lib/Makefile
@@ -11,3 +11,4 @@ obj-y	+= memset.o
 obj-y	+= board.o
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
 obj-y	+= interrupts.o
+obj-y	+= dram_init.o
diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c
index e86530f..13b7fed 100644
--- a/arch/avr32/lib/board.c
+++ b/arch/avr32/lib/board.c
@@ -29,6 +29,12 @@ DECLARE_GLOBAL_DATA_PTR;
 
 unsigned long monitor_flash_len;
 
+__weak void dram_init_banksize(void)
+{
+	gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
+	gd->bd->bi_dram[0].size =  gd->ram_size;
+}
+
 /* Weak aliases for optional board functions */
 static int __do_nothing(void)
 {
@@ -82,7 +88,6 @@ void board_init_f(ulong board_type)
 	unsigned long monitor_len;
 	unsigned long monitor_addr;
 	unsigned long addr;
-	long sdram_size;
 
 	/* Initialize the global data pointer */
 	memset(&gd_data, 0, sizeof(gd_data));
@@ -97,10 +102,10 @@ void board_init_f(ulong board_type)
 	serial_init();
 	console_init_f();
 	display_banner();
-	sdram_size = initdram(board_type);
+	dram_init();
 
 	/* If we have no SDRAM, we can't go on */
-	if (sdram_size <= 0)
+	if (gd->ram_size <= 0)
 		panic("No working SDRAM available\n");
 
 	/*
@@ -114,7 +119,7 @@ void board_init_f(ulong board_type)
 	 *  - global data struct
 	 *  - stack
 	 */
-	addr = CONFIG_SYS_SDRAM_BASE + sdram_size;
+	addr = CONFIG_SYS_SDRAM_BASE + gd->ram_size;
 	monitor_len = (char *)(&__bss_end) - _text;
 
 	/*
@@ -156,12 +161,7 @@ void board_init_f(ulong board_type)
 	*(--new_sp) = 0;
 	*(--new_sp) = 0;
 
-	/*
-	 * Initialize the board information struct with the
-	 * information we have.
-	 */
-	bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
-	bd->bi_dram[0].size = sdram_size;
+	dram_init_banksize();
 
 	memcpy(new_gd, gd, sizeof(gd_t));
 
diff --git a/arch/avr32/lib/dram_init.c b/arch/avr32/lib/dram_init.c
new file mode 100644
index 0000000..5078e77
--- /dev/null
+++ b/arch/avr32/lib/dram_init.c
@@ -0,0 +1,17 @@
+/*
+ * Copyright (C) 2015 Andreas Bie?mann <andreas.devel@googlemail.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+#include <common.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int dram_init(void)
+{
+	/* check for the maximum amount of memory possible on AP7000 devices */
+	gd->ram_size = get_ram_size(
+		(void *)CONFIG_SYS_SDRAM_BASE,
+		(256<<20));
+	return 0;
+}
diff --git a/board/atmel/atngw100/atngw100.c b/board/atmel/atngw100/atngw100.c
index ed09c8c..dacd427 100644
--- a/board/atmel/atngw100/atngw100.c
+++ b/board/atmel/atngw100/atngw100.c
@@ -52,6 +52,8 @@ int board_early_init_f(void)
 	hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
 
 	portmux_enable_ebi(16, 23, 0, PORTMUX_DRIVE_HIGH);
+	sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
+
 	portmux_enable_usart1(PORTMUX_DRIVE_MIN);
 
 #if defined(CONFIG_MACB)
@@ -68,24 +70,6 @@ int board_early_init_f(void)
 	return 0;
 }
 
-phys_size_t initdram(int board_type)
-{
-	unsigned long expected_size;
-	unsigned long actual_size;
-	void *sdram_base;
-
-	sdram_base = uncached(EBI_SDRAM_BASE);
-
-	expected_size = sdram_init(sdram_base, &sdram_config);
-	actual_size = get_ram_size(sdram_base, expected_size);
-
-	if (expected_size != actual_size)
-		printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
-				actual_size >> 20, expected_size >> 20);
-
-	return actual_size;
-}
-
 int board_early_init_r(void)
 {
 	gd->bd->bi_phy_id[0] = 0x01;
diff --git a/board/atmel/atngw100mkii/atngw100mkii.c b/board/atmel/atngw100mkii/atngw100mkii.c
index 912ea10..8e215d5 100644
--- a/board/atmel/atngw100mkii/atngw100mkii.c
+++ b/board/atmel/atngw100mkii/atngw100mkii.c
@@ -69,6 +69,9 @@ int board_early_init_f(void)
 	portmux_select_gpio(PORTMUX_PORT_E, 1 << 23,
 			PORTMUX_DIR_OUTPUT | PORTMUX_INIT_HIGH
 			| PORTMUX_DRIVE_MIN);
+
+	sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
+
 	portmux_enable_usart1(PORTMUX_DRIVE_MIN);
 
 #if defined(CONFIG_MACB)
@@ -85,24 +88,6 @@ int board_early_init_f(void)
 	return 0;
 }
 
-phys_size_t initdram(int board_type)
-{
-	unsigned long expected_size;
-	unsigned long actual_size;
-	void *sdram_base;
-
-	sdram_base = uncached(EBI_SDRAM_BASE);
-
-	expected_size = sdram_init(sdram_base, &sdram_config);
-	actual_size = get_ram_size(sdram_base, expected_size);
-
-	if (expected_size != actual_size)
-		printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
-				actual_size >> 20, expected_size >> 20);
-
-	return actual_size;
-}
-
 int board_early_init_r(void)
 {
 	gd->bd->bi_phy_id[0] = 0x01;
diff --git a/board/atmel/atstk1000/atstk1000.c b/board/atmel/atstk1000/atstk1000.c
index f354694..fd4363b 100644
--- a/board/atmel/atstk1000/atstk1000.c
+++ b/board/atmel/atstk1000/atstk1000.c
@@ -78,7 +78,10 @@ int board_early_init_f(void)
 	hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
 
 	portmux_enable_ebi(sdram_config.data_bits, 23, 0, PORTMUX_DRIVE_HIGH);
+	sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
+
 	portmux_enable_usart1(PORTMUX_DRIVE_MIN);
+
 #if defined(CONFIG_MACB)
 	portmux_enable_macb0(PORTMUX_MACB_MII, PORTMUX_DRIVE_LOW);
 	portmux_enable_macb1(PORTMUX_MACB_MII, PORTMUX_DRIVE_LOW);
@@ -90,24 +93,6 @@ int board_early_init_f(void)
 	return 0;
 }
 
-phys_size_t initdram(int board_type)
-{
-	unsigned long expected_size;
-	unsigned long actual_size;
-	void *sdram_base;
-
-	sdram_base = uncached(EBI_SDRAM_BASE);
-
-	expected_size = sdram_init(sdram_base, &sdram_config);
-	actual_size = get_ram_size(sdram_base, expected_size);
-
-	if (expected_size != actual_size)
-		printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
-				actual_size >> 20, expected_size >> 20);
-
-	return actual_size;
-}
-
 int board_early_init_r(void)
 {
 	gd->bd->bi_phy_id[0] = 0x10;
diff --git a/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c b/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
index f9fde79..f9ac330 100644
--- a/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
+++ b/board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
@@ -52,6 +52,9 @@ int board_early_init_f(void)
 	hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
 
 	portmux_enable_ebi(32, 23, 0, PORTMUX_DRIVE_HIGH);
+
+	sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
+
 	portmux_enable_usart3(PORTMUX_DRIVE_MIN);
 #if defined(CONFIG_MACB)
 	portmux_enable_macb0(PORTMUX_MACB_MII, PORTMUX_DRIVE_HIGH);
@@ -63,24 +66,6 @@ int board_early_init_f(void)
 	return 0;
 }
 
-phys_size_t initdram(int board_type)
-{
-	unsigned long expected_size;
-	unsigned long actual_size;
-	void *sdram_base;
-
-	sdram_base = uncached(EBI_SDRAM_BASE);
-
-	expected_size = sdram_init(sdram_base, &sdram_config);
-	actual_size = get_ram_size(sdram_base, expected_size);
-
-	if (expected_size != actual_size)
-		printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
-				actual_size >> 20, expected_size >> 20);
-
-	return actual_size;
-}
-
 int board_early_init_r(void)
 {
 	gd->bd->bi_phy_id[0] = 0x01;
diff --git a/board/in-circuit/grasshopper/grasshopper.c b/board/in-circuit/grasshopper/grasshopper.c
index 2ac54db..91b4116 100644
--- a/board/in-circuit/grasshopper/grasshopper.c
+++ b/board/in-circuit/grasshopper/grasshopper.c
@@ -53,6 +53,8 @@ int board_early_init_f(void)
 	hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
 
 	portmux_enable_ebi(SDRAM_DATA_32BIT, 23, 0, PORTMUX_DRIVE_HIGH);
+	sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
+
 	portmux_enable_usart0(PORTMUX_DRIVE_MIN);
 	portmux_enable_usart1(PORTMUX_DRIVE_MIN);
 #if defined(CONFIG_MACB)
@@ -69,24 +71,6 @@ int board_early_init_f(void)
 	return 0;
 }
 
-phys_size_t initdram(int board_type)
-{
-	unsigned long expected_size;
-	unsigned long actual_size;
-	void *sdram_base;
-
-	sdram_base = uncached(EBI_SDRAM_BASE);
-
-	expected_size = sdram_init(sdram_base, &sdram_config);
-	actual_size = get_ram_size(sdram_base, expected_size);
-
-	if (expected_size != actual_size)
-		printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
-				actual_size >> 20, expected_size >> 20);
-
-	return actual_size;
-}
-
 int board_early_init_r(void)
 {
 	gd->bd->bi_phy_id[0] = 0x00;
diff --git a/board/mimc/mimc200/mimc200.c b/board/mimc/mimc200/mimc200.c
index 186ac7d..f078295 100644
--- a/board/mimc/mimc200/mimc200.c
+++ b/board/mimc/mimc200/mimc200.c
@@ -91,6 +91,8 @@ int board_early_init_f(void)
 
 	/* Enable 26 address bits and NCS2 */
 	portmux_enable_ebi(16, 26, PORTMUX_EBI_CS(2), PORTMUX_DRIVE_HIGH);
+	sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
+
 	portmux_enable_usart1(PORTMUX_DRIVE_MIN);
 
 	/* de-assert "force sys reset" pin */
@@ -151,24 +153,6 @@ int board_early_init_f(void)
 	return 0;
 }
 
-phys_size_t initdram(int board_type)
-{
-	unsigned long expected_size;
-	unsigned long actual_size;
-	void *sdram_base;
-
-	sdram_base = uncached(EBI_SDRAM_BASE);
-
-	expected_size = sdram_init(sdram_base, &sdram_config);
-	actual_size = get_ram_size(sdram_base, expected_size);
-
-	if (expected_size != actual_size)
-		printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
-				actual_size >> 20, expected_size >> 20);
-
-	return actual_size;
-}
-
 int board_early_init_r(void)
 {
 	gd->bd->bi_phy_id[0] = 0x01;
diff --git a/board/miromico/hammerhead/hammerhead.c b/board/miromico/hammerhead/hammerhead.c
index e9a9e4b..a0c7d3b 100644
--- a/board/miromico/hammerhead/hammerhead.c
+++ b/board/miromico/hammerhead/hammerhead.c
@@ -63,6 +63,8 @@ int board_early_init_f(void)
 	hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
 
 	portmux_enable_ebi(32, 23, 0, PORTMUX_DRIVE_HIGH);
+	sdram_init(uncached(EBI_SDRAM_BASE), &sdram_config);
+
 	portmux_enable_usart1(PORTMUX_DRIVE_MIN);
 
 #if defined(CONFIG_MACB)
@@ -74,24 +76,6 @@ int board_early_init_f(void)
 	return 0;
 }
 
-phys_size_t initdram(int board_type)
-{
-	unsigned long expected_size;
-	unsigned long actual_size;
-	void *sdram_base;
-
-	sdram_base = uncached(EBI_SDRAM_BASE);
-
-	expected_size = sdram_init(sdram_base, &sdram_config);
-	actual_size = get_ram_size(sdram_base, expected_size);
-
-	if (expected_size != actual_size)
-		printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
-		       actual_size >> 20, expected_size >> 20);
-
-	return actual_size;
-}
-
 int board_early_init_r(void)
 {
 	gd->bd->bi_phy_id[0] = 0x01;
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 06/12] avr32: use generic gd->start_addr_sp
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (4 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 05/12] avr32: convert to dram_init() Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,06/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 07/12] common/board_f: factor out reserve_stacks Andreas Bießmann
                   ` (6 subsequent siblings)
  12 siblings, 1 reply; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Before avr32 had an extra storage for stack end to have a nice stack printout
on exception. Remove this extra storage and use generic gd->start_addr_sp
instead.

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
---

Changes in v3:
- new in v3

Changes in v2: None
Changes in v1: None

 arch/avr32/cpu/exception.c           |    6 +++---
 arch/avr32/include/asm/global_data.h |    1 -
 arch/avr32/lib/board.c               |    2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/arch/avr32/cpu/exception.c b/arch/avr32/cpu/exception.c
index 5d1bc68..d6991f6 100644
--- a/arch/avr32/cpu/exception.c
+++ b/arch/avr32/cpu/exception.c
@@ -96,11 +96,11 @@ void do_unknown_exception(unsigned int ecr, struct pt_regs *regs)
 	printf("CPU Mode: %s\n", cpu_modes[mode]);
 
 	/* Avoid exception loops */
-	if (regs->sp < (gd->arch.stack_end - CONFIG_STACKSIZE)
-			|| regs->sp >= gd->arch.stack_end)
+	if (regs->sp < (gd->start_addr_sp - CONFIG_STACKSIZE) ||
+	    regs->sp >= gd->start_addr_sp)
 		printf("\nStack pointer seems bogus, won't do stack dump\n");
 	else
-		dump_mem("\nStack: ", regs->sp, gd->arch.stack_end);
+		dump_mem("\nStack: ", regs->sp, gd->start_addr_sp);
 
 	panic("Unhandled exception\n");
 }
diff --git a/arch/avr32/include/asm/global_data.h b/arch/avr32/include/asm/global_data.h
index d82fb7c..60abd00 100644
--- a/arch/avr32/include/asm/global_data.h
+++ b/arch/avr32/include/asm/global_data.h
@@ -8,7 +8,6 @@
 
 /* Architecture-specific global data */
 struct arch_global_data {
-	unsigned long stack_end;	/* highest stack address */
 	unsigned long cpu_hz;		/* cpu core clock frequency */
 };
 
diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c
index 13b7fed..99aa96e 100644
--- a/arch/avr32/lib/board.c
+++ b/arch/avr32/lib/board.c
@@ -157,7 +157,7 @@ void board_init_f(ulong board_type)
 
 	/* And finally, a new, bigger stack. */
 	new_sp = (unsigned long *)addr;
-	gd->arch.stack_end = addr;
+	gd->start_addr_sp = addr;
 	*(--new_sp) = 0;
 	*(--new_sp) = 0;
 
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 07/12] common/board_f: factor out reserve_stacks
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (5 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 06/12] avr32: use generic gd->start_addr_sp Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-07  0:28   ` Simon Glass
  2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,07/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 08/12] common/board_r: manual relocation for cmd table Andreas Bießmann
                   ` (5 subsequent siblings)
  12 siblings, 2 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Introduce arch_reserve_stacks() to tailor gd->start_addr_sp and gd->irq_sp to
the architecture needs.

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
---

Changes in v3:
- make arch_reserve_stacks weak and adopt ppc/arm versions

Changes in v2:
- new since v1

Changes in v1: None

 arch/arm/lib/Makefile     |    1 +
 arch/arm/lib/stack.c      |   42 ++++++++++++++++++++++++++++++++++++++++++
 arch/powerpc/lib/Makefile |    1 +
 arch/powerpc/lib/stack.c  |   31 +++++++++++++++++++++++++++++++
 common/board_f.c          |   44 +++++++++-----------------------------------
 include/common.h          |   18 ++++++++++++++++++
 6 files changed, 102 insertions(+), 35 deletions(-)
 create mode 100644 arch/arm/lib/stack.c
 create mode 100644 arch/powerpc/lib/stack.c

diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index d74e4b8..da8ed72 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -35,6 +35,7 @@ endif
 obj-$(CONFIG_SEMIHOSTING) += semihosting.o
 
 obj-y	+= sections.o
+obj-y	+= stack.o
 ifdef CONFIG_ARM64
 obj-y	+= gic_64.o
 obj-y	+= interrupts_64.o
diff --git a/arch/arm/lib/stack.c b/arch/arm/lib/stack.c
new file mode 100644
index 0000000..cf10a53
--- /dev/null
+++ b/arch/arm/lib/stack.c
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2015 Andreas Bie?mann <andreas.devel@googlemail.com>
+ *
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * (C) Copyright 2002-2006
+ * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+ *
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+#include <common.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int arch_reserve_stacks(void)
+{
+#ifdef CONFIG_SPL_BUILD
+	gd->start_addr_sp -= 128;	/* leave 32 words for abort-stack */
+	gd->irq_sp = gd->start_addr_sp;
+#else
+	/* setup stack pointer for exceptions */
+	gd->irq_sp = gd->start_addr_sp;
+
+# if !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",
+	      CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ, gd->start_addr_sp);
+
+	/* 8-byte alignment for ARM ABI compliance */
+	gd->start_addr_sp &= ~0x07;
+#  endif
+	/* leave 3 words for abort-stack, plus 1 for alignment */
+	gd->start_addr_sp -= 16;
+# endif
+#endif
+
+	return 0;
+}
diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile
index 0f62982..05b22bb 100644
--- a/arch/powerpc/lib/Makefile
+++ b/arch/powerpc/lib/Makefile
@@ -40,6 +40,7 @@ obj-y	+= extable.o
 obj-y	+= interrupts.o
 obj-$(CONFIG_CMD_KGDB) += kgdb.o
 obj-$(CONFIG_CMD_IDE) += ide.o
+obj-y	+= stack.o
 obj-y	+= time.o
 
 # Don't include the MPC5xxx special memcpy into the
diff --git a/arch/powerpc/lib/stack.c b/arch/powerpc/lib/stack.c
new file mode 100644
index 0000000..1985f03
--- /dev/null
+++ b/arch/powerpc/lib/stack.c
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2015 Andreas Bie?mann <andreas.devel@googlemail.com>
+ *
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * (C) Copyright 2002-2006
+ * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+ *
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+#include <common.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int arch_reserve_stacks(void)
+{
+	ulong *s;
+
+	/* setup stack pointer for exceptions */
+	gd->irq_sp = gd->start_addr_sp;
+
+	/* Clear initial stack frame */
+	s = (ulong *)gd->start_addr_sp;
+	*s = 0; /* Terminate back chain */
+	*++s = 0; /* NULL return address */
+
+	return 0;
+}
diff --git a/common/board_f.c b/common/board_f.c
index 7953137..b5e1071 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -573,48 +573,22 @@ static int reserve_fdt(void)
 	return 0;
 }
 
-static int reserve_stacks(void)
+int arch_reserve_stacks(void)
 {
-#ifdef CONFIG_SPL_BUILD
-# ifdef CONFIG_ARM
-	gd->start_addr_sp -= 128;	/* leave 32 words for abort-stack */
-	gd->irq_sp = gd->start_addr_sp;
-# endif
-#else
-# ifdef CONFIG_PPC
-	ulong *s;
-# endif
+	return 0;
+}
 
-	/* setup stack pointer for exceptions */
+static int reserve_stacks(void)
+{
+	/* make stack pointer 16-byte aligned */
 	gd->start_addr_sp -= 16;
 	gd->start_addr_sp &= ~0xf;
-	gd->irq_sp = gd->start_addr_sp;
 
 	/*
-	 * Handle architecture-specific things here
-	 * TODO(sjg at chromium.org): Perhaps create arch_reserve_stack()
-	 * to handle this and put in arch/xxx/lib/stack.c
+	 * let the architecture specific code tailor gd->start_addr_sp and
+	 * gd->irq_sp
 	 */
-# 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",
-		CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ, gd->start_addr_sp);
-
-	/* 8-byte alignment for ARM ABI compliance */
-	gd->start_addr_sp &= ~0x07;
-#  endif
-	/* leave 3 words for abort-stack, plus 1 for alignment */
-	gd->start_addr_sp -= 16;
-# elif defined(CONFIG_PPC)
-	/* Clear initial stack frame */
-	s = (ulong *) gd->start_addr_sp;
-	*s = 0; /* Terminate back chain */
-	*++s = 0; /* NULL return address */
-# endif /* Architecture specific code */
-
-	return 0;
-#endif
+	return arch_reserve_stacks();
 }
 
 static int display_new_sp(void)
diff --git a/include/common.h b/include/common.h
index 97c8f79..994d37b 100644
--- a/include/common.h
+++ b/include/common.h
@@ -252,6 +252,24 @@ int update_flash_size(int flash_size);
 int arch_early_init_r(void);
 
 /**
+ * Reserve all necessary stacks
+ *
+ * This is used in generic board init sequence in common/board_f.c. Each
+ * architecture could provide this function to tailor the required stacks.
+ *
+ * On entry gd->start_addr_sp is pointing to the suggested top of the stack.
+ * The callee ensures gd->start_add_sp is 16-byte aligned, so architectures
+ * require only this can leave it untouched.
+ *
+ * On exit gd->start_addr_sp and gd->irq_sp should be set to the respective
+ * positions of the stack. The stack pointer(s) will be set to this later.
+ * gd->irq_sp is only required, if the architecture needs it.
+ *
+ * @return 0 if no error
+ */
+__weak int arch_reserve_stacks(void);
+
+/**
  * Show the DRAM size in a board-specific way
  *
  * This is used by boards to display DRAM information in their own way.
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 08/12] common/board_r: manual relocation for cmd table
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (6 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 07/12] common/board_f: factor out reserve_stacks Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 09/12] common/board_r: allocate bootparams Andreas Bießmann
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

This is required for architectures still need manual relocation like avr32, m68k
microblaze and maybe others.

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Michal Simek <michal.simek@xilinx.com>
---

Changes in v3: None
Changes in v2: None
Changes in v1: None

 common/board_r.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/common/board_r.c b/common/board_r.c
index 68a9448..f7a3b55 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -294,6 +294,15 @@ static int initr_announce(void)
 	return 0;
 }
 
+#ifdef CONFIG_NEEDS_MANUAL_RELOC
+static int initr_manual_reloc_cmdtable(void)
+{
+	fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd),
+		       ll_entry_count(cmd_tbl_t, cmd));
+	return 0;
+}
+#endif
+
 #if !defined(CONFIG_SYS_NO_FLASH)
 static int initr_flash(void)
 {
@@ -702,6 +711,9 @@ init_fnc_t init_sequence_r[] = {
 	initr_serial,
 	initr_announce,
 	INIT_FUNC_WATCHDOG_RESET
+#ifdef CONFIG_NEEDS_MANUAL_RELOC
+	initr_manual_reloc_cmdtable,
+#endif
 #ifdef CONFIG_PPC
 	initr_trap,
 #endif
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 09/12] common/board_r: allocate bootparams
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (7 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 08/12] common/board_r: manual relocation for cmd table Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-07  0:28   ` Simon Glass
  2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,09/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 10/12] avr32: add generic board support Andreas Bießmann
                   ` (3 subsequent siblings)
  12 siblings, 2 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---

Changes in v3: None
Changes in v2:
- provide as extra patch, remove from avr32 generic board support

Changes in v1: None

 common/board_r.c |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/common/board_r.c b/common/board_r.c
index f7a3b55..8e1e9e0 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -459,6 +459,18 @@ static int initr_env(void)
 	return 0;
 }
 
+#ifdef CONFIG_SYS_BOOTPARAMS_LEN
+static int initr_malloc_bootparams(void)
+{
+	gd->bd->bi_boot_params = (ulong)malloc(CONFIG_SYS_BOOTPARAMS_LEN);
+	if (!gd->bd->bi_boot_params) {
+		puts("WARNING: Cannot allocate space for boot parameters\n");
+		return -ENOMEM;
+	}
+	return 0;
+}
+#endif
+
 #ifdef CONFIG_SC3
 /* TODO: with new initcalls, move this into the driver */
 extern void sc3_read_eeprom(void);
@@ -775,6 +787,9 @@ init_fnc_t init_sequence_r[] = {
 	initr_dataflash,
 #endif
 	initr_env,
+#ifdef CONFIG_SYS_BOOTPARAMS_LEN
+	initr_malloc_bootparams,
+#endif
 	INIT_FUNC_WATCHDOG_RESET
 	initr_secondary_cpu,
 #ifdef CONFIG_SC3
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 10/12] avr32: add generic board support
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (8 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 09/12] common/board_r: allocate bootparams Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-07  0:28   ` Simon Glass
  2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,10/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 11/12] grasshopper: enable generic board Andreas Bießmann
                   ` (2 subsequent siblings)
  12 siblings, 2 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
---
This version still has the mmu_init_r() in common/board_r. Removing this now is
not that easy ... I'd love to get it in as is and change it later to the
board_init_f_r() sequence.

Changes in v3:
- remove unnecessary stack implementation for avr32
- fix bdinfo output

Changes in v2:
- remove bootparams allocation, provide as extra patch
- use the else path in setup_mon_len()
- provide arch_reserve_stacks() for avr32
- use the newly introduced dram_init()

Changes in v1:
- add timer_init in board_r
- remove extern declaration of mmu_init_r()

 arch/avr32/config.mk            |    3 +++
 arch/avr32/cpu/u-boot.lds       |    2 ++
 arch/avr32/include/asm/config.h |    1 +
 arch/avr32/include/asm/u-boot.h |    7 +++++++
 arch/avr32/lib/Makefile         |    2 ++
 arch/avr32/lib/interrupts.c     |    5 +++++
 common/board_f.c                |    2 +-
 common/board_r.c                |   13 ++++++++++---
 common/cmd_bdinfo.c             |    4 ++--
 include/asm-generic/u-boot.h    |    4 ++++
 10 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/arch/avr32/config.mk b/arch/avr32/config.mk
index 469185e..8252f59 100644
--- a/arch/avr32/config.mk
+++ b/arch/avr32/config.mk
@@ -9,6 +9,9 @@ ifeq ($(CROSS_COMPILE),)
 CROSS_COMPILE := avr32-linux-
 endif
 
+# avr32 has generic board support
+__HAVE_ARCH_GENERIC_BOARD := y
+
 CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000
 
 PLATFORM_RELFLAGS	+= -ffixed-r5 -fPIC -mno-init-got -mrelax
diff --git a/arch/avr32/cpu/u-boot.lds b/arch/avr32/cpu/u-boot.lds
index cb29a22..b0180e3 100644
--- a/arch/avr32/cpu/u-boot.lds
+++ b/arch/avr32/cpu/u-boot.lds
@@ -48,9 +48,11 @@ SECTIONS
 	_edata = .;
 
 	.bss (NOLOAD) : {
+		__bss_start = .;
 		*(.bss)
 		*(.bss.*)
 	}
 	. = ALIGN(8);
 	__bss_end = .;
+	__init_end = .;
 }
diff --git a/arch/avr32/include/asm/config.h b/arch/avr32/include/asm/config.h
index 63056a4..529fe22 100644
--- a/arch/avr32/include/asm/config.h
+++ b/arch/avr32/include/asm/config.h
@@ -8,5 +8,6 @@
 #define _ASM_CONFIG_H_
 
 #define CONFIG_NEEDS_MANUAL_RELOC
+#define CONFIG_SYS_GENERIC_GLOBAL_DATA
 
 #endif
diff --git a/arch/avr32/include/asm/u-boot.h b/arch/avr32/include/asm/u-boot.h
index 232350e..8b047ec 100644
--- a/arch/avr32/include/asm/u-boot.h
+++ b/arch/avr32/include/asm/u-boot.h
@@ -6,6 +6,11 @@
 #ifndef __ASM_U_BOOT_H__
 #define __ASM_U_BOOT_H__ 1
 
+#ifdef CONFIG_SYS_GENERIC_BOARD
+/* Use the generic board which requires a unified bd_info */
+#include <asm-generic/u-boot.h>
+#else
+
 typedef struct bd_info {
 	unsigned char		bi_phy_id[4];
 	unsigned long		bi_board_number;
@@ -22,6 +27,8 @@ typedef struct bd_info {
 #define bi_memstart bi_dram[0].start
 #define bi_memsize bi_dram[0].size
 
+#endif
+
 /* For image.h:image_check_target_arch() */
 #define IH_ARCH_DEFAULT IH_ARCH_AVR32
 
diff --git a/arch/avr32/lib/Makefile b/arch/avr32/lib/Makefile
index 5f2d97b..6750913 100644
--- a/arch/avr32/lib/Makefile
+++ b/arch/avr32/lib/Makefile
@@ -8,7 +8,9 @@
 #
 
 obj-y	+= memset.o
+ifndef CONFIG_SYS_GENERIC_BOARD
 obj-y	+= board.o
+endif
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
 obj-y	+= interrupts.o
 obj-y	+= dram_init.o
diff --git a/arch/avr32/lib/interrupts.c b/arch/avr32/lib/interrupts.c
index bacb2d1..5f3a49e 100644
--- a/arch/avr32/lib/interrupts.c
+++ b/arch/avr32/lib/interrupts.c
@@ -7,6 +7,11 @@
 
 #include <asm/sysreg.h>
 
+int interrupt_init(void)
+{
+	return 0;
+}
+
 void enable_interrupts(void)
 {
 	asm volatile("csrf	%0" : : "n"(SYSREG_GM_OFFSET));
diff --git a/common/board_f.c b/common/board_f.c
index b5e1071..afa3c02 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -883,7 +883,7 @@ static init_fnc_t init_sequence_f[] = {
 #endif
 	announce_dram_init,
 	/* TODO: unify all these dram functions? */
-#if defined(CONFIG_ARM) || defined(CONFIG_X86)
+#if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_AVR32)
 	dram_init,		/* configure available RAM banks */
 #endif
 #if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
diff --git a/common/board_r.c b/common/board_r.c
index 8e1e9e0..550d863 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -55,6 +55,9 @@
 #include <dm/root.h>
 #include <linux/compiler.h>
 #include <linux/err.h>
+#ifdef CONFIG_AVR32
+#include <asm/arch/mmu.h>
+#endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -498,7 +501,7 @@ static int initr_api(void)
 #endif
 
 /* enable exceptions */
-#ifdef CONFIG_ARM
+#if defined(CONFIG_ARM) || defined(CONFIG_AVR32)
 static int initr_enable_interrupts(void)
 {
 	enable_interrupts();
@@ -825,10 +828,10 @@ init_fnc_t init_sequence_r[] = {
 	initr_kgdb,
 #endif
 	interrupt_init,
-#if defined(CONFIG_ARM)
+#if defined(CONFIG_ARM) || defined(CONFIG_AVR32)
 	initr_enable_interrupts,
 #endif
-#ifdef CONFIG_X86
+#if defined(CONFIG_X86) || defined(CONFIG_AVR32)
 	timer_init,		/* initialize timer */
 #endif
 #if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
@@ -893,6 +896,10 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
 	int i;
 #endif
 
+#ifdef CONFIG_AVR32
+	mmu_init_r(dest_addr);
+#endif
+
 #if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
 	gd = new_gd;
 #endif
diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
index e6d8a7a..999d026 100644
--- a/common/cmd_bdinfo.c
+++ b/common/cmd_bdinfo.c
@@ -333,8 +333,8 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	bd_t *bd = gd->bd;
 
 	print_num("boot_params",	(ulong)bd->bi_boot_params);
-	print_num("memstart",		(ulong)bd->bi_memstart);
-	print_lnum("memsize",		(u64)bd->bi_memsize);
+	print_num("memstart",		(ulong)bd->bi_dram[0].start);
+	print_lnum("memsize",		(u64)bd->bi_dram[0].size);
 	print_num("flashstart",		(ulong)bd->bi_flashstart);
 	print_num("flashsize",		(ulong)bd->bi_flashsize);
 	print_num("flashoffset",	(ulong)bd->bi_flashoffset);
diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h
index aef39d7..a63a87a 100644
--- a/include/asm-generic/u-boot.h
+++ b/include/asm-generic/u-boot.h
@@ -32,6 +32,10 @@ typedef struct bd_info {
 	unsigned long	bi_flashoffset; /* reserved area for startup monitor */
 	unsigned long	bi_sramstart;	/* start of SRAM memory */
 	unsigned long	bi_sramsize;	/* size	 of SRAM memory */
+#ifdef CONFIG_AVR32
+	unsigned char   bi_phy_id[4];   /* PHY address for ATAG_ETHERNET */
+	unsigned long   bi_board_number;/* ATAG_BOARDINFO */
+#endif
 #ifdef CONFIG_ARM
 	unsigned long	bi_arm_freq; /* arm frequency */
 	unsigned long	bi_dsp_freq; /* dsp core frequency */
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 11/12] grasshopper: enable generic board
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (9 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 10/12] avr32: add generic board support Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,11/12] " Andreas Bießmann
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 12/12] atstk1002: " Andreas Bießmann
  2015-02-10 19:34 ` [U-Boot] [PATCH v3 0/12] avr32: add " Waldemar Brodkorb
  12 siblings, 1 reply; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
---

Changes in v3: None
Changes in v2: None
Changes in v1: None

 include/configs/grasshopper.h |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/configs/grasshopper.h b/include/configs/grasshopper.h
index 83f0ed2..54eb977 100644
--- a/include/configs/grasshopper.h
+++ b/include/configs/grasshopper.h
@@ -62,6 +62,10 @@
 #define CONFIG_USART_BASE		ATMEL_BASE_USART1
 #define CONFIG_USART_ID			1
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_BOARD_EARLY_INIT_R
+
 /* User serviceable stuff */
 #define CONFIG_CMDLINE_TAG
 #define CONFIG_SETUP_MEMORY_TAGS
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 12/12] atstk1002: enable generic board
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (10 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 11/12] grasshopper: enable generic board Andreas Bießmann
@ 2015-02-06 22:06 ` Andreas Bießmann
  2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,12/12] " Andreas Bießmann
  2015-02-10 19:34 ` [U-Boot] [PATCH v3 0/12] avr32: add " Waldemar Brodkorb
  12 siblings, 1 reply; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-06 22:06 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
---

Changes in v3: None
Changes in v2: None
Changes in v1:
- new since RFC

 include/configs/atstk1002.h |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/configs/atstk1002.h b/include/configs/atstk1002.h
index 9e58238..a9c064a 100644
--- a/include/configs/atstk1002.h
+++ b/include/configs/atstk1002.h
@@ -104,6 +104,10 @@
 #define CONFIG_BOOTP_SUBNETMASK
 #define CONFIG_BOOTP_GATEWAY
 
+/* generic board */
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_BOARD_EARLY_INIT_R
 
 /*
  * Command line configuration.
-- 
1.7.10.4

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

* [U-Boot] [PATCH v3 07/12] common/board_f: factor out reserve_stacks
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 07/12] common/board_f: factor out reserve_stacks Andreas Bießmann
@ 2015-02-07  0:28   ` Simon Glass
  2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,07/12] " Andreas Bießmann
  1 sibling, 0 replies; 30+ messages in thread
From: Simon Glass @ 2015-02-07  0:28 UTC (permalink / raw)
  To: u-boot

On 6 February 2015 at 15:06, Andreas Bie?mann
<andreas.devel@googlemail.com> wrote:
> Introduce arch_reserve_stacks() to tailor gd->start_addr_sp and gd->irq_sp to
> the architecture needs.
>
> Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
> ---
>
> Changes in v3:
> - make arch_reserve_stacks weak and adopt ppc/arm versions

Reviewed-by: Simon Glass <sjg@chromium.org>

Minor nit below.

>
> Changes in v2:
> - new since v1
>
> Changes in v1: None
>
>  arch/arm/lib/Makefile     |    1 +
>  arch/arm/lib/stack.c      |   42 ++++++++++++++++++++++++++++++++++++++++++
>  arch/powerpc/lib/Makefile |    1 +
>  arch/powerpc/lib/stack.c  |   31 +++++++++++++++++++++++++++++++
>  common/board_f.c          |   44 +++++++++-----------------------------------
>  include/common.h          |   18 ++++++++++++++++++
>  6 files changed, 102 insertions(+), 35 deletions(-)
>  create mode 100644 arch/arm/lib/stack.c
>  create mode 100644 arch/powerpc/lib/stack.c
>
> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
> index d74e4b8..da8ed72 100644
> --- a/arch/arm/lib/Makefile
> +++ b/arch/arm/lib/Makefile
> @@ -35,6 +35,7 @@ endif
>  obj-$(CONFIG_SEMIHOSTING) += semihosting.o
>
>  obj-y  += sections.o
> +obj-y  += stack.o
>  ifdef CONFIG_ARM64
>  obj-y  += gic_64.o
>  obj-y  += interrupts_64.o
> diff --git a/arch/arm/lib/stack.c b/arch/arm/lib/stack.c
> new file mode 100644
> index 0000000..cf10a53
> --- /dev/null
> +++ b/arch/arm/lib/stack.c
> @@ -0,0 +1,42 @@
> +/*
> + * Copyright (c) 2015 Andreas Bie?mann <andreas.devel@googlemail.com>
> + *
> + * Copyright (c) 2011 The Chromium OS Authors.
> + * (C) Copyright 2002-2006
> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> + *
> + * (C) Copyright 2002
> + * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
> + * Marius Groeger <mgroeger@sysgo.de>
> + *
> + * SPDX-License-Identifier:    GPL-2.0+
> + */
> +#include <common.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +int arch_reserve_stacks(void)
> +{
> +#ifdef CONFIG_SPL_BUILD
> +       gd->start_addr_sp -= 128;       /* leave 32 words for abort-stack */
> +       gd->irq_sp = gd->start_addr_sp;
> +#else
> +       /* setup stack pointer for exceptions */
> +       gd->irq_sp = gd->start_addr_sp;
> +
> +# if !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",
> +             CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ, gd->start_addr_sp);
> +
> +       /* 8-byte alignment for ARM ABI compliance */
> +       gd->start_addr_sp &= ~0x07;
> +#  endif
> +       /* leave 3 words for abort-stack, plus 1 for alignment */
> +       gd->start_addr_sp -= 16;
> +# endif
> +#endif
> +
> +       return 0;
> +}
> diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile
> index 0f62982..05b22bb 100644
> --- a/arch/powerpc/lib/Makefile
> +++ b/arch/powerpc/lib/Makefile
> @@ -40,6 +40,7 @@ obj-y += extable.o
>  obj-y  += interrupts.o
>  obj-$(CONFIG_CMD_KGDB) += kgdb.o
>  obj-$(CONFIG_CMD_IDE) += ide.o
> +obj-y  += stack.o
>  obj-y  += time.o
>
>  # Don't include the MPC5xxx special memcpy into the
> diff --git a/arch/powerpc/lib/stack.c b/arch/powerpc/lib/stack.c
> new file mode 100644
> index 0000000..1985f03
> --- /dev/null
> +++ b/arch/powerpc/lib/stack.c
> @@ -0,0 +1,31 @@
> +/*
> + * Copyright (c) 2015 Andreas Bie?mann <andreas.devel@googlemail.com>
> + *
> + * Copyright (c) 2011 The Chromium OS Authors.
> + * (C) Copyright 2002-2006
> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> + *
> + * (C) Copyright 2002
> + * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
> + * Marius Groeger <mgroeger@sysgo.de>
> + *
> + * SPDX-License-Identifier:    GPL-2.0+
> + */
> +#include <common.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +int arch_reserve_stacks(void)
> +{
> +       ulong *s;
> +
> +       /* setup stack pointer for exceptions */
> +       gd->irq_sp = gd->start_addr_sp;
> +
> +       /* Clear initial stack frame */
> +       s = (ulong *)gd->start_addr_sp;
> +       *s = 0; /* Terminate back chain */
> +       *++s = 0; /* NULL return address */
> +
> +       return 0;
> +}
> diff --git a/common/board_f.c b/common/board_f.c
> index 7953137..b5e1071 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -573,48 +573,22 @@ static int reserve_fdt(void)
>         return 0;
>  }
>
> -static int reserve_stacks(void)
> +int arch_reserve_stacks(void)
>  {
> -#ifdef CONFIG_SPL_BUILD
> -# ifdef CONFIG_ARM
> -       gd->start_addr_sp -= 128;       /* leave 32 words for abort-stack */
> -       gd->irq_sp = gd->start_addr_sp;
> -# endif
> -#else
> -# ifdef CONFIG_PPC
> -       ulong *s;
> -# endif
> +       return 0;
> +}
>
> -       /* setup stack pointer for exceptions */
> +static int reserve_stacks(void)
> +{
> +       /* make stack pointer 16-byte aligned */
>         gd->start_addr_sp -= 16;
>         gd->start_addr_sp &= ~0xf;
> -       gd->irq_sp = gd->start_addr_sp;
>
>         /*
> -        * Handle architecture-specific things here
> -        * TODO(sjg at chromium.org): Perhaps create arch_reserve_stack()
> -        * to handle this and put in arch/xxx/lib/stack.c
> +        * let the architecture specific code tailor gd->start_addr_sp and

'to tailor'

> +        * gd->irq_sp
>          */
> -# 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",
> -               CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ, gd->start_addr_sp);
> -
> -       /* 8-byte alignment for ARM ABI compliance */
> -       gd->start_addr_sp &= ~0x07;
> -#  endif
> -       /* leave 3 words for abort-stack, plus 1 for alignment */
> -       gd->start_addr_sp -= 16;
> -# elif defined(CONFIG_PPC)
> -       /* Clear initial stack frame */
> -       s = (ulong *) gd->start_addr_sp;
> -       *s = 0; /* Terminate back chain */
> -       *++s = 0; /* NULL return address */
> -# endif /* Architecture specific code */
> -
> -       return 0;
> -#endif
> +       return arch_reserve_stacks();
>  }
>
>  static int display_new_sp(void)
> diff --git a/include/common.h b/include/common.h
> index 97c8f79..994d37b 100644
> --- a/include/common.h
> +++ b/include/common.h
> @@ -252,6 +252,24 @@ int update_flash_size(int flash_size);
>  int arch_early_init_r(void);
>
>  /**
> + * Reserve all necessary stacks
> + *
> + * This is used in generic board init sequence in common/board_f.c. Each
> + * architecture could provide this function to tailor the required stacks.
> + *
> + * On entry gd->start_addr_sp is pointing to the suggested top of the stack.
> + * The callee ensures gd->start_add_sp is 16-byte aligned, so architectures
> + * require only this can leave it untouched.
> + *
> + * On exit gd->start_addr_sp and gd->irq_sp should be set to the respective
> + * positions of the stack. The stack pointer(s) will be set to this later.
> + * gd->irq_sp is only required, if the architecture needs it.
> + *
> + * @return 0 if no error
> + */
> +__weak int arch_reserve_stacks(void);
> +
> +/**
>   * Show the DRAM size in a board-specific way
>   *
>   * This is used by boards to display DRAM information in their own way.
> --
> 1.7.10.4
>

Regards,
Simon

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

* [U-Boot] [PATCH v3 09/12] common/board_r: allocate bootparams
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 09/12] common/board_r: allocate bootparams Andreas Bießmann
@ 2015-02-07  0:28   ` Simon Glass
  2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,09/12] " Andreas Bießmann
  1 sibling, 0 replies; 30+ messages in thread
From: Simon Glass @ 2015-02-07  0:28 UTC (permalink / raw)
  To: u-boot

Hi Andreas,

On 6 February 2015 at 15:06, Andreas Bie?mann
<andreas.devel@googlemail.com> wrote:
> Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>

If you re-issue this for any other reason, please add a commit message...

> ---
>
> Changes in v3: None
> Changes in v2:
> - provide as extra patch, remove from avr32 generic board support
>
> Changes in v1: None
>
>  common/board_r.c |   15 +++++++++++++++
>  1 file changed, 15 insertions(+)

Regards,
Simon

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

* [U-Boot] [PATCH v3 10/12] avr32: add generic board support
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 10/12] avr32: add generic board support Andreas Bießmann
@ 2015-02-07  0:28   ` Simon Glass
  2015-02-08 21:21     ` Andreas Bießmann
  2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,10/12] " Andreas Bießmann
  1 sibling, 1 reply; 30+ messages in thread
From: Simon Glass @ 2015-02-07  0:28 UTC (permalink / raw)
  To: u-boot

Hi Andreas,

On 6 February 2015 at 15:06, Andreas Bie?mann
<andreas.devel@googlemail.com> wrote:
> Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
> ---
> This version still has the mmu_init_r() in common/board_r. Removing this now is
> not that easy ... I'd love to get it in as is and change it later to the
> board_init_f_r() sequence.
>
> Changes in v3:
> - remove unnecessary stack implementation for avr32
> - fix bdinfo output
>
> Changes in v2:
> - remove bootparams allocation, provide as extra patch
> - use the else path in setup_mon_len()
> - provide arch_reserve_stacks() for avr32
> - use the newly introduced dram_init()
>
> Changes in v1:
> - add timer_init in board_r
> - remove extern declaration of mmu_init_r()
>
>  arch/avr32/config.mk            |    3 +++
>  arch/avr32/cpu/u-boot.lds       |    2 ++
>  arch/avr32/include/asm/config.h |    1 +
>  arch/avr32/include/asm/u-boot.h |    7 +++++++
>  arch/avr32/lib/Makefile         |    2 ++
>  arch/avr32/lib/interrupts.c     |    5 +++++
>  common/board_f.c                |    2 +-
>  common/board_r.c                |   13 ++++++++++---
>  common/cmd_bdinfo.c             |    4 ++--
>  include/asm-generic/u-boot.h    |    4 ++++
>  10 files changed, 37 insertions(+), 6 deletions(-)
>
> diff --git a/arch/avr32/config.mk b/arch/avr32/config.mk
> index 469185e..8252f59 100644
> --- a/arch/avr32/config.mk
> +++ b/arch/avr32/config.mk
> @@ -9,6 +9,9 @@ ifeq ($(CROSS_COMPILE),)
>  CROSS_COMPILE := avr32-linux-
>  endif
>
> +# avr32 has generic board support
> +__HAVE_ARCH_GENERIC_BOARD := y
> +
>  CONFIG_STANDALONE_LOAD_ADDR ?= 0x00000000
>
>  PLATFORM_RELFLAGS      += -ffixed-r5 -fPIC -mno-init-got -mrelax
> diff --git a/arch/avr32/cpu/u-boot.lds b/arch/avr32/cpu/u-boot.lds
> index cb29a22..b0180e3 100644
> --- a/arch/avr32/cpu/u-boot.lds
> +++ b/arch/avr32/cpu/u-boot.lds
> @@ -48,9 +48,11 @@ SECTIONS
>         _edata = .;
>
>         .bss (NOLOAD) : {
> +               __bss_start = .;
>                 *(.bss)
>                 *(.bss.*)
>         }
>         . = ALIGN(8);
>         __bss_end = .;
> +       __init_end = .;
>  }
> diff --git a/arch/avr32/include/asm/config.h b/arch/avr32/include/asm/config.h
> index 63056a4..529fe22 100644
> --- a/arch/avr32/include/asm/config.h
> +++ b/arch/avr32/include/asm/config.h
> @@ -8,5 +8,6 @@
>  #define _ASM_CONFIG_H_
>
>  #define CONFIG_NEEDS_MANUAL_RELOC
> +#define CONFIG_SYS_GENERIC_GLOBAL_DATA
>
>  #endif
> diff --git a/arch/avr32/include/asm/u-boot.h b/arch/avr32/include/asm/u-boot.h
> index 232350e..8b047ec 100644
> --- a/arch/avr32/include/asm/u-boot.h
> +++ b/arch/avr32/include/asm/u-boot.h
> @@ -6,6 +6,11 @@
>  #ifndef __ASM_U_BOOT_H__
>  #define __ASM_U_BOOT_H__ 1
>
> +#ifdef CONFIG_SYS_GENERIC_BOARD
> +/* Use the generic board which requires a unified bd_info */
> +#include <asm-generic/u-boot.h>
> +#else
> +
>  typedef struct bd_info {
>         unsigned char           bi_phy_id[4];
>         unsigned long           bi_board_number;
> @@ -22,6 +27,8 @@ typedef struct bd_info {
>  #define bi_memstart bi_dram[0].start
>  #define bi_memsize bi_dram[0].size
>
> +#endif
> +
>  /* For image.h:image_check_target_arch() */
>  #define IH_ARCH_DEFAULT IH_ARCH_AVR32
>
> diff --git a/arch/avr32/lib/Makefile b/arch/avr32/lib/Makefile
> index 5f2d97b..6750913 100644
> --- a/arch/avr32/lib/Makefile
> +++ b/arch/avr32/lib/Makefile
> @@ -8,7 +8,9 @@
>  #
>
>  obj-y  += memset.o
> +ifndef CONFIG_SYS_GENERIC_BOARD
>  obj-y  += board.o
> +endif
>  obj-$(CONFIG_CMD_BOOTM) += bootm.o
>  obj-y  += interrupts.o
>  obj-y  += dram_init.o
> diff --git a/arch/avr32/lib/interrupts.c b/arch/avr32/lib/interrupts.c
> index bacb2d1..5f3a49e 100644
> --- a/arch/avr32/lib/interrupts.c
> +++ b/arch/avr32/lib/interrupts.c
> @@ -7,6 +7,11 @@
>
>  #include <asm/sysreg.h>
>
> +int interrupt_init(void)
> +{
> +       return 0;
> +}
> +
>  void enable_interrupts(void)
>  {
>         asm volatile("csrf      %0" : : "n"(SYSREG_GM_OFFSET));
> diff --git a/common/board_f.c b/common/board_f.c
> index b5e1071..afa3c02 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -883,7 +883,7 @@ static init_fnc_t init_sequence_f[] = {
>  #endif
>         announce_dram_init,
>         /* TODO: unify all these dram functions? */
> -#if defined(CONFIG_ARM) || defined(CONFIG_X86)
> +#if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_AVR32)
>         dram_init,              /* configure available RAM banks */
>  #endif
>  #if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
> diff --git a/common/board_r.c b/common/board_r.c
> index 8e1e9e0..550d863 100644
> --- a/common/board_r.c
> +++ b/common/board_r.c
> @@ -55,6 +55,9 @@
>  #include <dm/root.h>
>  #include <linux/compiler.h>
>  #include <linux/err.h>
> +#ifdef CONFIG_AVR32
> +#include <asm/arch/mmu.h>
> +#endif
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> @@ -498,7 +501,7 @@ static int initr_api(void)
>  #endif
>
>  /* enable exceptions */
> -#ifdef CONFIG_ARM
> +#if defined(CONFIG_ARM) || defined(CONFIG_AVR32)
>  static int initr_enable_interrupts(void)
>  {
>         enable_interrupts();
> @@ -825,10 +828,10 @@ init_fnc_t init_sequence_r[] = {
>         initr_kgdb,
>  #endif
>         interrupt_init,
> -#if defined(CONFIG_ARM)
> +#if defined(CONFIG_ARM) || defined(CONFIG_AVR32)
>         initr_enable_interrupts,
>  #endif
> -#ifdef CONFIG_X86
> +#if defined(CONFIG_X86) || defined(CONFIG_AVR32)
>         timer_init,             /* initialize timer */
>  #endif
>  #if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
> @@ -893,6 +896,10 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
>         int i;
>  #endif
>
> +#ifdef CONFIG_AVR32
> +       mmu_init_r(dest_addr);
> +#endif
> +
>  #if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
>         gd = new_gd;
>  #endif
> diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
> index e6d8a7a..999d026 100644
> --- a/common/cmd_bdinfo.c
> +++ b/common/cmd_bdinfo.c
> @@ -333,8 +333,8 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>         bd_t *bd = gd->bd;
>
>         print_num("boot_params",        (ulong)bd->bi_boot_params);
> -       print_num("memstart",           (ulong)bd->bi_memstart);
> -       print_lnum("memsize",           (u64)bd->bi_memsize);
> +       print_num("memstart",           (ulong)bd->bi_dram[0].start);
> +       print_lnum("memsize",           (u64)bd->bi_dram[0].size);

Can you explain this change please? I'm not sure what is happening here.

>         print_num("flashstart",         (ulong)bd->bi_flashstart);
>         print_num("flashsize",          (ulong)bd->bi_flashsize);
>         print_num("flashoffset",        (ulong)bd->bi_flashoffset);
> diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h
> index aef39d7..a63a87a 100644
> --- a/include/asm-generic/u-boot.h
> +++ b/include/asm-generic/u-boot.h
> @@ -32,6 +32,10 @@ typedef struct bd_info {
>         unsigned long   bi_flashoffset; /* reserved area for startup monitor */
>         unsigned long   bi_sramstart;   /* start of SRAM memory */
>         unsigned long   bi_sramsize;    /* size  of SRAM memory */
> +#ifdef CONFIG_AVR32
> +       unsigned char   bi_phy_id[4];   /* PHY address for ATAG_ETHERNET */
> +       unsigned long   bi_board_number;/* ATAG_BOARDINFO */
> +#endif
>  #ifdef CONFIG_ARM
>         unsigned long   bi_arm_freq; /* arm frequency */
>         unsigned long   bi_dsp_freq; /* dsp core frequency */
> --
> 1.7.10.4
>

Regards,
Simon

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

* [U-Boot] [PATCH v3 10/12] avr32: add generic board support
  2015-02-07  0:28   ` Simon Glass
@ 2015-02-08 21:21     ` Andreas Bießmann
  2015-02-09  4:30       ` Simon Glass
  0 siblings, 1 reply; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-08 21:21 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On 07.02.15 01:28, Simon Glass wrote:
> On 6 February 2015 at 15:06, Andreas Bie?mann
> <andreas.devel@googlemail.com> wrote:
>> Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>> ---
>> This version still has the mmu_init_r() in common/board_r. Removing this now is
>> not that easy ... I'd love to get it in as is and change it later to the
>> board_init_f_r() sequence.
>>
>> Changes in v3:
>> - remove unnecessary stack implementation for avr32
>> - fix bdinfo output
>>
>> Changes in v2:
>> - remove bootparams allocation, provide as extra patch
>> - use the else path in setup_mon_len()
>> - provide arch_reserve_stacks() for avr32
>> - use the newly introduced dram_init()
>>
>> Changes in v1:
>> - add timer_init in board_r
>> - remove extern declaration of mmu_init_r()
>>
>>  arch/avr32/config.mk            |    3 +++
>>  arch/avr32/cpu/u-boot.lds       |    2 ++
>>  arch/avr32/include/asm/config.h |    1 +
>>  arch/avr32/include/asm/u-boot.h |    7 +++++++
>>  arch/avr32/lib/Makefile         |    2 ++
>>  arch/avr32/lib/interrupts.c     |    5 +++++
>>  common/board_f.c                |    2 +-
>>  common/board_r.c                |   13 ++++++++++---
>>  common/cmd_bdinfo.c             |    4 ++--
>>  include/asm-generic/u-boot.h    |    4 ++++
>>  10 files changed, 37 insertions(+), 6 deletions(-)

>> diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
>> index e6d8a7a..999d026 100644
>> --- a/common/cmd_bdinfo.c
>> +++ b/common/cmd_bdinfo.c
>> @@ -333,8 +333,8 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>         bd_t *bd = gd->bd;
>>
>>         print_num("boot_params",        (ulong)bd->bi_boot_params);
>> -       print_num("memstart",           (ulong)bd->bi_memstart);
>> -       print_lnum("memsize",           (u64)bd->bi_memsize);
>> +       print_num("memstart",           (ulong)bd->bi_dram[0].start);
>> +       print_lnum("memsize",           (u64)bd->bi_dram[0].size);
> 
> Can you explain this change please? I'm not sure what is happening here.

avr32 never had bd_t.bi_mem(start|size) members, they where always
defined to bd_t.bi_dram[0].(start|size). Please have a look at
arch/avr32/include/asm/u-boot.h.

When converting to generic board I also have to use the generic bd_t
(which is a mess). Since the current generic board implementation do not
set both bi_mem(start|size) for all architectures I decided to go with
bi_dram[0].(start|size), this will also work with the other boards not
converted yet. To use just the first entry in bi_dram[] and do not loop
over is ok on avr32 since the only SoC available there has just one
SDRAM controller.

If you're Ok with this change I would apply this series with one fix for
'common/board_f: factor out reserve_stacks' and maybe a more descriptive
commit message for 'common/board_r: allocate bootparams' mid of next
week to avr32/master and send a PR. AFAIR the microblaze generic board
conversion depends on at least one patch of this series.

Best regards

Andreas Bie?mann

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

* [U-Boot] [PATCH v3 10/12] avr32: add generic board support
  2015-02-08 21:21     ` Andreas Bießmann
@ 2015-02-09  4:30       ` Simon Glass
  0 siblings, 0 replies; 30+ messages in thread
From: Simon Glass @ 2015-02-09  4:30 UTC (permalink / raw)
  To: u-boot

Hi Andreas,

On 8 February 2015 at 14:21, Andreas Bie?mann <andreas.devel@googlemail.com>
wrote:
>
> Hi Simon,
>
> On 07.02.15 01:28, Simon Glass wrote:
> > On 6 February 2015 at 15:06, Andreas Bie?mann
> > <andreas.devel@googlemail.com> wrote:
> >> Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
> >> ---
> >> This version still has the mmu_init_r() in common/board_r. Removing
this now is
> >> not that easy ... I'd love to get it in as is and change it later to
the
> >> board_init_f_r() sequence.
> >>
> >> Changes in v3:
> >> - remove unnecessary stack implementation for avr32
> >> - fix bdinfo output
> >>
> >> Changes in v2:
> >> - remove bootparams allocation, provide as extra patch
> >> - use the else path in setup_mon_len()
> >> - provide arch_reserve_stacks() for avr32
> >> - use the newly introduced dram_init()
> >>
> >> Changes in v1:
> >> - add timer_init in board_r
> >> - remove extern declaration of mmu_init_r()
> >>
> >> arch/avr32/config.mk | 3 +++
> >> arch/avr32/cpu/u-boot.lds | 2 ++
> >> arch/avr32/include/asm/config.h | 1 +
> >> arch/avr32/include/asm/u-boot.h | 7 +++++++
> >> arch/avr32/lib/Makefile | 2 ++
> >> arch/avr32/lib/interrupts.c | 5 +++++
> >> common/board_f.c | 2 +-
> >> common/board_r.c | 13 ++++++++++---
> >> common/cmd_bdinfo.c | 4 ++--
> >> include/asm-generic/u-boot.h | 4 ++++
> >> 10 files changed, 37 insertions(+), 6 deletions(-)
>
> >> diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
> >> index e6d8a7a..999d026 100644
> >> --- a/common/cmd_bdinfo.c
> >> +++ b/common/cmd_bdinfo.c
> >> @@ -333,8 +333,8 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int
argc, char * const argv[])
> >> bd_t *bd = gd->bd;
> >>
> >> print_num("boot_params", (ulong)bd->bi_boot_params);
> >> - print_num("memstart", (ulong)bd->bi_memstart);
> >> - print_lnum("memsize", (u64)bd->bi_memsize);
> >> + print_num("memstart", (ulong)bd->bi_dram[0].start);
> >> + print_lnum("memsize", (u64)bd->bi_dram[0].size);
> >
> > Can you explain this change please? I'm not sure what is happening here.
>
> avr32 never had bd_t.bi_mem(start|size) members, they where always
> defined to bd_t.bi_dram[0].(start|size). Please have a look at
> arch/avr32/include/asm/u-boot.h.
>
> When converting to generic board I also have to use the generic bd_t
> (which is a mess). Since the current generic board implementation do not
> set both bi_mem(start|size) for all architectures I decided to go with
> bi_dram[0].(start|size), this will also work with the other boards not
> converted yet. To use just the first entry in bi_dram[] and do not loop
> over is ok on avr32 since the only SoC available there has just one
> SDRAM controller.

OK I see. I didn't realise it was avr32-only code.

>
>
> If you're Ok with this change I would apply this series with one fix for
> 'common/board_f: factor out reserve_stacks' and maybe a more descriptive
> commit message for 'common/board_r: allocate bootparams' mid of next
> week to avr32/master and send a PR. AFAIR the microblaze generic board
> conversion depends on at least one patch of this series.

Sounds good to me.

Regards,
Simon

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

* [U-Boot] [PATCH v3 0/12] avr32: add generic board
  2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
                   ` (11 preceding siblings ...)
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 12/12] atstk1002: " Andreas Bießmann
@ 2015-02-10 19:34 ` Waldemar Brodkorb
  12 siblings, 0 replies; 30+ messages in thread
From: Waldemar Brodkorb @ 2015-02-10 19:34 UTC (permalink / raw)
  To: u-boot

Hi Andreas,
Andreas Bie?mann wrote,

> This is the first attempt to add generic board support to avr32 architecture. It
> has at least one relevant part for other manual reloc architectures.
> 
> This series is currently runtime tested on grasshhopper and atstk1002.
> Waldemar, could you please test the ngw100 device? Boards not converted to
> generic board will be removed soon.

I have tested your series on my NGW100. It works fine.
But I think it is not converted to generic board, yet. What need to
be done to convert the NGW100 device?

You can add a Tested-By from me, for your current patch set.

best regards
 Waldemar

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

* [U-Boot] [U-Boot,v3,01/12] avr32: use dlmalloc for DMA buffers
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 01/12] avr32: use dlmalloc for DMA buffers Andreas Bießmann
@ 2015-02-16 20:22   ` Andreas Bießmann
  0 siblings, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:22 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>---
>
>Changes in v3: None
>Changes in v2: None
>Changes in v1: None
>
> arch/avr32/include/asm/dma-mapping.h |    7 ++++-
> arch/avr32/lib/board.c               |   51 ----------------------------------
> include/configs/atngw100.h           |    1 -
> include/configs/atngw100mkii.h       |    1 -
> include/configs/atstk1002.h          |    1 -
> include/configs/atstk1006.h          |    1 -
> include/configs/favr-32-ezkit.h      |    1 -
> include/configs/grasshopper.h        |    1 -
> include/configs/hammerhead.h         |    1 -
> include/configs/mimc200.h            |    1 -
> 10 files changed, 6 insertions(+), 60 deletions(-)

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,02/12] avr32: rename cpu_init() -> arch_cpu_init()
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 02/12] avr32: rename cpu_init() -> arch_cpu_init() Andreas Bießmann
@ 2015-02-16 20:22   ` Andreas Bießmann
  0 siblings, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:22 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>Reviewed-by: Simon Glass <sjg@chromium.org>
>---
>
>Changes in v3: None
>Changes in v2: None
>Changes in v1: None
>
> arch/avr32/cpu/cpu.c            |    2 +-
> arch/avr32/include/asm/u-boot.h |    2 ++
> arch/avr32/lib/board.c          |    2 +-
> 3 files changed, 4 insertions(+), 2 deletions(-)

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,03/12] avr32: factor out cpu_mmc_init()
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 03/12] avr32: factor out cpu_mmc_init() Andreas Bießmann
@ 2015-02-16 20:22   ` Andreas Bießmann
  0 siblings, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:22 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>cpu_mmc_init() is required by the init sequence to have a working MMC interface
>on avr32. This will not be included in the binary if we omit the avr32 board.c
>when building the generic board.
>
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>---
>
>Changes in v3: None
>Changes in v2: None
>Changes in v1:
>- new since RFC
>
> arch/avr32/cpu/Makefile |    1 +
> arch/avr32/cpu/mmc.c    |   16 ++++++++++++++++
> arch/avr32/lib/board.c  |    8 --------
> 3 files changed, 17 insertions(+), 8 deletions(-)
> create mode 100644 arch/avr32/cpu/mmc.c

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,04/12] avr32: rename mmu.h definitions
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 04/12] avr32: rename mmu.h definitions Andreas Bießmann
@ 2015-02-16 20:22   ` Andreas Bießmann
  0 siblings, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:22 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Prefix mmu.h PAGE_xxx definitions with MMU_ in order to prevent a naming
>conflict with other definitions.
>
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>---
>
>Changes in v3: None
>Changes in v2: None
>Changes in v1:
>- new since RFC
>
> arch/avr32/cpu/at32ap700x/mmu.c              |    8 ++++----
> arch/avr32/include/asm/arch-at32ap700x/mmu.h |    6 +++---
> board/atmel/atngw100/atngw100.c              |   12 ++++++------
> board/atmel/atngw100mkii/atngw100mkii.c      |   18 +++++++++---------
> board/atmel/atstk1000/atstk1000.c            |   12 ++++++------
> board/earthlcd/favr-32-ezkit/favr-32-ezkit.c |   12 ++++++------
> board/in-circuit/grasshopper/grasshopper.c   |   12 ++++++------
> board/mimc/mimc200/mimc200.c                 |   18 +++++++++---------
> board/miromico/hammerhead/hammerhead.c       |   12 ++++++------
> 9 files changed, 55 insertions(+), 55 deletions(-)

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,05/12] avr32: convert to dram_init()
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 05/12] avr32: convert to dram_init() Andreas Bießmann
@ 2015-02-16 20:22   ` Andreas Bießmann
  0 siblings, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:22 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>Reviewed-by: Simon Glass <sjg@chromium.org>
>---
>
>Changes in v3: None
>Changes in v2:
>- new since v1
>
>Changes in v1: None
>
> arch/avr32/include/asm/u-boot.h              |    1 +
> arch/avr32/lib/Makefile                      |    1 +
> arch/avr32/lib/board.c                       |   20 ++++++++++----------
> arch/avr32/lib/dram_init.c                   |   17 +++++++++++++++++
> board/atmel/atngw100/atngw100.c              |   20 ++------------------
> board/atmel/atngw100mkii/atngw100mkii.c      |   21 +++------------------
> board/atmel/atstk1000/atstk1000.c            |   21 +++------------------
> board/earthlcd/favr-32-ezkit/favr-32-ezkit.c |   21 +++------------------
> board/in-circuit/grasshopper/grasshopper.c   |   20 ++------------------
> board/mimc/mimc200/mimc200.c                 |   20 ++------------------
> board/miromico/hammerhead/hammerhead.c       |   20 ++------------------
> 11 files changed, 46 insertions(+), 136 deletions(-)
> create mode 100644 arch/avr32/lib/dram_init.c

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,06/12] avr32: use generic gd->start_addr_sp
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 06/12] avr32: use generic gd->start_addr_sp Andreas Bießmann
@ 2015-02-16 20:22   ` Andreas Bießmann
  0 siblings, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:22 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Before avr32 had an extra storage for stack end to have a nice stack printout
>on exception. Remove this extra storage and use generic gd->start_addr_sp
>instead.
>
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>---
>
>Changes in v3:
>- new in v3
>
>Changes in v2: None
>Changes in v1: None
>
> arch/avr32/cpu/exception.c           |    6 +++---
> arch/avr32/include/asm/global_data.h |    1 -
> arch/avr32/lib/board.c               |    2 +-
> 3 files changed, 4 insertions(+), 5 deletions(-)

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,07/12] common/board_f: factor out reserve_stacks
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 07/12] common/board_f: factor out reserve_stacks Andreas Bießmann
  2015-02-07  0:28   ` Simon Glass
@ 2015-02-16 20:23   ` Andreas Bießmann
  1 sibling, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:23 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Introduce arch_reserve_stacks() to tailor gd->start_addr_sp and gd->irq_sp to
>the architecture needs.
>
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>Reviewed-by: Simon Glass <sjg@chromium.org>
>---
>
>Changes in v3:
>- make arch_reserve_stacks weak and adopt ppc/arm versions
>
>Changes in v2:
>- new since v1
>
>Changes in v1: None
>
> arch/arm/lib/Makefile     |    1 +
> arch/arm/lib/stack.c      |   42 ++++++++++++++++++++++++++++++++++++++++++
> arch/powerpc/lib/Makefile |    1 +
> arch/powerpc/lib/stack.c  |   31 +++++++++++++++++++++++++++++++
> common/board_f.c          |   44 +++++++++-----------------------------------
> include/common.h          |   18 ++++++++++++++++++
> 6 files changed, 102 insertions(+), 35 deletions(-)
> create mode 100644 arch/arm/lib/stack.c
> create mode 100644 arch/powerpc/lib/stack.c

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,09/12] common/board_r: allocate bootparams
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 09/12] common/board_r: allocate bootparams Andreas Bießmann
  2015-02-07  0:28   ` Simon Glass
@ 2015-02-16 20:23   ` Andreas Bießmann
  1 sibling, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:23 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>Reviewed-by: Simon Glass <sjg@chromium.org>
>---
>
>Changes in v3: None
>Changes in v2:
>- provide as extra patch, remove from avr32 generic board support
>
>Changes in v1: None
>
> common/board_r.c |   15 +++++++++++++++
> 1 file changed, 15 insertions(+)

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,10/12] avr32: add generic board support
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 10/12] avr32: add generic board support Andreas Bießmann
  2015-02-07  0:28   ` Simon Glass
@ 2015-02-16 20:23   ` Andreas Bießmann
  1 sibling, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:23 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>---
>This version still has the mmu_init_r() in common/board_r. Removing this now is
>not that easy ... I'd love to get it in as is and change it later to the
>board_init_f_r() sequence.
>
>Changes in v3:
>- remove unnecessary stack implementation for avr32
>- fix bdinfo output
>
>Changes in v2:
>- remove bootparams allocation, provide as extra patch
>- use the else path in setup_mon_len()
>- provide arch_reserve_stacks() for avr32
>- use the newly introduced dram_init()
>
>Changes in v1:
>- add timer_init in board_r
>- remove extern declaration of mmu_init_r()
>
> arch/avr32/config.mk            |    3 +++
> arch/avr32/cpu/u-boot.lds       |    2 ++
> arch/avr32/include/asm/config.h |    1 +
> arch/avr32/include/asm/u-boot.h |    7 +++++++
> arch/avr32/lib/Makefile         |    2 ++
> arch/avr32/lib/interrupts.c     |    5 +++++
> common/board_f.c                |    2 +-
> common/board_r.c                |   13 ++++++++++---
> common/cmd_bdinfo.c             |    4 ++--
> include/asm-generic/u-boot.h    |    4 ++++
> 10 files changed, 37 insertions(+), 6 deletions(-)

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,11/12] grasshopper: enable generic board
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 11/12] grasshopper: enable generic board Andreas Bießmann
@ 2015-02-16 20:23   ` Andreas Bießmann
  0 siblings, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:23 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>---
>
>Changes in v3: None
>Changes in v2: None
>Changes in v1: None
>
> include/configs/grasshopper.h |    4 ++++
> 1 file changed, 4 insertions(+)

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

* [U-Boot] [U-Boot,v3,12/12] atstk1002: enable generic board
  2015-02-06 22:06 ` [U-Boot] [PATCH v3 12/12] atstk1002: " Andreas Bießmann
@ 2015-02-16 20:23   ` Andreas Bießmann
  0 siblings, 0 replies; 30+ messages in thread
From: Andreas Bießmann @ 2015-02-16 20:23 UTC (permalink / raw)
  To: u-boot

Dear Andreas Devel,

Andreas Devel <andreas.devel@googlemail.com> writes:
>Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
>---
>
>Changes in v3: None
>Changes in v2: None
>Changes in v1:
>- new since RFC
>
> include/configs/atstk1002.h |    4 ++++
> 1 file changed, 4 insertions(+)

applied to u-boot-avr32/master, thanks!

Best regards,
Andreas Bie?mann

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

end of thread, other threads:[~2015-02-16 20:23 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-06 22:06 [U-Boot] [PATCH v3 0/12] avr32: add generic board Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 01/12] avr32: use dlmalloc for DMA buffers Andreas Bießmann
2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,01/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 02/12] avr32: rename cpu_init() -> arch_cpu_init() Andreas Bießmann
2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,02/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 03/12] avr32: factor out cpu_mmc_init() Andreas Bießmann
2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,03/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 04/12] avr32: rename mmu.h definitions Andreas Bießmann
2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,04/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 05/12] avr32: convert to dram_init() Andreas Bießmann
2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,05/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 06/12] avr32: use generic gd->start_addr_sp Andreas Bießmann
2015-02-16 20:22   ` [U-Boot] [U-Boot,v3,06/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 07/12] common/board_f: factor out reserve_stacks Andreas Bießmann
2015-02-07  0:28   ` Simon Glass
2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,07/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 08/12] common/board_r: manual relocation for cmd table Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 09/12] common/board_r: allocate bootparams Andreas Bießmann
2015-02-07  0:28   ` Simon Glass
2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,09/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 10/12] avr32: add generic board support Andreas Bießmann
2015-02-07  0:28   ` Simon Glass
2015-02-08 21:21     ` Andreas Bießmann
2015-02-09  4:30       ` Simon Glass
2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,10/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 11/12] grasshopper: enable generic board Andreas Bießmann
2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,11/12] " Andreas Bießmann
2015-02-06 22:06 ` [U-Boot] [PATCH v3 12/12] atstk1002: " Andreas Bießmann
2015-02-16 20:23   ` [U-Boot] [U-Boot,v3,12/12] " Andreas Bießmann
2015-02-10 19:34 ` [U-Boot] [PATCH v3 0/12] avr32: add " Waldemar Brodkorb

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.