nb/intel/i945/gma.c: Remove extra indentation
[coreboot.git] / src / acpi / gnvs.c
blobfbc84b36fd4a461e5ffda02d280abc969d594ea2
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <acpi/acpi_gnvs.h>
4 #include <acpi/acpigen.h>
5 #include <cbmem.h>
6 #include <console/console.h>
7 #include <string.h>
8 #include <types.h>
10 static void *gnvs;
12 void *acpi_get_gnvs(void)
14 if (gnvs)
15 return gnvs;
17 gnvs = cbmem_find(CBMEM_ID_ACPI_GNVS);
18 if (gnvs)
19 return gnvs;
21 printk(BIOS_ERR, "Unable to locate Global NVS\n");
22 return NULL;
25 static void gnvs_assign_cbmc(void)
27 uint32_t *gnvs_cbmc = gnvs_cbmc_ptr();
28 if (gnvs_cbmc)
29 *gnvs_cbmc = (uintptr_t)cbmem_find(CBMEM_ID_CONSOLE);
32 void *gnvs_get_or_create(void)
34 size_t gnvs_size;
36 if (gnvs)
37 return gnvs;
39 gnvs = cbmem_find(CBMEM_ID_ACPI_GNVS);
40 if (gnvs)
41 return gnvs;
43 gnvs_size = gnvs_size_of_array();
45 gnvs = cbmem_add(CBMEM_ID_ACPI_GNVS, gnvs_size);
46 if (!gnvs)
47 return gnvs;
49 memset(gnvs, 0, gnvs_size);
51 if (CONFIG(CONSOLE_CBMEM))
52 gnvs_assign_cbmc();
54 if (CONFIG(CHROMEOS))
55 gnvs_assign_chromeos();
57 return gnvs;
60 void acpi_inject_nvsa(void)
62 uintptr_t gnvs_address = (uintptr_t)acpi_get_gnvs();
63 if (!gnvs_address)
64 return;
66 acpigen_write_scope("\\");
67 acpigen_write_name_dword("NVSA", gnvs_address);
68 acpigen_pop_len();