Skip to content

Commit

Permalink
avr32: add ATAG_BOARDINFO
Browse files Browse the repository at this point in the history
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: Andreas Bießmann <biessmann@corscience.de>
Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
  • Loading branch information
Andreas Bießmann authored and Hans-Christian Egtvedt committed Apr 13, 2011
1 parent c7d8763 commit 24a1a47
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
9 changes: 9 additions & 0 deletions arch/avr32/include/asm/setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,13 @@ struct tag_ethernet {

#define ETH_INVALID_PHY 0xff

/* board information */
#define ATAG_BOARDINFO 0x54410008

struct tag_boardinfo {
u32 board_number;
};

struct tag {
struct tag_header hdr;
union {
Expand All @@ -102,6 +109,7 @@ struct tag {
struct tag_cmdline cmdline;
struct tag_clock clock;
struct tag_ethernet ethernet;
struct tag_boardinfo boardinfo;
} u;
};

Expand All @@ -128,6 +136,7 @@ extern struct tag *bootloader_tags;

extern resource_size_t fbmem_start;
extern resource_size_t fbmem_size;
extern u32 board_number;

void setup_processor(void);

Expand Down
15 changes: 15 additions & 0 deletions arch/avr32/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,21 @@ static int __init parse_tag_clock(struct tag *tag)
}
__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
* tag table is built by the linker from all the __tagtable
Expand Down

0 comments on commit 24a1a47

Please sign in to comment.