## SPDX-License-Identifier: GPL-2.0-only

config BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	def_bool n
	select EC_HP_KBC1126
	select HAVE_ACPI_RESUME
	select HAVE_ACPI_TABLES
	select HAVE_CMOS_DEFAULT
	select HAVE_OPTION_TABLE
	select MEMORY_MAPPED_TPM
	select MAINBOARD_HAS_TPM1
	select MAINBOARD_USES_IFD_GBE_REGION
	select NORTHBRIDGE_INTEL_SANDYBRIDGE
	select SERIRQ_CONTINUOUS_MODE
	select SYSTEM_TYPE_LAPTOP
	select USE_NATIVE_RAMINIT

config BOARD_HP_2170P
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_16384
	select GFX_GMA_PANEL_1_ON_LVDS
	select INTEL_GMA_HAVE_VBT
	select INTEL_INT15
	select MAINBOARD_HAS_LIBGFXINIT
	select SOUTHBRIDGE_INTEL_C216
	select SUPERIO_SMSC_LPC47N217

config BOARD_HP_2560P
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_8192
	select GFX_GMA_PANEL_1_ON_LVDS
	select INTEL_GMA_HAVE_VBT
	select INTEL_INT15
	select MAINBOARD_HAS_LIBGFXINIT
	select SOUTHBRIDGE_INTEL_BD82X6X

config BOARD_HP_2570P
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_16384
	select GFX_GMA_PANEL_1_ON_LVDS
	select INTEL_INT15
	select MAINBOARD_HAS_LIBGFXINIT
	select SOUTHBRIDGE_INTEL_C216

config BOARD_HP_2760P
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_8192
	select GFX_GMA_PANEL_1_ON_LVDS
	select INTEL_INT15
	select MAINBOARD_HAS_LIBGFXINIT
	select SOUTHBRIDGE_INTEL_BD82X6X

config BOARD_HP_8460P
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_8192
	select GFX_GMA_PANEL_1_ON_LVDS
	select INTEL_GMA_HAVE_VBT
	select INTEL_INT15
	select MAINBOARD_HAS_LIBGFXINIT
	select SOUTHBRIDGE_INTEL_BD82X6X
	select SUPERIO_SMSC_LPC47N217

config BOARD_HP_8470P
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_16384
	select GFX_GMA_PANEL_1_ON_LVDS
	select INTEL_INT15
	select MAINBOARD_HAS_LIBGFXINIT
	select SOUTHBRIDGE_INTEL_C216
	select SUPERIO_SMSC_LPC47N217

config BOARD_HP_8560W
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_8192
	select SOUTHBRIDGE_INTEL_BD82X6X
	select SUPERIO_SMSC_LPC47N217

config BOARD_HP_8770W
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_16384
	select SOUTHBRIDGE_INTEL_C216
	select SUPERIO_SMSC_LPC47N217

config BOARD_HP_FOLIO_9470M
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_16384
	select GFX_GMA_PANEL_1_ON_LVDS
	select INTEL_GMA_HAVE_VBT
	select INTEL_INT15
	select MAINBOARD_HAS_LIBGFXINIT
	select SOUTHBRIDGE_INTEL_C216

config BOARD_HP_PROBOOK_6360B
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_4096
	select GFX_GMA_PANEL_1_ON_LVDS
	select INTEL_GMA_HAVE_VBT
	select INTEL_INT15
	select MAINBOARD_HAS_LIBGFXINIT
	select MEMORY_MAPPED_TPM
	select MAINBOARD_HAS_TPM1
	select SOUTHBRIDGE_INTEL_BD82X6X
	select SUPERIO_SMSC_LPC47N217

config BOARD_HP_REVOLVE_810_G1
	select BOARD_HP_SNB_IVB_LAPTOPS_COMMON
	select BOARD_ROMSIZE_KB_16384
	select HAVE_SPD_IN_CBFS
	select GFX_GMA_PANEL_1_ON_LVDS
	select INTEL_INT15
	select INTEL_GMA_HAVE_VBT
	select MAINBOARD_HAS_LIBGFXINIT
	select SOUTHBRIDGE_INTEL_C216

if BOARD_HP_SNB_IVB_LAPTOPS_COMMON

config MAINBOARD_DIR
	default "hp/snb_ivb_laptops"

config VARIANT_DIR
	default "2170p"          if BOARD_HP_2170P
	default "2560p"          if BOARD_HP_2560P
	default "2570p"          if BOARD_HP_2570P
	default "2760p"          if BOARD_HP_2760P
	default "8460p"          if BOARD_HP_8460P
	default "8470p"          if BOARD_HP_8470P
	default "8560w"          if BOARD_HP_8560W
	default "8770w"          if BOARD_HP_8770W
	default "folio_9470m"    if BOARD_HP_FOLIO_9470M
	default "probook_6360b"  if BOARD_HP_PROBOOK_6360B
	default "revolve_810_g1" if BOARD_HP_REVOLVE_810_G1

config MAINBOARD_PART_NUMBER
	default "EliteBook 2170p"          if BOARD_HP_2170P
	default "EliteBook 2560p"          if BOARD_HP_2560P
	default "EliteBook 2570p"          if BOARD_HP_2570P
	default "EliteBook 2760p"          if BOARD_HP_2760P
	default "EliteBook 8460p"          if BOARD_HP_8460P
	default "EliteBook 8470p"          if BOARD_HP_8470P
	default "EliteBook 8560w"          if BOARD_HP_8560W
	default "EliteBook 8770w"          if BOARD_HP_8770W
	default "EliteBook Folio 9470m"    if BOARD_HP_FOLIO_9470M
	default "ProBook 6360b"            if BOARD_HP_PROBOOK_6360B
	default "EliteBook Revolve 810 G1" if BOARD_HP_REVOLVE_810_G1

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

config VGA_BIOS_ID
	string
	default "8086,0116" if SOUTHBRIDGE_INTEL_BD82X6X
	default "8086,0166" if SOUTHBRIDGE_INTEL_C216

config USBDEBUG_HCD_INDEX
	int
	default 0 if BOARD_HP_2170P || BOARD_HP_FOLIO_9470M
	default 1 if BOARD_HP_2560P || BOARD_HP_2760P || BOARD_HP_8460P || BOARD_HP_8560W
	default 2 if BOARD_HP_2570P || BOARD_HP_8470P || BOARD_HP_8770W
	default 1 if BOARD_HP_PROBOOK_6360B # FIXME: check this
	default 2 if BOARD_HP_REVOLVE_810_G1 # FIXME: check this

endif
