chip soc/intel/alderlake
	# Support 5600 MT/s memory
	register "max_dram_speed_mts" = "5600"

	device domain 0 on
		subsystemid 0x1558 0xd502 inherit

		device ref xhci on
			register "usb2_ports" = "{
				[0] = USB2_PORT_MID(OC_SKIP),		/* TYPEC2 (USB 3.1 Gen2 + DP 1.4 HBR3) */
				[1] = USB2_PORT_MID(OC_SKIP),		/* AJ_USB1 (USB 3.2 Gen2) */
				[2] = USB2_PORT_MID(OC_SKIP),		/* AJ_USB2 (USB 3.2 Gen2 + charger) */
				[5] = USB2_PORT_MID(OC_SKIP),		/* Per-KB */
				[6] = USB2_PORT_MID(OC_SKIP),		/* Fingerprint */
				[7] = USB2_PORT_MID(OC_SKIP),		/* Camera */
				[8] = USB2_PORT_MID(OC_SKIP),		/* TBT USB2.0 */
				[13] = USB2_PORT_MID(OC_SKIP),		/* Bluetooth */
			}"
			register "usb3_ports" = "{
				[0] = USB3_PORT_DEFAULT(OC_SKIP),	/* TYPEC2 (USB 3.1 Gen2 + DP 1.4 HBR3) */
				[1] = USB3_PORT_DEFAULT(OC_SKIP),	/* AJ_USB1 (USB 3.2 Gen2) */
				[2] = USB3_PORT_DEFAULT(OC_SKIP),	/* AJ_USB2 (USB 3.2 Gen2 + charger) */
			}"
		end

		device ref i2c0 on
			# Touchpad I2C bus
			register "serial_io_i2c_mode[PchSerialIoIndexI2C0]" = "PchSerialIoPci"
			chip drivers/i2c/hid
				register "generic.hid" = ""ELAN0412""
				register "generic.desc" = ""ELAN Touchpad""
				register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_E7)"
				register "generic.detect" = "1"
				register "hid_desc_reg_offset" = "0x01"
				device i2c 15 on end
			end
			chip drivers/i2c/hid
				register "generic.hid" = ""FTCS1000""
				register "generic.desc" = ""FocalTech Touchpad""
				register "generic.irq_gpio" = "ACPI_GPIO_IRQ_LEVEL_LOW(GPP_E7)"
				register "generic.detect" = "1"
				register "hid_desc_reg_offset" = "0x01"
				device i2c 38 on end
			end
		end

		device ref pcie5_0 on
			# CPU PCIe RP#2 x8, Clock 14 (DGPU)
			register "cpu_pcie_rp[CPU_RP(2)]" = "{
				.clk_src = 14,
				.clk_req = 14,
				.flags = PCIE_RP_LTR | PCIE_RP_AER,
			}"
		end

		device ref pcie_rp3 on
			# PCH RP#3 x1, Clock 13 (GLAN)
			register "pch_pcie_rp[PCH_RP(3)]" = "{
				.clk_src = 13,
				.clk_req = 13,
				.flags = PCIE_RP_LTR | PCIE_RP_AER,
			}"
			device pci 00.0 on end
		end

		device ref pcie_rp5 on
			# PCH RP#5 x1, Clock 12 (CARD)
			register "pch_pcie_rp[PCH_RP(5)]" = "{
				.clk_src = 12,
				.clk_req = 12,
				.flags = PCIE_RP_LTR | PCIE_RP_AER | PCIE_RP_HOTPLUG,
			}"
		end

		device ref pcie_rp8 on
			# PCH RP#8 x1, Clock 11 (WLAN)
			register "pch_pcie_rp[PCH_RP(8)]" = "{
				.clk_src = 11,
				.clk_req = 11,
				.flags = PCIE_RP_LTR | PCIE_RP_AER,
			}"
		end

		device ref pcie_rp13 on
			# PCH RP#13 x4, Clock 10 (SSD1)
			register "pch_pcie_rp[PCH_RP(13)]" = "{
				.clk_src = 10,
				.clk_req = 10,
				.flags = PCIE_RP_LTR, // XXX: AER spews warnings
			}"
		end

		device ref pcie_rp21 on
			# PCH RP#21 x4, Clock 5 (SSD2)
			register "pch_pcie_rp[PCH_RP(21)]" = "{
				.clk_src = 5,
				.clk_req = 5,
				.flags = PCIE_RP_LTR, // XXX: AER spews warnings
			}"
		end

		device ref pcie_rp25 on
			# PCH RP#25 x4, Clock 15 (TBT)
			register "pch_pcie_rp[PCH_RP(25)]" = "{
				.clk_src = 15,
				.clk_req = 15,
				.flags = PCIE_RP_LTR | PCIE_RP_HOTPLUG, // XXX: AER causes UnsupReq warnings
			}"
		end
	end
end
