* [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] [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] [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] [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] [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] [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] [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] [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] [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] [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] [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 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] [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] [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 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] [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] [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 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] [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] [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 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