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

#include <acpi/acpi.h>
#include <ec/google/chromeec/ec.h>
#include <baseboard/variants.h>
#include <variant/sku.h>
#include <gpio.h>
#include <variant/gpio.h>

static const struct soc_amd_gpio variant_gpio_wlan_rst_early_reset[] = {
	/* GPIO_70 - WLAN_PE_RST_L */
	PAD_GPO(GPIO_70, LOW),
};

const struct soc_amd_gpio *variant_wlan_rst_early_gpio_table(size_t *size)
{
	*size = ARRAY_SIZE(variant_gpio_wlan_rst_early_reset);
	return variant_gpio_wlan_rst_early_reset;
}

void variant_romstage_entry(void)
{
	uint32_t sku = google_chromeec_get_sku_id();
	uint32_t bid;

	if (!acpi_is_wakeup_s3()) {
		/* Based on SKU, turn on keyboard backlight */
		switch (sku) {
		default:
			google_chromeec_kbbacklight(75);
			break;
		case SKU_CAREENA_KB_BACKLIGHT18:
		case SKU_CAREENA_KB_BACKLIGHT19:
		case SKU_CAREENA_KB_BACKLIGHT22:
		case SKU_CAREENA_KB_BACKLIGHT23:
			google_chromeec_kbbacklight(10);
			break;
		}
	}

	google_chromeec_get_board_version(&bid);

	if (bid == 7)
		/*
		 * Config WLAN RST - GPIO70 PU: release RST
		 * From RTK RTL8822CE spec, WLAN RST needs to be active
		 * at least 50 ms since WLAN power on
		 */
		gpio_set(GPIO_70, 1);
}