diff options
Diffstat (limited to 'lib/acpi/acpi_table.c')
| -rw-r--r-- | lib/acpi/acpi_table.c | 19 | 
1 files changed, 18 insertions, 1 deletions
| diff --git a/lib/acpi/acpi_table.c b/lib/acpi/acpi_table.c index 2f077417841..d1685404c21 100644 --- a/lib/acpi/acpi_table.c +++ b/lib/acpi/acpi_table.c @@ -11,11 +11,28 @@  #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);  } | 
