x86: nhlt: Fix a few bugs in the table generation
authorSimon Glass <sjg@chromium.org>
Wed, 4 Nov 2020 16:57:27 +0000 (09:57 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Fri, 6 Nov 2020 01:51:29 +0000 (09:51 +0800)
At present these tables do not have the correct header, and there is an
occasional incorrect value due to uninited data. Fix these bugs.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/x86/lib/acpi_nhlt.c

index 1c1ea27..0e8e669 100644 (file)
@@ -68,6 +68,7 @@ struct nhlt_endpoint *nhlt_add_endpoint(struct nhlt *nhlt, int link_type,
        endp->device_type = device_type;
        endp->direction = dir;
        endp->virtual_bus_id = DEFAULT_VIRTUAL_BUS_ID;
+       endp->num_formats = 0;
 
        nhlt->num_endpoints++;
 
@@ -395,7 +396,7 @@ int nhlt_serialise_oem_overrides(struct acpi_ctx *ctx, struct nhlt *nhlt,
        /* Create header */
        header = (void *)ctx->current;
        memset(header, '\0', sizeof(struct acpi_table_header));
-       acpi_fill_header(header, "NHLT");
+       memcpy(header->signature, "NHLT", 4);
        header->length = sz;
        header->revision = acpi_get_table_revision(ACPITAB_NHLT);
 
@@ -408,6 +409,7 @@ int nhlt_serialise_oem_overrides(struct acpi_ctx *ctx, struct nhlt *nhlt,
                memcpy(header->oem_table_id, oem_table_id, oem_table_id_len);
        }
        header->oem_revision = oem_revision;
+       memcpy(header->aslc_id, ASLC_ID, 4);
 
        cur.buf = (void *)(header + 1);
        cur.start = (void *)header;