1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <acpi/acpi_gnvs.h>
4 #include <acpi/acpigen.h>
6 #include <console/console.h>
12 void *acpi_get_gnvs(void)
17 gnvs
= cbmem_find(CBMEM_ID_ACPI_GNVS
);
21 printk(BIOS_ERR
, "Unable to locate Global NVS\n");
25 static void gnvs_assign_cbmc(void)
27 uint32_t *gnvs_cbmc
= gnvs_cbmc_ptr();
29 *gnvs_cbmc
= (uintptr_t)cbmem_find(CBMEM_ID_CONSOLE
);
32 void *gnvs_get_or_create(void)
39 gnvs
= cbmem_find(CBMEM_ID_ACPI_GNVS
);
43 gnvs_size
= gnvs_size_of_array();
45 gnvs
= cbmem_add(CBMEM_ID_ACPI_GNVS
, gnvs_size
);
49 memset(gnvs
, 0, gnvs_size
);
51 if (CONFIG(CONSOLE_CBMEM
))
55 gnvs_assign_chromeos();
60 void acpi_inject_nvsa(void)
62 uintptr_t gnvs_address
= (uintptr_t)acpi_get_gnvs();
66 acpigen_write_scope("\\");
67 acpigen_write_name_dword("NVSA", gnvs_address
);