chip soc/intel/skylake

	# 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"

	register "gen1_dec" = "0x007c0a01"	# Super IO SWC
	register "gen2_dec" = "0x000c0ca1"	# IPMI KCS

	# Additional FSP Configuration
	# This board has an IGD with no output.
	register "PrimaryDisplay" = "Display_Auto"

	# NB: Overcurrent OCx values untested
	register "usb2_ports" = "{
		[0] = USB2_PORT_MID(OC3),	/* USB 6 (3.0) */
		[1] = USB2_PORT_MID(OC3),	/* USB 7 (3.0) */
		[2] = USB2_PORT_MID(OC2),	/* USB 0 */
		[3] = USB2_PORT_MID(OC2),	/* USB 1 */
		[4] = USB2_PORT_MID(OC1),	/* USB 4 */
		[5] = USB2_PORT_MID(OC1),	/* USB 5 */
		[8] = USB2_PORT_MID(OC0),	/* USB 2 */
		[9] = USB2_PORT_MID(OC0),	/* USB 3 */
		[10] = USB2_PORT_MID(OC5),	/* USB 9 (3.0) */
		[11] = USB2_PORT_MID(OC5),	/* USB 10 (3.0) */
		[12] = USB2_PORT_MID(OC4),	/* USB 8 (3.0) */
		[13] = USB2_PORT_MID(OC_SKIP),	/* IPMI USB hub */
		[14] = USB2_PORT_MID(OC0),	/* Unknown */
		[15] = USB2_PORT_MID(OC0),	/* Unknown */
	}"

	register "usb3_ports" = "{
		[0] = USB3_PORT_DEFAULT(OC3),	/* USB 6 */
		[1] = USB3_PORT_DEFAULT(OC3),	/* USB 7 */
		[2] = USB3_PORT_DEFAULT(OC4),	/* USB 8 */
		[3] = USB3_PORT_DEFAULT(OC5),	/* USB 9 */
		[4] = USB3_PORT_DEFAULT(OC5),	/* USB 10 */
	}"

	device domain 0 on
		device ref peg0 on
			# Slot JSXB1B
			smbios_slot_desc "SlotTypePciExpressGen3X16" "SlotLengthLong" "CPU SLOT1 PCI-E 3.0 X16" "SlotDataBusWidth16X"
		end
		device ref pcie_rp1 on
			register "PcieRpEnable[0]" = "1"
			device pci 00.0 on end	# GbE
		end
		device ref pcie_rp2 on
			register "PcieRpEnable[1]" = "1"
			device pci 00.0 on end	# GbE
		end
		device ref pcie_rp5 on
			register "PcieRpEnable[4]" = "1"
			smbios_slot_desc "SlotTypeM2Socket3" "SlotLengthOther" "M.2 2280" "SlotDataBusWidth4X"
		end
		device ref pcie_rp9 on
			# Slot JSXB2
			register "PcieRpEnable[8]" = "1"
			smbios_slot_desc "SlotTypePciExpressGen3X4" "SlotLengthShort" "PCH SLOT2 PCI-E 3.0 X4(IN X8)" "SlotDataBusWidth4X"
		end
		device ref pcie_rp13 on
			register "PcieRpEnable[12]" = "1"
			device pci 00.0 on	# Aspeed PCI Bridge
				device pci 00.0 on end	# Aspeed 2400 VGA
			end
		end
		device ref lpc_espi on
			chip drivers/ipmi
				# On cold boot it takes a while for the BMC to start the IPMI service
				register "wait_for_bmc" = "1"
				register "bmc_boot_timeout" = "60"
				device pnp ca2.0 on end	# IPMI KCS
			end
			chip superio/common
				device pnp 2e.0 on
					chip superio/aspeed/ast2400
						device pnp 2e.2 on	# SUART1
							io 0x60 = 0x3f8
							irq 0x70 = 4
							drq 0xf0 = 0x00
						end
						device pnp 2e.3 on	# SUART2
							io 0x60 = 0x2f8
							irq 0x70 = 3
							drq 0xf0 = 0x00
						end
						device pnp 2e.4 on	# SWC
							io 0x60 = 0xa00
							io 0x62 = 0xa10
							io 0x64 = 0xa20
							io 0x66 = 0xa30
							irq 0x70 = 0x00
						end
						device pnp 2e.5 off end	# KBC
						device pnp 2e.7 on	# GPIO
							irq 0x70 = 0x00
						end
						device pnp 2e.b off end	# SUART3
						device pnp 2e.c off end	# SUART4
						device pnp 2e.d on	# iLPC2AHB
							irq 0x70 = 0x00
						end
						device pnp 2e.e on	# Mailbox
							io 0x60 = 0xa40
							irq 0x70 = 0x00
						end
					end
				end
			end
		end
	end
end
