acpi: Add a central location for table version numbers
[oweals/u-boot.git] / lib / acpi / acpi_table.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Generic code used to generate ACPI tables
4  *
5  * Copyright 2019 Google LLC
6  */
7
8 #include <common.h>
9 #include <acpi/acpi_table.h>
10
11 int acpi_get_table_revision(enum acpi_tables table)
12 {
13         switch (table) {
14         case ACPITAB_FADT:
15                 return ACPI_FADT_REV_ACPI_3_0;
16         case ACPITAB_MADT:
17                 return ACPI_MADT_REV_ACPI_3_0;
18         case ACPITAB_MCFG:
19                 return ACPI_MCFG_REV_ACPI_3_0;
20         case ACPITAB_TCPA:
21                 /* This version and the rest are open-coded */
22                 return 2;
23         case ACPITAB_TPM2:
24                 return 4;
25         case ACPITAB_SSDT: /* ACPI 3.0 upto 6.3: 2 */
26                 return 2;
27         case ACPITAB_SRAT: /* ACPI 2.0: 1, ACPI 3.0: 2, ACPI 4.0 to 6.3: 3 */
28                 return 1; /* TODO Should probably be upgraded to 2 */
29         case ACPITAB_DMAR:
30                 return 1;
31         case ACPITAB_SLIT: /* ACPI 2.0 upto 6.3: 1 */
32                 return 1;
33         case ACPITAB_SPMI: /* IMPI 2.0 */
34                 return 5;
35         case ACPITAB_HPET: /* Currently 1. Table added in ACPI 2.0 */
36                 return 1;
37         case ACPITAB_VFCT: /* ACPI 2.0/3.0/4.0: 1 */
38                 return 1;
39         case ACPITAB_IVRS:
40                 return IVRS_FORMAT_FIXED;
41         case ACPITAB_DBG2:
42                 return 0;
43         case ACPITAB_FACS: /* ACPI 2.0/3.0: 1, ACPI 4.0 to 6.3: 2 */
44                 return 1;
45         case ACPITAB_RSDT: /* ACPI 1.0 upto 6.3: 1 */
46                 return 1;
47         case ACPITAB_XSDT: /* ACPI 2.0 upto 6.3: 1 */
48                 return 1;
49         case ACPITAB_RSDP: /* ACPI 2.0 upto 6.3: 2 */
50                 return 2;
51         case ACPITAB_HEST:
52                 return 1;
53         case ACPITAB_NHLT:
54                 return 5;
55         case ACPITAB_BERT:
56                 return 1;
57         case ACPITAB_SPCR:
58                 return 2;
59         default:
60                 return -EINVAL;
61         }
62 }