config BOARD_INTEL_ADLRVP_COMMON
	def_bool n
	select BOARD_ROMSIZE_KB_32768
	select DRIVERS_I2C_GENERIC
	select DRIVERS_I2C_HID
	select DRIVERS_I2C_MAX98373
	select DRIVERS_INTEL_DPTF
	select DRIVERS_INTEL_MIPI_CAMERA
	select DRIVERS_INTEL_SOUNDWIRE
	select DRIVERS_SOUNDWIRE_ALC711
	select DRIVERS_SPI_ACPI
	select DRIVERS_USB_ACPI
	select HAVE_ACPI_RESUME
	select HAVE_ACPI_TABLES
	select HAVE_SPD_IN_CBFS
	select MAINBOARD_HAS_CHROMEOS
	select SOC_INTEL_COMMON_BLOCK_IPU
	select SOC_INTEL_CSE_LITE_SKU
	select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES

config BOARD_INTEL_ADLRVP_P
	select BOARD_INTEL_ADLRVP_COMMON
	select DRIVERS_UART_8250IO
	select MAINBOARD_USES_IFD_EC_REGION
	select SOC_INTEL_ALDERLAKE_PCH_P
	select GEN3_EXTERNAL_CLOCK_BUFFER

config BOARD_INTEL_ADLRVP_P_EXT_EC
	select BOARD_INTEL_ADLRVP_COMMON
	select DRIVERS_INTEL_PMC
	select INTEL_LPSS_UART_FOR_CONSOLE
	select SOC_INTEL_ALDERLAKE_PCH_P
	select GEN3_EXTERNAL_CLOCK_BUFFER
	select DRIVERS_WWAN_FM350GL

config BOARD_INTEL_ADLRVP_RPL_EXT_EC
	select SOC_INTEL_RAPTORLAKE
	select BOARD_INTEL_ADLRVP_COMMON
	select DRIVERS_INTEL_PMC
	select INTEL_LPSS_UART_FOR_CONSOLE
	select SOC_INTEL_ALDERLAKE_PCH_P
	select GEN3_EXTERNAL_CLOCK_BUFFER
	select DRIVERS_WWAN_FM350GL

config BOARD_INTEL_ADLRVP_P_MCHP
	select BOARD_INTEL_ADLRVP_COMMON
	select DRIVERS_INTEL_MIPI_CAMERA
	select DRIVERS_INTEL_PMC
	select EC_GOOGLE_CHROMEEC_ACPI_MEMMAP
	select EC_GOOGLE_CHROMEEC_MEC
	select INTEL_LPSS_UART_FOR_CONSOLE
	select SOC_INTEL_ALDERLAKE_PCH_P

config BOARD_INTEL_ADLRVP_M
	select BOARD_INTEL_ADLRVP_COMMON
	select DRIVERS_UART_8250IO
	select MAINBOARD_USES_IFD_EC_REGION
	select SOC_INTEL_ALDERLAKE_PCH_M

config BOARD_INTEL_ADLRVP_M_EXT_EC
	select BOARD_INTEL_ADLRVP_COMMON
	select DRIVERS_INTEL_PMC
	select FW_CONFIG
	select FW_CONFIG_SOURCE_CHROMEEC_CBI
	select INTEL_LPSS_UART_FOR_CONSOLE
	select MAINBOARD_HAS_TPM2
	select SOC_INTEL_ALDERLAKE_PCH_M
	select SPI_TPM
	select TPM_GOOGLE_CR50

config BOARD_INTEL_ADLRVP_N
	select BOARD_INTEL_ADLRVP_COMMON
	select DRIVERS_UART_8250IO
	select MAINBOARD_USES_IFD_EC_REGION
	select SOC_INTEL_ALDERLAKE_PCH_N

config BOARD_INTEL_ADLRVP_N_EXT_EC
	select BOARD_INTEL_ADLRVP_COMMON
	select DRIVERS_INTEL_PMC
	select INTEL_LPSS_UART_FOR_CONSOLE
	select SOC_INTEL_ALDERLAKE_PCH_N
	select FW_CONFIG
	select FW_CONFIG_SOURCE_CHROMEEC_CBI

if BOARD_INTEL_ADLRVP_COMMON

config CHROMEOS
	select GBB_FLAG_FORCE_DEV_SWITCH_ON
	select GBB_FLAG_FORCE_DEV_BOOT_USB
	select GBB_FLAG_FORCE_DEV_BOOT_ALTFW
	select GBB_FLAG_FORCE_MANUAL_RECOVERY
	select GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC
	select HAS_RECOVERY_MRC_CACHE

config MAINBOARD_DIR
	default "intel/adlrvp"

config VARIANT_DIR
	default "adlrvp_p" if BOARD_INTEL_ADLRVP_P
	default "adlrvp_p_ext_ec" if BOARD_INTEL_ADLRVP_P_EXT_EC
	default "adlrvp_rpl_ext_ec" if BOARD_INTEL_ADLRVP_RPL_EXT_EC
	default "adlrvp_p_mchp" if BOARD_INTEL_ADLRVP_P_MCHP
	default "adlrvp_m" if BOARD_INTEL_ADLRVP_M
	default "adlrvp_m_ext_ec" if BOARD_INTEL_ADLRVP_M_EXT_EC
	default "adlrvp_n" if BOARD_INTEL_ADLRVP_N
	default "adlrvp_n_ext_ec" if BOARD_INTEL_ADLRVP_N_EXT_EC

config GBB_HWID
	string
	depends on CHROMEOS
	default "ADLRVPM" if BOARD_INTEL_ADLRVP_M || BOARD_INTEL_ADLRVP_M_EXT_EC
	default "ADLRVPN" if BOARD_INTEL_ADLRVP_N || BOARD_INTEL_ADLRVP_N_EXT_EC
	default "ADLRVPP"

config MAINBOARD_PART_NUMBER
	default "Alder Lake Client Platform"

config MAINBOARD_VENDOR
	string
	default "Intel Corporation"

config MAINBOARD_FAMILY
	string
	default "Intel_adlrvp"

config DEVICETREE
	default "devicetree_m.cb" if BOARD_INTEL_ADLRVP_M || BOARD_INTEL_ADLRVP_M_EXT_EC
	default "devicetree_n.cb" if BOARD_INTEL_ADLRVP_N || BOARD_INTEL_ADLRVP_N_EXT_EC
	default "devicetree.cb"

config OVERRIDE_DEVICETREE
	default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb"

config DIMM_SPD_SIZE
	default 512

choice
	prompt "ON BOARD EC"
	default ADL_INTEL_EC if BOARD_INTEL_ADLRVP_P || BOARD_INTEL_ADLRVP_M || BOARD_INTEL_ADLRVP_N
	default ADL_CHROME_EC if BOARD_INTEL_ADLRVP_P_EXT_EC || BOARD_INTEL_ADLRVP_M_EXT_EC || BOARD_INTEL_ADLRVP_P_MCHP || BOARD_INTEL_ADLRVP_N_EXT_EC || BOARD_INTEL_ADLRVP_RPL_EXT_EC
	help
	  This option allows you to select the on board EC to use.
	  Select whether the board has Intel EC or Chrome EC

config ADL_CHROME_EC
	bool "Chrome EC"
	select EC_GOOGLE_CHROMEEC
	select EC_GOOGLE_CHROMEEC_ESPI
	select EC_GOOGLE_CHROMEEC_BOARDID
	select EC_ACPI
	select EC_GOOGLE_CHROMEEC_LPC

config ADL_INTEL_EC
	bool "Intel EC"
	select EC_ACPI
endchoice

config VBOOT
	select VBOOT_LID_SWITCH
	select VBOOT_MOCK_SECDATA if BOARD_INTEL_ADLRVP_P_EXT_EC || BOARD_INTEL_ADLRVP_N_EXT_EC || BOARD_INTEL_ADLRVP_P_EXT_EC
	select EC_GOOGLE_CHROMEEC_SWITCHES if ADL_CHROME_EC
	select VBOOT_EARLY_EC_SYNC if BOARD_INTEL_ADLRVP_M_EXT_EC

config UART_FOR_CONSOLE
	int
	default 0

config DRIVER_TPM_SPI_BUS
	default 0x2 if BOARD_INTEL_ADLRVP_M_EXT_EC

config USE_PM_ACPI_TIMER
	default n if BOARD_INTEL_ADLRVP_N_EXT_EC || BOARD_INTEL_ADLRVP_N

config TPM_TIS_ACPI_INTERRUPT
	int
	default 67 if BOARD_INTEL_ADLRVP_M_EXT_EC  # GPE0_DW2_3 (GPP_E3)

config GEN3_EXTERNAL_CLOCK_BUFFER
	bool
	depends on SOC_INTEL_ALDERLAKE_PCH_P
	default n
	help
	  Support external Gen-3 clock chip for ADL-P.
	  `CONFIG_CLKSRC_FOR_EXTERNAL_BUFFER` provides feed clock to discrete buffer
	  for further distribution to platform. SRCCLKREQB[7:9] maps to internal
	  SRCCLKREQB[6]. If any of them asserted, SRC buffer
	  `CONFIG_CLKSRC_FOR_EXTERNAL_BUFFER` gets enabled.

config CLKSRC_FOR_EXTERNAL_BUFFER
	depends on GEN3_EXTERNAL_CLOCK_BUFFER
	int
	default 6  # CLKSRC 6
endif
