summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/include/asm/armlinux.h4
-rw-r--r--arch/arm/lib/armlinux.c19
2 files changed, 23 insertions, 0 deletions
diff --git a/arch/arm/include/asm/armlinux.h b/arch/arm/include/asm/armlinux.h
index f4104fb164..a92d4c1b93 100644
--- a/arch/arm/include/asm/armlinux.h
+++ b/arch/arm/include/asm/armlinux.h
@@ -7,6 +7,7 @@ void armlinux_set_bootparams(void *params);
void armlinux_set_architecture(int architecture);
void armlinux_add_dram(struct device_d *dev);
void armlinux_set_revision(unsigned int);
+void armlinux_set_serial(u64);
#else
static inline void armlinux_set_bootparams(void *params)
{
@@ -24,6 +25,9 @@ static inline void armlinux_set_revision(unsigned int)
{
}
+void armlinux_set_serial(u64)
+{
+}
#endif
#endif /* __ARCH_ARMLINUX_H */
diff --git a/arch/arm/lib/armlinux.c b/arch/arm/lib/armlinux.c
index 17ae057593..040fd346bf 100644
--- a/arch/arm/lib/armlinux.c
+++ b/arch/arm/lib/armlinux.c
@@ -46,6 +46,7 @@ static int armlinux_architecture = 0;
static void *armlinux_bootparams = NULL;
static unsigned int system_rev;
+static u64 system_serial;
static void setup_start_tag(void)
{
@@ -121,6 +122,19 @@ static void setup_revision_tag(void)
}
}
+static void setup_serial_tag(void)
+{
+ if (system_serial) {
+ params->hdr.tag = ATAG_SERIAL;
+ params->hdr.size = tag_size(tag_serialnr);
+
+ params->u.serialnr.low = system_serial & 0xffffffff;
+ params->u.serialnr.high = system_serial >> 32;
+
+ params = tag_next(params);
+ }
+}
+
#if 0
static void setup_initrd_tag(ulong initrd_start, ulong initrd_end)
{
@@ -155,6 +169,7 @@ static void setup_tags(void)
setup_initrd_tag (initrd_start, initrd_end);
#endif
setup_revision_tag();
+ setup_serial_tag();
setup_end_tag();
printf("commandline: %s\n"
@@ -186,6 +201,10 @@ void armlinux_set_revision(unsigned int rev)
system_rev = rev;
}
+void armlinux_set_serial(u64 serial)
+{
+ system_serial = serial;
+}
#ifdef CONFIG_CMD_BOOTM
int do_bootm_linux(struct image_data *data)