* [PATCH V2] avr32: add ATAG_BOARDINFO
@ 2011-04-13 8:07 Andreas Bießmann
2011-04-13 10:02 ` Andreas Bießmann
0 siblings, 1 reply; 2+ messages in thread
From: Andreas Bießmann @ 2011-04-13 8:07 UTC (permalink / raw)
To: kernel; +Cc: Hans-Christian Egtvedt, Andreas Bießmann, open list
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>
---
Changes in V2:
- add more detailed explenation
- move u32 board_number from head of setup.c directely before usage
- add explenation in front of u32 board_number declaration
- add extern u32 board_number to setup.h
arch/avr32/include/asm/setup.h | 9 +++++++++
arch/avr32/kernel/setup.c | 15 +++++++++++++++
2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/arch/avr32/include/asm/setup.h b/arch/avr32/include/asm/setup.h
index ff5b7cf..160543d 100644
--- a/arch/avr32/include/asm/setup.h
+++ b/arch/avr32/include/asm/setup.h
@@ -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 {
@@ -102,6 +109,7 @@ struct tag {
struct tag_cmdline cmdline;
struct tag_clock clock;
struct tag_ethernet ethernet;
+ struct tag_boardinfo boardinfo;
} u;
};
@@ -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);
diff --git a/arch/avr32/kernel/setup.c b/arch/avr32/kernel/setup.c
index 5c70839..bb0974c 100644
--- a/arch/avr32/kernel/setup.c
+++ b/arch/avr32/kernel/setup.c
@@ -391,6 +391,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
* declarations.
--
1.7.2.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH V2] avr32: add ATAG_BOARDINFO
2011-04-13 8:07 [PATCH V2] avr32: add ATAG_BOARDINFO Andreas Bießmann
@ 2011-04-13 10:02 ` Andreas Bießmann
0 siblings, 0 replies; 2+ messages in thread
From: Andreas Bießmann @ 2011-04-13 10:02 UTC (permalink / raw)
To: Andreas Bießmann; +Cc: kernel, Hans-Christian Egtvedt, open list
Am 13.04.2011 10:07, schrieb Andreas Bießmann:
> 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.
Tested with mainline u-boot plus patch
http://article.gmane.org/gmane.comp.boot-loaders.u-boot/97573 on atstk1002.
regards
Andreas Bießmann
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-04-13 10:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-13 8:07 [PATCH V2] avr32: add ATAG_BOARDINFO Andreas Bießmann
2011-04-13 10:02 ` Andreas Bießmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).