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

chip soc/amd/cezanne
	register "common_config.espi_config" = "{
		.std_io_decode_bitmap = ESPI_DECODE_IO_0x80_EN | ESPI_DECODE_IO_0X2E_0X2F_EN,
		.generic_io_range[0] = {
			.base = 0x662,
			.size = 8,
		},
		.io_mode = ESPI_IO_MODE_QUAD,
		.op_freq_mhz = ESPI_OP_FREQ_16_MHZ,
		.crc_check_enable = 1,
		.alert_pin = ESPI_ALERT_PIN_PUSH_PULL,
		.periph_ch_en = 1,
		.vw_ch_en = 1,
		.oob_ch_en = 1,
		.flash_ch_en = 0,
	}"

	# Set FADT Configuration
	register "common_config.fadt_boot_arch" = "ACPI_FADT_LEGACY_DEVICES | ACPI_FADT_8042"
	register "common_config.fadt_flags" = "ACPI_FADT_SLEEP_BUTTON" # See table 5-34 ACPI 6.3 spec

	# ACP Configuration
	register "common_config.acp_config.acp_pin_cfg" = "I2S_PINS_I2S_TDM"
	register "common_config.acp_config" = "{
		.acp_pin_cfg = I2S_PINS_I2S_TDM,
		.acp_i2s_wake_enable = 0,
		.acp_pme_enable = 0,
	}"

	# I2C Pad Control RX Select Configuration
	register "i2c_pad[0].rx_level" = "I2C_PAD_RX_3_3V"
	register "i2c_pad[1].rx_level" = "I2C_PAD_RX_3_3V"
	register "i2c_pad[2].rx_level" = "I2C_PAD_RX_3_3V"
	register "i2c_pad[3].rx_level" = "I2C_PAD_RX_3_3V"

	register "s0ix_enable" = "false"

	# CPPC register configuration
	register "cppc_ctrl" = "true"
	register "cppc_perf_limit_max_range" = "0xFF"
	register "cppc_perf_limit_min_range" = "0x00"
	register "cppc_epp_max_range" 		 = "0xFF"
	register "cppc_epp_min_range"		 = "0x00"


	# general purpose PCIe clock output configuration
	register "gpp_clk_config[0]" = "GPP_CLK_ON"
	register "gpp_clk_config[1]" = "GPP_CLK_ON"
	register "gpp_clk_config[2]" = "GPP_CLK_ON"
	register "gpp_clk_config[3]" = "GPP_CLK_ON"
	register "gpp_clk_config[4]" = "GPP_CLK_ON"
	register "gpp_clk_config[5]" = "GPP_CLK_ON"
	register "gpp_clk_config[6]" = "GPP_CLK_ON"

	register "pspp_policy" = "DXIO_PSPP_BALANCED"

	device domain 0 on
		device ref iommu on end
		device ref gpp_gfx_bridge_0 on end #GFX
		device ref gpp_gfx_bridge_1 on end
		device ref gpp_bridge_0 off end
		device ref gpp_bridge_1 off end
		device ref gpp_bridge_2 on end
		device ref gpp_bridge_3 on end # NVME
		device ref gpp_bridge_4 off end
		device ref gpp_bridge_5 off end
		device ref gpp_bridge_a on # Internal GPP Bridge 0 to Bus A
			device ref gfx on end # Internal GPU (GFX)
			device ref gfx_hda on end # gfx_hda
			device ref crypto on end # Crypto Coprocessor
			device ref xhci_0 on # USB 3.1 (USB0)
				chip drivers/usb/acpi
					device ref xhci_0_root_hub on
						chip drivers/usb/acpi
							device ref usb3_port0 on end
						end
						chip drivers/usb/acpi
							device ref usb3_port1 on end
						end
						chip drivers/usb/acpi
							device ref usb2_port0 on end
						end
						chip drivers/usb/acpi
							device ref usb2_port1 on end
						end
						chip drivers/usb/acpi
							device ref usb2_port2 on end
						end
						chip drivers/usb/acpi
							device ref usb2_port3 on end
						end
					end
				end
			end
			device ref xhci_1 on # USB 3.1 (USB1)
				chip drivers/usb/acpi
					device ref xhci_1_root_hub on
						chip drivers/usb/acpi
							device ref usb3_port4 on end
						end
						chip drivers/usb/acpi
							device ref usb3_port5 on end
						end
						chip drivers/usb/acpi
							device ref usb2_port4 on end
						end
						chip drivers/usb/acpi
							device ref usb2_port5 on end
						end
						chip drivers/usb/acpi
							device ref usb2_port6 on end
						end
						chip drivers/usb/acpi
							device ref usb2_port7 on end
						end
					end
				end
			end
			device ref acp on end # Audio Processor (ACP)
			device ref hda on end # Audio Processor HD Audio Controller
		end

		device ref gpp_bridge_b on # Internal GPP Bridge 1 to Bus B
			device ref sata_0 on end # SATA 0
			device ref sata_1 on end # SATA 1
			device ref xgbe_0 on end # XGBE0
			device ref xgbe_1 on end # XGBE1
		end
	end

	device ref i2c_0 on end
	device ref i2c_1 on # eDP Touch Panel
		chip drivers/i2c/hid
			register "generic.hid" = ""PNP0C50""
			register "generic.desc" = ""ELAN Touchscreen""
			register "generic.detect" = "1"
			register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPIO_4)"
			register "generic.enable_delay_ms" = "1"
			register "generic.reset_delay_ms" = "20"
			register "generic.reset_off_delay_ms" = "2"
			register "generic.stop_off_delay_ms" = "2"
			register "generic.has_power_resource" = "1"
			register "hid_desc_reg_offset" = "0x01"
			device i2c 9 on end
		end
	end
	device ref i2c_2 on end
	device ref i2c_3 on end
	device ref uart_0 on end # UART0
	device ref uart_1 on end # UART1

end
