Merge tag 'efi-2022-01-rc4-4' of https://source.denx.de/u-boot/custodians/u-boot-efi
[platform/kernel/u-boot.git] / lib / acpi / acpi_table.c
index 2f07741..d168540 100644 (file)
 #include <log.h>
 #include <mapmem.h>
 #include <tables_csum.h>
+#include <timestamp.h>
 #include <version.h>
 #include <acpi/acpi_table.h>
 #include <asm/global_data.h>
 #include <dm/acpi.h>
 
+/*
+ * OEM_REVISION is 32-bit unsigned number. It should be increased only when
+ * changing software version. Therefore it should not depend on build time.
+ * U-Boot calculates it from U-Boot version and represent it in hexadecimal
+ * notation. As U-Boot version is in form year.month set low 8 bits to 0x01
+ * to have valid date. So for U-Boot version 2021.04 OEM_REVISION is set to
+ * value 0x20210401.
+ */
+#define OEM_REVISION ((((U_BOOT_VERSION_NUM / 1000) % 10) << 28) | \
+                     (((U_BOOT_VERSION_NUM / 100) % 10) << 24) | \
+                     (((U_BOOT_VERSION_NUM / 10) % 10) << 20) | \
+                     ((U_BOOT_VERSION_NUM % 10) << 16) | \
+                     (((U_BOOT_VERSION_NUM_PATCH / 10) % 10) << 12) | \
+                     ((U_BOOT_VERSION_NUM_PATCH % 10) << 8) | \
+                     0x01)
+
 int acpi_create_dmar(struct acpi_dmar *dmar, enum dmar_flags flags)
 {
        struct acpi_table_header *header = &dmar->header;
@@ -100,7 +117,7 @@ void acpi_fill_header(struct acpi_table_header *header, char *signature)
        memcpy(header->signature, signature, 4);
        memcpy(header->oem_id, OEM_ID, 6);
        memcpy(header->oem_table_id, OEM_TABLE_ID, 8);
-       header->oem_revision = U_BOOT_BUILD_DATE;
+       header->oem_revision = OEM_REVISION;
        memcpy(header->aslc_id, ASLC_ID, 4);
 }