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

if BOARD_PCENGINES_APU2 || BOARD_PCENGINES_APU3 || BOARD_PCENGINES_APU4 || \
	BOARD_PCENGINES_APU5

config BOARD_SPECIFIC_OPTIONS
	def_bool y
	select CPU_AMD_PI_00730F01
	select NORTHBRIDGE_AMD_PI_00730F01
	select SOUTHBRIDGE_AMD_PI_AVALON
	select DEFAULT_POST_ON_LPC
	select SUPERIO_NUVOTON_NCT5104D
	select HAVE_PIRQ_TABLE
	select HAVE_ACPI_TABLES
	select HUDSON_FADT_LEGACY_DEVICES
	select BOARD_ROMSIZE_KB_8192
	select HAVE_SPD_IN_CBFS
	select MEMORY_MAPPED_TPM
	select SEABIOS_ADD_SERCON_PORT_FILE if PAYLOAD_SEABIOS
	select PCIEXP_ASPM
	select PCIEXP_CLK_PM
	select PCIEXP_COMMON_CLOCK
	select PCIEXP_L1_SUB_STATE

config MAINBOARD_DIR
	default "pcengines/apu2"

config VARIANT_DIR
	default "apu2" if BOARD_PCENGINES_APU2
	default "apu3" if BOARD_PCENGINES_APU3
	default "apu4" if BOARD_PCENGINES_APU4
	default "apu5" if BOARD_PCENGINES_APU5

config DEVICETREE
	default "variants/\$(CONFIG_VARIANT_DIR)/devicetree.cb"

config MAINBOARD_PART_NUMBER
	default "apu2" if BOARD_PCENGINES_APU2
	default "apu3" if BOARD_PCENGINES_APU3
	default "apu4" if BOARD_PCENGINES_APU4
	default "apu5" if BOARD_PCENGINES_APU5

config MAX_CPUS
	int
	default 4

config IRQ_SLOT_COUNT
	int
	default 11

config ONBOARD_VGA_IS_PRIMARY
	bool
	default y

config AGESA_BINARY_PI_FILE
	string
	default "3rdparty/blobs/mainboard/pcengines/apu2/AGESA.bin"

choice
	prompt "J19 pins 1-10"
	default APU2_PINMUX_UART_C

config APU2_PINMUX_OFF_C
	bool "disable"

config APU2_PINMUX_GPIO0
	bool "GPIO"
	depends on BOARD_PCENGINES_APU2 || BOARD_PCENGINES_APU3 || \
		BOARD_PCENGINES_APU4

config APU2_PINMUX_UART_C
	bool "UART 0x3e8"

endchoice

choice
	prompt "J19 pins 11-20"
	default APU2_PINMUX_UART_D

config APU2_PINMUX_OFF_D
	bool "disable"

config APU2_PINMUX_GPIO1
	bool "GPIO"
	depends on BOARD_PCENGINES_APU2 || BOARD_PCENGINES_APU3 || \
		BOARD_PCENGINES_APU4

config APU2_PINMUX_UART_D
	bool "UART 0x2e8"

endchoice

config DIMM_SPD_SIZE
	default 128

config AGESA_USE_1_0_0_4_HEADER
	bool
	default y
	help
	  Due to a bug in AGESA 1.0.0.A affecting boards without UMA, it is
	  impossible to use the newest blob. Using an older 1.0.0.4 blob
	  workarounds the problem, however some headers changes between blob
	  revisions. This option removes the changes in headers introduced
	  with AGESA 1.0.0.A to fit the 1.0.0.4 revision.

endif # BOARD_PCENGINES_APU2
