rpi: set board serial number in environment
Subsystems (4)
PATCH 1/1 rpi: set board serial number in environment
Gets propagated into the device tree and then into /proc/cpuinfo where users often expect it.
Signed-off-by Lubomir Rintel <[email protected]>
--- arch/arm/mach-bcm283x/include/mach/mbox.h | 11 +++++++++++ board/raspberrypi/rpi/rpi.c | 33 +++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+)
arch/arm/mach-bcm283x/include/mach/mbox.h +11 -0
@@ -150,6 +150,17 @@ struct bcm2835_mbox_tag_get_mac_address { } body; }; +#define BCM2835_MBOX_TAG_GET_BOARD_SERIAL 0x00010004 + +struct bcm2835_mbox_tag_get_board_serial { +struct bcm2835_mbox_tag_hdr tag_hdr; +union { +struct __packed { +u64 serial; + } resp; + } body; +}; +#define BCM2835_MBOX_TAG_GET_ARM_MEMORY 0x00010005struct bcm2835_mbox_tag_get_arm_mem {
board/raspberrypi/rpi/rpi.c +33 -0
@@ -5,6 +5,7 @@*/ #include <common.h> +#include <inttypes.h> #include <config.h> #include <dm.h> #include <fdt_support.h>
@@ -57,6 +58,12 @@ struct msg_get_board_rev {u32 end_tag; }; +struct msg_get_board_serial { +struct bcm2835_mbox_hdr hdr; +struct bcm2835_mbox_tag_get_board_serial get_board_serial; +u32 end_tag; +}; +struct msg_get_mac_address {struct bcm2835_mbox_hdr hdr;struct bcm2835_mbox_tag_get_mac_address get_mac_address;
@@ -288,6 +295,30 @@ static void set_board_info(void) }#endif /* CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG */ +static void set_serial_number (void ) +{ + ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_board_serial, msg, 1); +int ret; +char serial_string[17 ] = {0 }; + +if (getenv ("serial#" )) +return ; + +BCM2835_MBOX_INIT_HDR (msg); +BCM2835_MBOX_INIT_TAG_NO_REQ (&msg->get_board_serial,GET_BOARD_SERIAL ); + + ret =bcm2835_mbox_call_prop (BCM2835_MBOX_PROP_CHAN , &msg->hdr); +if (ret) { +printf ("bcm2835: Could not query board serial\n" ); +/* Ignore error; not critical */ +return ; + } + +snprintf (serial_string,sizeof (serial_string),"%016" PRIx64, + msg->get_board_serial.body.resp.serial); +setenv ("serial#" , serial_string); +} +int misc_init_r (void ) {set_fdtfile ();
@@ -295,6 +326,8 @@ int misc_init_r(void)#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG set_board_info ();#endif +set_serial_number (); +return 0 ; }
Signature · 1 line
2.5.0
PATCH 1/1 rpi: set board serial number in environment
Quoted 2 lines · Lubomir Rintel
Gets propagated into the device tree and then into
/proc/cpuinfowhere users often expect it.
Tested-by Stephen Warren <[email protected]>
(on qemu-0xabu at least)
Reviewed-by Stephen Warren <[email protected]>
Quoted 6 lines · Lubomir Rintel
Gets propagated into the device tree and then into
/proc/cpuinfowhere users often expect it.Signed-off-by Lubomir Rintel <[email protected]>Tested-by Stephen Warren <[email protected]>Reviewed-by Stephen Warren <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160225/a693ba56/attachment.sig>