public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Stephan Linz <linz@li-pro.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 1/7] microblaze: Add support for device tree driven board configuration
Date: Tue, 07 Aug 2012 22:10:34 +0200	[thread overview]
Message-ID: <1344370234.29456.86.camel@keto> (raw)
In-Reply-To: <1344239199-11445-1-git-send-email-monstr@monstr.eu>

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@monstr.eu>
> CC: Simon Glass <sjg@chromium.org>
> 

Acked-by: Stephan Linz <linz@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

  parent reply	other threads:[~2012-08-07 20:10 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-06  7:46 [U-Boot] [PATCH v2 1/7] microblaze: Add support for device tree driven board configuration Michal Simek
2012-08-06  7:46 ` [U-Boot] [PATCH v2 2/7] microblaze: board: Remove compilation warning Michal Simek
2012-08-07 20:10   ` Stephan Linz
2012-08-06  7:46 ` [U-Boot] [PATCH v2 3/7] microblaze: intc: Registering interrupt should return value Michal Simek
2012-08-07 20:10   ` Stephan Linz
2012-08-08  8:27     ` Michal Simek
2012-08-08 17:47       ` Stephan Linz
2012-08-06  7:46 ` [U-Boot] [PATCH v2 4/7] microblaze: intc: Coding style cleanup Michal Simek
2012-08-07 20:10   ` Stephan Linz
2012-08-06  7:46 ` [U-Boot] [PATCH v2 5/7] microblaze: timer: Prepare for device-tree initialization Michal Simek
2012-08-07 20:10   ` Stephan Linz
2012-08-08  8:27     ` Michal Simek
2012-08-06  7:46 ` [U-Boot] [PATCH v2 6/7] microblaze: Clean microblaze initialization Michal Simek
2012-08-07 20:10   ` Stephan Linz
2012-08-06  7:46 ` [U-Boot] [PATCH v2 7/7] microblaze: board: Use bi_flashstart instead of CONFIG_SYS_FLASH_BASE Michal Simek
2012-08-07 20:10   ` Stephan Linz
2012-08-07 20:10 ` Stephan Linz [this message]
2012-08-10  7:16   ` [U-Boot] [PATCH v2 1/7] microblaze: Add support for device tree driven board configuration Michal Simek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1344370234.29456.86.camel@keto \
    --to=linz@li-pro.net \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox