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

chip soc/intel/skylake

	register "deep_sx_config" = "DSX_EN_WAKE_PIN"

	register "eist_enable" = "1"

	# GPE configuration
	# Note that GPE events called out in ASL code rely on this
	# route. i.e. If this route changes then the affected GPE
	# offset bits also need to be changed.
	register "gpe0_dw0" = "GPP_B"
	register "gpe0_dw1" = "GPP_D"
	register "gpe0_dw2" = "GPP_E"

	# Enable DPTF
	register "dptf_enable" = "1"

	# FSP Configuration
	register "PrimaryDisplay" = "Display_PEG"

	# Enabling SLP_S3#, SLP_S4#, SLP_SUS and SLP_A Stretch
	# SLP_S3 Minimum Assertion Width. Values 0: 60us, 1: 1ms, 2: 50ms, 3: 2s
	register "PmConfigSlpS3MinAssert" = "0x02"

	# SLP_S4 Minimum Assertion Width. Values 0: default, 1: 1s, 2: 2s, 3: 3s, 4: 4s
	register "PmConfigSlpS4MinAssert" = "0x04"

	# SLP_SUS Minimum Assertion Width. Values 0: 0ms, 1: 500ms, 2: 1s, 3: 4s
	register "PmConfigSlpSusMinAssert" = "0x03"

	# SLP_A Minimum Assertion Width. Values 0: 0ms, 1: 4s, 2: 98ms, 3: 2s
	register "PmConfigSlpAMinAssert" = "0x03"

	# PL2 override 91W
	register "power_limits_config" = "{
		.tdp_pl2_override = 91,
	}"

	# Send an extra VR mailbox command for the PS4 exit issue
	register "SendVrMbxCmd" = "2"

	device cpu_cluster 0 on end
	device domain 0 on
		device ref system_agent	on
			subsystemid 0x1849 0x191f
		end
		device ref peg0		on
			subsystemid 0x1849 0x1901
			register "Peg0MaxLinkWidth" = "Peg0_x16"

			# Configure PCIe clockgen in PCH
			register "PcieRpClkReqSupport[0]"	= "1"
			register "PcieRpClkReqNumber[0]"	= "0"
			register "PcieRpClkSrcNumber[0]"	= "0"
		end
		device ref igpu		on
			subsystemid 0x1849 0x1912
		end
		device ref sa_thermal	on	end
		device ref south_xhci	on
			subsystemid 0x1849 0xa131

			register "usb2_ports" = "{
				[0] = USB2_PORT_MID(OC0),
				[1] = USB2_PORT_MID(OC0),
				[2] = USB2_PORT_MID(OC4),
				[3] = USB2_PORT_MID(OC4),
				[4] = USB2_PORT_MID(OC2),
				[5] = USB2_PORT_MID(OC2),
				[6] = USB2_PORT_MID(OC0),
				[7] = USB2_PORT_MID(OC0),
				[8] = USB2_PORT_MID(OC0),
				[9] = USB2_PORT_MID(OC0),
				[10] = USB2_PORT_MID(OC1),
				[11] = USB2_PORT_MID(OC1),
				[12] = USB2_PORT_MID(OC_SKIP),
				[13] = USB2_PORT_MID(OC_SKIP),
			}"
			register "usb3_ports" = "{
				[0] = USB3_PORT_DEFAULT(OC0),
				[1] = USB3_PORT_DEFAULT(OC0),
				[2] = USB3_PORT_DEFAULT(OC3),
				[3] = USB3_PORT_DEFAULT(OC3),
				[4] = USB3_PORT_DEFAULT(OC1),
				[5] = USB3_PORT_DEFAULT(OC1),
				[6] = USB3_PORT_DEFAULT(OC_SKIP),
				[7] = USB3_PORT_DEFAULT(OC_SKIP),
				[8] = USB3_PORT_DEFAULT(OC_SKIP),
				[9] = USB3_PORT_DEFAULT(OC_SKIP),
			}"
		end
		device ref thermal	on
			subsystemid 0x1849 0xa131
		end
		device ref heci1	on
			subsystemid 0x1849 0xa131
		end
		device ref sata		on
			subsystemid 0x1849 0xa102
			register "SataSalpSupport" = "1"
			# SATA4 and SATA5 are located in the lower right corner of the board,
			# but they are not populated. This is because the same PCB is used to
			# make boards with better PCHs, which can have up to six SATA ports.
			# However, the H110 PCH only has four SATA ports, which explains why
			# two connectors are missing.
			register "SataPortsEnable" = "{
				[0] = 1,
				[1] = 1,
				[2] = 1,
				[3] = 1,
			}"
		end
		device ref pcie_rp1	on	end
		device ref pcie_rp5	on
			register "PcieRpEnable[4]"			= "1"
			register "PcieRpClkReqSupport[4]"		= "1"
			register "PcieRpClkReqNumber[4]"		= "2"
			register "PcieRpAdvancedErrorReporting[4]"	= "1"
			register "PcieRpLtrEnable[4]"			= "1"
			register "PcieRpClkSrcNumber[4]"		= "2"
			register "PcieRpHotPlug[4]"			= "1"
		end
		device ref pcie_rp6	on
			register "PcieRpEnable[5]"			= "1"

			# Disable CLKREQ#, since onboard LAN is always present
			register "PcieRpClkReqSupport[5]"		= "0"
			register "PcieRpAdvancedErrorReporting[5]"	= "1"
			register "PcieRpLtrEnable[5]"			= "1"
			register "PcieRpClkSrcNumber[5]"		= "1"
		end
		device ref pcie_rp7	on
			register "PcieRpEnable[6]"			= "1"
			register "PcieRpClkReqSupport[6]"		= "1"
			register "PcieRpClkReqNumber[6]"		= "3"
			register "PcieRpAdvancedErrorReporting[6]"	= "1"
			register "PcieRpLtrEnable[6]"			= "1"
			register "PcieRpClkSrcNumber[6]"		= "3"
			register "PcieRpHotPlug[6]"			= "1"
		end
		device ref lpc_espi	on
			subsystemid 0x1849 0x1a43

			# Set @0x280-0x2ff I/O Range for SuperIO HWM
			register "gen1_dec" = "0x007c0281"

			# Set LPC Serial IRQ mode
			register "serirq_mode" = "SERIRQ_CONTINUOUS"

			chip superio/common
				device pnp 2e.0 on # passes SIO base addr to SSDT gen

					chip superio/nuvoton/nct6791d
						device pnp 2e.1   on
							# Global Control Registers
							# Device IRQ Polarity
							irq 0x13 = 0x00
							irq 0x14 = 0x00
							# Global Option
							irq 0x24 = 0xfb
							irq 0x27 = 0x10
							# Multi Function
							irq 0x1a = 0xb0
							irq 0x1b = 0xe6
							irq 0x2a = 0x04
							irq 0x2c = 0x40
							irq 0x2d = 0x03

							# Parallel Port
							io  0x60 = 0x0378
							irq 0x70 = 7
							drq 0x74 = 4      # No DMA
							irq 0xf0 = 0x3c   # Printer mode
						end
						device pnp 2e.2   on      # UART A
							io  0x60 = 0x03f8
							irq 0x70 = 4
						end
						device pnp 2e.3   on      # IR
							io  0x60 = 0x02f8
							irq 0x70 = 3
						end
						device pnp 2e.5   on      # PS/2 KBC
							io  0x60 = 0x0060
							io  0x62 = 0x0064
							irq 0x70 = 1      # Keyboard
							irq 0x72 = 12     # Mouse
						end
						device pnp 2e.6   off end # CIR
						device pnp 2e.7   on      # GPIO6
							irq 0xf6 = 0xff
							irq 0xf7 = 0xff
							irq 0xf8 = 0xff
						end
						device pnp 2e.107 on      # GPIO7
							irq 0xe0 = 0x7f
							irq 0xe1 = 0x0d
						end
						device pnp 2e.207 on      # GPIO8
							irq 0xe6 = 0xff
							irq 0xe7 = 0xff
							irq 0xed = 0xff
						end
						device pnp 2e.8   off end # WDT
						device pnp 2e.108 on  end # GPIO0
						device pnp 2e.308 off end # GPIO base
						device pnp 2e.408 off end # WDTMEM
						device pnp 2e.708 on  end # GPIO1
						device pnp 2e.9   on  end # GPIO2
						device pnp 2e.109 on      # GPIO3
							irq 0xe4 = 0x7b
							irq 0xe5 = 0x02
							irq 0xea = 0x04
						end
						device pnp 2e.209 on      # GPIO4
							irq 0xf0 = 0x7f
							irq 0xf1 = 0x80
						end
						device pnp 2e.309 on      # GPIO5
							irq 0xf4 = 0xdf
							irq 0xf5 = 0xd5
						end
						device pnp 2e.a   on
							# Power RAM in S3 and let the PCH
							# handle power failure actions
							irq 0xe4 = 0x70
							# Set HWM reset source to LRESET#
							irq 0xe7 = 0x01
						end # ACPI
						device pnp 2e.b   on      # HWM, LED
							io  0x60 = 0x0290
							io  0x62 = 0
							irq 0x70 = 0
						end
						device pnp 2e.d   off end # BCLK, WDT2, WDT_MEM
						device pnp 2e.e   off end # CIR wake-up
						device pnp 2e.f   off end # GPIO PP/OD
						device pnp 2e.14  off end # SVID, Port 80 UART
						device pnp 2e.16  off end # DS5
						device pnp 2e.116 off end # DS3
						device pnp 2e.316 on  end # PCHDSW
						device pnp 2e.416 off end # DSWWOPT
						device pnp 2e.516 on  end # DS3OPT
						device pnp 2e.616 on  end # DSDSS
						device pnp 2e.716 off end # DSPU
					end # chip superio/nuvoton/nct6791d

				end # device pnp 2e.0
			end # chip superio/common

			chip drivers/pc80/tpm
				device pnp 4e.0 on end  # TPM module
			end
		end
		device ref hda		on
			register "PchHdaVcType" = "Vc1"
		end
		device ref smbus	on	end
		device ref fast_spi	on	end
	end
end
