Commit 24a1a475 authored by Andreas Bießmann's avatar Andreas Bießmann Committed by Hans-Christian Egtvedt

avr32: add ATAG_BOARDINFO

The ATAG_BOARDINFO is intended to hand over the information
bd->bi_board_number from u-boot to the kernel.

This piece of information can be used to implement some kind of board
identification while booting the kernel. Therefore it is placed in .initdata
section and can be accessed via the new symbol board_number only while
initializing the kernel.
Signed-off-by: default avatarAndreas Bießmann <biessmann@corscience.de>
Signed-off-by: default avatarHans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
parent c7d87632
...@@ -94,6 +94,13 @@ struct tag_ethernet { ...@@ -94,6 +94,13 @@ struct tag_ethernet {
#define ETH_INVALID_PHY 0xff #define ETH_INVALID_PHY 0xff
/* board information */
#define ATAG_BOARDINFO 0x54410008
struct tag_boardinfo {
u32 board_number;
};
struct tag { struct tag {
struct tag_header hdr; struct tag_header hdr;
union { union {
...@@ -102,6 +109,7 @@ struct tag { ...@@ -102,6 +109,7 @@ struct tag {
struct tag_cmdline cmdline; struct tag_cmdline cmdline;
struct tag_clock clock; struct tag_clock clock;
struct tag_ethernet ethernet; struct tag_ethernet ethernet;
struct tag_boardinfo boardinfo;
} u; } u;
}; };
...@@ -128,6 +136,7 @@ extern struct tag *bootloader_tags; ...@@ -128,6 +136,7 @@ extern struct tag *bootloader_tags;
extern resource_size_t fbmem_start; extern resource_size_t fbmem_start;
extern resource_size_t fbmem_size; extern resource_size_t fbmem_size;
extern u32 board_number;
void setup_processor(void); void setup_processor(void);
......
...@@ -390,6 +390,21 @@ static int __init parse_tag_clock(struct tag *tag) ...@@ -390,6 +390,21 @@ static int __init parse_tag_clock(struct tag *tag)
} }
__tagtable(ATAG_CLOCK, parse_tag_clock); __tagtable(ATAG_CLOCK, parse_tag_clock);
/*
* The board_number correspond to the bd->bi_board_number in U-Boot. This
* parameter is only available during initialisation and can be used in some
* kind of board identification.
*/
u32 __initdata board_number;
static int __init parse_tag_boardinfo(struct tag *tag)
{
board_number = tag->u.boardinfo.board_number;
return 0;
}
__tagtable(ATAG_BOARDINFO, parse_tag_boardinfo);
/* /*
* Scan the tag table for this tag, and call its parse function. The * Scan the tag table for this tag, and call its parse function. The
* tag table is built by the linker from all the __tagtable * tag table is built by the linker from all the __tagtable
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment