diff options
author | Fang, Yang A <yang.a.fang@intel.com> | 2016-01-28 16:52:33 -0800 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2016-02-09 13:21:39 +0100 |
commit | 16ff85971f67d436d1375a86a3f5221b6ba9ee63 (patch) | |
tree | 59051c83e2c3468bc7430db2efb59f13c7ae0940 /src/lib | |
parent | 0165038561c5cfe7165445a56143aa6df3eae4f8 (diff) | |
download | coreboot-16ff85971f67d436d1375a86a3f5221b6ba9ee63.tar.xz |
nhlt: add api to override oem_id and oem_table_id of acpi_header_t
This patch added nhlt_soc_serialize_oem_overrides and
nhlt_serilalize_oem_overrides to be able to override oem_id and
oem_table_id.board file can pass specific string by calling
nhlt_soc_serialize_oem_overrides
kernel use these two fields to construct a topology binary name
if the designate file is not found a default dfw_sst.bin will be used
it is optional.
BUG=chrome-os-partner:49570
BRANCH=glados
TEST=Build & Booted kunimitsu board. Verified that kernel
can read new strings.
Change-Id: I00b64fb8bb63de601d3116e0b8941057c1efa230
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 374ce08b2d8a2f4e5dd7f51eacb505dbb77fd171
Original-Change-Id: I03623c8ac81efb5a5ea3ec9c6cd604d2e9294022
Original-Signed-off-by: Fang, Yang A <yang.a.fang@intel.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/322860
Original-Commit-Ready: Yang Fang <yang.a.fang@intel.com>
Original-Tested-by: Yang Fang <yang.a.fang@intel.com>
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/13602
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/nhlt.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/lib/nhlt.c b/src/lib/nhlt.c index 4fa4a0c2c1..11a397ca8e 100644 --- a/src/lib/nhlt.c +++ b/src/lib/nhlt.c @@ -389,9 +389,17 @@ static void nhlt_serialize_endpoints(struct nhlt *nhlt, struct cursor *cur) uintptr_t nhlt_serialize(struct nhlt *nhlt, uintptr_t acpi_addr) { + return nhlt_serialize_oem_overrides(nhlt, acpi_addr, NULL, NULL); +} + +uintptr_t nhlt_serialize_oem_overrides(struct nhlt *nhlt, + uintptr_t acpi_addr, const char *oem_id, const char *oem_table_id) +{ struct cursor cur; acpi_header_t *header; size_t sz; + size_t oem_id_len; + size_t oem_table_id_len; printk(BIOS_DEBUG, "ACPI: * NHLT\n"); @@ -403,8 +411,18 @@ uintptr_t nhlt_serialize(struct nhlt *nhlt, uintptr_t acpi_addr) memcpy(header->signature, "NHLT", 4); write_le32(&header->length, sz); write_le8(&header->revision, 5); - memcpy(header->oem_id, OEM_ID, 6); - memcpy(header->oem_table_id, ACPI_TABLE_CREATOR, 8); + + if (oem_id == NULL) + oem_id = OEM_ID; + + if (oem_table_id == NULL) + oem_table_id = ACPI_TABLE_CREATOR; + + oem_id_len = MIN(strlen(oem_id), 6); + oem_table_id_len = MIN(strlen(oem_table_id), 8); + + memcpy(header->oem_id, oem_id, oem_id_len); + memcpy(header->oem_table_id, oem_table_id, oem_table_id_len); memcpy(header->asl_compiler_id, ASLC, 4); cur.buf = (void *)(acpi_addr + sizeof(acpi_header_t)); |