diff options
| author | Andreas Bießmann <biessmann@corscience.de> | 2011-04-12 23:25:41 +0000 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2011-05-18 07:56:54 +0200 | 
| commit | 24890f11980eb70d835ca7e0b00d32284d8f546c (patch) | |
| tree | cac4db47fedfc656a6236f7a978a4e70ae436ab9 | |
| parent | a950c81851dbe128176859bfebbc2cf51955daed (diff) | |
| download | olio-uboot-2014.01-24890f11980eb70d835ca7e0b00d32284d8f546c.tar.xz olio-uboot-2014.01-24890f11980eb70d835ca7e0b00d32284d8f546c.zip | |
avr32: add ATAG_BOARDINFO
This patch adds a new ATAG_BORADINFO to U-Boot. This tag is intended to hand
over the bd->bi_board_number to the linux kernel for early stage board
information like a board revision or other kind of board specific decisions
necessary before the linux peripherial drivers are up.
Signed-off-by: Andreas Bießmann <biessmann@corscience.de>
| -rw-r--r-- | arch/avr32/include/asm/setup.h | 8 | ||||
| -rw-r--r-- | arch/avr32/lib/bootm.c | 11 | 
2 files changed, 19 insertions, 0 deletions
| diff --git a/arch/avr32/include/asm/setup.h b/arch/avr32/include/asm/setup.h index e6ef8d6b5..7f5d88344 100644 --- a/arch/avr32/include/asm/setup.h +++ b/arch/avr32/include/asm/setup.h @@ -107,6 +107,13 @@ struct tag_ethernet {  #define AETH_INVALID_PHY	0xff +/* board information information */ +#define ATAG_BOARDINFO	0x54410008 + +struct tag_boardinfo { +	u32	board_number; +}; +  struct tag {  	struct tag_header hdr;  	union { @@ -115,6 +122,7 @@ struct tag {  		struct tag_cmdline cmdline;  		struct tag_clock clock;  		struct tag_ethernet ethernet; +		struct tag_boardinfo boardinfo;  	} u;  }; diff --git a/arch/avr32/lib/bootm.c b/arch/avr32/lib/bootm.c index 8a47cfeb4..c9a55ffb2 100644 --- a/arch/avr32/lib/bootm.c +++ b/arch/avr32/lib/bootm.c @@ -165,6 +165,16 @@ static struct tag *setup_ethernet_tags(struct tag *params)  	return params;  } +static struct tag *setup_boardinfo_tag(struct tag *params) +{ +	params->hdr.tag = ATAG_BOARDINFO; +	params->hdr.size = tag_size(tag_boardinfo); + +	params->u.boardinfo.board_number = gd->bd->bi_board_number; + +	return tag_next(params); +} +  static void setup_end_tag(struct tag *params)  {  	params->hdr.tag = ATAG_NONE; @@ -195,6 +205,7 @@ int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *ima  	params = setup_commandline_tag(params, commandline);  	params = setup_clock_tags(params);  	params = setup_ethernet_tags(params); +	params = setup_boardinfo_tag(params);  	setup_end_tag(params);  	printf("\nStarting kernel at %p (params at %p)...\n\n", |