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

config INTEL_DDI
	bool
	default n
	help
	  helper functions for intel DDI operations

config INTEL_EDID
	bool
	default n

config INTEL_INT15
	bool
	default n

config INTEL_GMA_ACPI
	bool
	default n

config INTEL_GMA_BCLV_OFFSET
	hex
	default 0xc8254

config INTEL_GMA_BCLV_WIDTH
	int
	default 16

config INTEL_GMA_BCLM_OFFSET
	hex
	default 0xc8256

config INTEL_GMA_BCLM_WIDTH
	int
	default 16

config INTEL_GMA_SSC_ALTERNATE_REF
	bool
	default n
	help
	  Set when the SSC reference clock for LVDS runs at a different fre-
	  quency than the general display reference clock.

	  To be set by northbridge or mainboard Kconfig.  For most platforms,
	  there is no choice, i.e. for i945 and gm45 the SSC reference always
	  differs from the display reference clock (i945: 66Mhz SSC vs. 48MHz
	  DREF; gm45: 100MHz SSC vs. 96Mhz DREF), for Arrandale and newer, it's
	  the same frequency for SSC/non-SSC (120MHz).  The only, currently
	  supported platform with a choice seems to be Pineview, where the
	  alternative is 100MHz vs. the default 96MHz.

config INTEL_GMA_SWSMISCI
	bool
	default n
	help
	  Select this option for Atom-based platforms which use the SWSMISCI
	  register (0xe0) rather than the SWSCI register (0xe8).

config INTEL_GMA_LIBGFXINIT_EDID
	bool

config VBT_DATA_SIZE_KB
	int
	default 8

config GFX_GMA_ANALOG_I2C_HDMI_B
	bool

config GFX_GMA_ANALOG_I2C_HDMI_C
	bool

config GFX_GMA_ANALOG_I2C_HDMI_D
	bool

config GFX_GMA_IGNORE_PRESENCE_STRAPS
	def_bool n
	depends on MAINBOARD_HAS_LIBGFXINIT
	help
	  libgfxinit uses the GPU presence straps to determine if a display port
	  is present/enabled. Select this option if a board doesn't correctly implement
	  these straps, causing libgfxinit to fail to detect an attached panel.

config GFX_GMA
	def_bool y
	depends on NORTHBRIDGE_INTEL_GM45 || NORTHBRIDGE_INTEL_X4X \
		|| NORTHBRIDGE_INTEL_IRONLAKE || NORTHBRIDGE_INTEL_SANDYBRIDGE \
		|| NORTHBRIDGE_INTEL_HASWELL || SOC_INTEL_BROADWELL \
		|| SOC_INTEL_COMMON_SKYLAKE_BASE || SOC_INTEL_APOLLOLAKE \
		|| SOC_INTEL_CANNONLAKE_BASE
	depends on MAINBOARD_USE_LIBGFXINIT || INTEL_GMA_LIBGFXINIT_EDID
	select RAMSTAGE_LIBHWBASE

config EARLY_GFX_GMA
	def_bool y
	depends on SOC_INTEL_ALDERLAKE
	depends on MAINBOARD_USE_EARLY_LIBGFXINIT
	select ROMSTAGE_LIBHWBASE

config GFX_GMA_DEFAULT_MMIO
	hex
	depends on HWBASE_STATIC_MMIO && (GFX_GMA || EARLY_GFX_GMA)
	help
	  Graphics device MMIO address. This is typically an unused
	  memory mapping region which can be allocated to the MMIO
	  region as graphics PCI device Base Address Range zero.

config GFX_GMA_PANEL_1_ON_EDP
	bool
	depends on GFX_GMA || MAINBOARD_HAS_LIBGFXINIT \
		|| MAINBOARD_HAS_EARLY_LIBGFXINIT
	default n if GFX_GMA_PANEL_1_ON_LVDS
	default y

config GFX_GMA_PANEL_1_ON_LVDS
	bool
	depends on GFX_GMA || MAINBOARD_HAS_LIBGFXINIT \
		|| MAINBOARD_HAS_EARLY_LIBGFXINIT
	default y if NORTHBRIDGE_INTEL_GM45 || NORTHBRIDGE_INTEL_IRONLAKE
	default n

config INTEL_GMA_OPREGION_2_1
	bool
	default n

if GFX_GMA || EARLY_GFX_GMA

config GFX_GMA_DYN_CPU
	def_bool y
	help
	  Activates runtime CPU detection in libgfxinit.

config GFX_GMA_GENERATION
	string
	default "Broxton" if SOC_INTEL_APOLLOLAKE
	default "Skylake" if SOC_INTEL_COMMON_SKYLAKE_BASE || SOC_INTEL_CANNONLAKE_BASE
	default "Haswell" if NORTHBRIDGE_INTEL_HASWELL || SOC_INTEL_BROADWELL
	default "Ironlake" if NORTHBRIDGE_INTEL_IRONLAKE || NORTHBRIDGE_INTEL_SANDYBRIDGE
	default "G45" if NORTHBRIDGE_INTEL_GM45 || NORTHBRIDGE_INTEL_X4X
	default "Tigerlake" if SOC_INTEL_ALDERLAKE

config GFX_GMA_PCH
	string
	default "Ibex_Peak" if NORTHBRIDGE_INTEL_IRONLAKE
	default "Cougar_Point" if NORTHBRIDGE_INTEL_SANDYBRIDGE
	default "Lynx_Point" if NORTHBRIDGE_INTEL_HASWELL || SOC_INTEL_BROADWELL
	default "Sunrise_Point" if SOC_INTEL_COMMON_SKYLAKE_BASE
	default "Cannon_Point" if SOC_INTEL_CANNONLAKE_BASE
	default "Alder_Point" if SOC_INTEL_ALDERLAKE
	default "No_PCH"

config GFX_GMA_PANEL_1_PORT
	string
	default "eDP" if GFX_GMA_PANEL_1_ON_EDP
	default "LVDS"

config GFX_GMA_PANEL_2_PORT
	string
	default "Disabled"

config GFX_GMA_ANALOG_I2C_PORT
	string
	default "PCH_HDMI_B" if GFX_GMA_ANALOG_I2C_HDMI_B
	default "PCH_HDMI_C" if GFX_GMA_ANALOG_I2C_HDMI_C
	default "PCH_HDMI_D" if GFX_GMA_ANALOG_I2C_HDMI_D
	default "PCH_DAC"
	help
	  Boards with a DVI-I connector share the I2C pins for both analog and
	  digital displays. In that case, the EDID for a VGA display has to be
	  read over the I2C interface of the coupled digital port.

endif
