summaryrefslogtreecommitdiff
path: root/payloads
diff options
context:
space:
mode:
authorStephen Barber <smbarber@chromium.org>2015-03-11 15:48:08 -0700
committerPatrick Georgi <pgeorgi@google.com>2015-04-22 08:46:37 +0200
commitda262a6388dec9a943052823203a44e4e5b69e5f (patch)
treed9498aeab11f8c91b7004e5a431ffe1cd892244e /payloads
parent30773d23bbf3e032bd25f993b6541ffe20e5c0bf (diff)
libpayload: cros: add serial number from coreboot table
Add serial number to lib_sysinfo from coreboot table. BRANCH=none BUG=chrome-os-partner:37813 TEST=ryu boots and /proc/device-tree/firmware/android is populated with "compatible", "hardware", and "serialno" properties Change-Id: I565b332a16b177c51907ffab7976ebd7a665aaaf Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 5535119f5d499b04bdc178c3040241d2872c4e13 Original-Change-Id: Ie2e222780d1577689a1cbf76ae8514c74fc469f4 Original-Signed-off-by: Stephen Barber <smbarber@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/259140 Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: http://review.coreboot.org/9881 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'payloads')
-rw-r--r--payloads/libpayload/include/coreboot_tables.h3
-rw-r--r--payloads/libpayload/include/sysinfo.h1
-rw-r--r--payloads/libpayload/libc/coreboot.c3
3 files changed, 7 insertions, 0 deletions
diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h
index c46fbf9227..649cc2bb07 100644
--- a/payloads/libpayload/include/coreboot_tables.h
+++ b/payloads/libpayload/include/coreboot_tables.h
@@ -256,6 +256,9 @@ struct cb_spi_flash {
uint32_t erase_cmd;
};
+#define CB_TAG_SERIALNO 0x002a
+#define CB_MAX_SERIALNO_LENGTH 32
+
#define CB_TAG_CMOS_OPTION_TABLE 0x00c8
struct cb_cmos_option_table {
u32 tag;
diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h
index ec8a31c6b6..de8b0feaea 100644
--- a/payloads/libpayload/include/sysinfo.h
+++ b/payloads/libpayload/include/sysinfo.h
@@ -91,6 +91,7 @@ struct sysinfo_t {
struct cb_gpio gpios[SYSINFO_MAX_GPIOS];
int num_macs;
struct mac_address macs[SYSINFO_MAX_MACS];
+ char *serialno;
#endif
unsigned long *mbtable; /** Pointer to the multiboot table */
diff --git a/payloads/libpayload/libc/coreboot.c b/payloads/libpayload/libc/coreboot.c
index 5999e86856..999465cb82 100644
--- a/payloads/libpayload/libc/coreboot.c
+++ b/payloads/libpayload/libc/coreboot.c
@@ -333,6 +333,9 @@ int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
case CB_TAG_MAC_ADDRS:
cb_parse_mac_addresses(ptr, info);
break;
+ case CB_TAG_SERIALNO:
+ cb_parse_string(ptr, &info->serialno);
+ break;
#endif
case CB_TAG_TIMESTAMPS:
cb_parse_tstamp(ptr, info);