/* SPDX-License-Identifier: GPL-2.0-only */

#include <option.h>
#include <smmstore.h>

#include <Uefi/UefiBaseType.h>

#include "efivars.h"

static const EFI_GUID EficorebootNvDataGuid = {
	0xceae4c1d, 0x335b, 0x4685, { 0xa4, 0xa0, 0xfc, 0x4a, 0x94, 0xee, 0xa0, 0x85 } };

unsigned int get_uint_option(const char *name, const unsigned int fallback)
{
	struct region_device rdev;
	enum cb_err ret;
	uint32_t var;
	uint32_t size;

	if (smmstore_lookup_region(&rdev))
		return fallback;

	var = 0;
	size = sizeof(var);
	ret = efi_fv_get_option(&rdev, &EficorebootNvDataGuid, name, &var, &size);
	if (ret != CB_SUCCESS)
		return fallback;

	return var;
}

enum cb_err set_uint_option(const char *name, unsigned int value)
{
	struct region_device rdev;
	uint32_t var = value;

	if (smmstore_lookup_region(&rdev))
		return CB_CMOS_OTABLE_DISABLED;

	return efi_fv_set_option(&rdev, &EficorebootNvDataGuid, name, &var, sizeof(var));
}
