[U-Boot] [PATCH v2 1/7] microblaze: Add support for device tree driven board configuration
Stephan Linz
linz at li-pro.net
Tue Aug 7 22:10:34 CEST 2012
Am Montag, den 06.08.2012, 09:46 +0200 schrieb Michal Simek:
> This is minimum code required to be able to use device-tree
> for u-boot initialization.
> Currently only for device driver initialization.
>
> Linker script change ensures DTB to be aligned
> for both options CONFIG_OF_EMBED and CONFIG_OF_SEPARATE.
>
> Signed-off-by: Michal Simek <monstr at monstr.eu>
> CC: Simon Glass <sjg at chromium.org>
>
Acked-by: Stephan Linz <linz at li-pro.net>
Tested with AXI systems on Avnet S6LX150T and S6LX9 micro-evaluation.
> ---
> v2: Show message about DTB address in bootlog
> ---
> arch/microblaze/config.mk | 2 ++
> arch/microblaze/cpu/u-boot.lds | 1 +
> arch/microblaze/include/asm/global_data.h | 1 +
> arch/microblaze/lib/board.c | 24 ++++++++++++++++++++++++
> 4 files changed, 28 insertions(+), 0 deletions(-)
>
> diff --git a/arch/microblaze/config.mk b/arch/microblaze/config.mk
> index aca79e2..b4935f0 100644
> --- a/arch/microblaze/config.mk
> +++ b/arch/microblaze/config.mk
> @@ -31,3 +31,5 @@ CONFIG_STANDALONE_LOAD_ADDR ?= 0x80F00000
> PLATFORM_CPPFLAGS += -ffixed-r31 -D__microblaze__
>
> LDSCRIPT ?= $(SRCTREE)/$(CPUDIR)/u-boot.lds
> +
> +CONFIG_ARCH_DEVICE_TREE := microblaze
> diff --git a/arch/microblaze/cpu/u-boot.lds b/arch/microblaze/cpu/u-boot.lds
> index ee41145..d033a28 100644
> --- a/arch/microblaze/cpu/u-boot.lds
> +++ b/arch/microblaze/cpu/u-boot.lds
> @@ -45,6 +45,7 @@ SECTIONS
> .data ALIGN(0x4):
> {
> __data_start = .;
> + dts/libdts.o (.data)
> *(.data)
> __data_end = .;
> }
> diff --git a/arch/microblaze/include/asm/global_data.h b/arch/microblaze/include/asm/global_data.h
> index 6e8537c..e802e4e 100644
> --- a/arch/microblaze/include/asm/global_data.h
> +++ b/arch/microblaze/include/asm/global_data.h
> @@ -43,6 +43,7 @@ typedef struct global_data {
> unsigned long precon_buf_idx; /* Pre-Console buffer index */
> #endif
> unsigned long env_addr; /* Address of Environment struct */
> + const void *fdt_blob; /* Our device tree, NULL if none */
> unsigned long env_valid; /* Checksum of Environment valid? */
> unsigned long fb_base; /* base address of frame buffer */
> void **jt; /* jump table */
> diff --git a/arch/microblaze/lib/board.c b/arch/microblaze/lib/board.c
> index b80250a..942e18c 100644
> --- a/arch/microblaze/lib/board.c
> +++ b/arch/microblaze/lib/board.c
> @@ -34,6 +34,7 @@
> #include <net.h>
> #include <asm/processor.h>
> #include <asm/microblaze_intc.h>
> +#include <fdtdec.h>
>
> DECLARE_GLOBAL_DATA_PTR;
>
> @@ -63,6 +64,9 @@ typedef int (init_fnc_t) (void);
>
> init_fnc_t *init_sequence[] = {
> env_init,
> +#ifdef CONFIG_OF_CONTROL
> + fdtdec_check_fdt,
> +#endif
> serial_init,
> console_init_f,
> #ifdef CONFIG_SYS_GPIO_0
> @@ -103,6 +107,17 @@ void board_init (void)
>
> monitor_flash_len = __end - __text_start;
>
> +#ifdef CONFIG_OF_EMBED
> + /* Get a pointer to the FDT */
> + gd->fdt_blob = _binary_dt_dtb_start;
> +#elif defined CONFIG_OF_SEPARATE
> + /* FDT is at end of image */
> + gd->fdt_blob = (void *)__end;
> +#endif
> + /* Allow the early environment to override the fdt address */
> + gd->fdt_blob = (void *)getenv_ulong("fdtcontroladdr", 16,
> + (uintptr_t)gd->fdt_blob);
> +
> /*
> * The Malloc area is immediately below the monitor copy in DRAM
> * aka CONFIG_SYS_MONITOR_BASE - Note there is no need for reloc_off
> @@ -121,6 +136,15 @@ void board_init (void)
> }
> }
>
> +#ifdef CONFIG_OF_CONTROL
> + /* For now, put this check after the console is ready */
> + if (fdtdec_prepare_fdt()) {
> + panic("** CONFIG_OF_CONTROL defined but no FDT - please see "
> + "doc/README.fdt-control");
> + } else
> + printf("DTB: 0x%x\n", (u32)gd->fdt_blob);
> +#endif
> +
> puts ("SDRAM :\n");
> printf ("\t\tIcache:%s\n", icache_status() ? "ON" : "OFF");
> printf ("\t\tDcache:%s\n", dcache_status() ? "ON" : "OFF");
--
Viele Grüße,
Stephan Linz
______________________________________________________________________________
MB-Ref: http://www.li-pro.de/xilinx_mb:mbref:start
OpenDCC: http://www.li-pro.net/opendcc.phtml
PC/M: http://www.li-pro.net/pcm.phtml
Sourceforge: http://sourceforge.net/users/slz
Gitorious: https://gitorious.org/~slz
More information about the U-Boot
mailing list