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

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

	device domain 0 on
		subsystemid 0x1558 0xa671 inherit

		#TODO: DDIB and DDID are both connected to TBT

		device ref xhci on
			register "usb2_ports" = "{
				[0] = USB2_PORT_MID(OC_SKIP),		/* Type-A 3.2 Gen 1 (Left) */
				[1] = USB2_PORT_MID(OC_SKIP),		/* Type-A 2.0 (Left) */
				/* Port reset messaging cannot be used,
				 * so do not use USB2_PORT_TYPE_C for these */
				[2] = USB2_PORT_MID(OC_SKIP),		/* Type-C 3.2 Gen 2 (Rear) */
				[8] = USB2_PORT_MID(OC_SKIP),		/* Type-C Thunderbolt (Right) */
				[10] = USB2_PORT_MID(OC_SKIP),		/* Camera */
				[11] = USB2_PORT_MID(OC_SKIP),		/* Secure Pad */
				[13] = USB2_PORT_MID(OC_SKIP),		/* Bluetooth */
			}"
			register "usb3_ports" = "{
				[0] = USB3_PORT_DEFAULT(OC_SKIP),	/* Type-A 3.2 Gen 1 (Left) */
				[2] = USB3_PORT_DEFAULT(OC_SKIP),	/* Type-C 3.2 Gen 2 (Rear) */
			}"
		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)
			# Clock source is shared with LAN and hence marked as free running.
			register "pch_pcie_rp[PCH_RP(3)]" = "{
				.clk_src = 13,
				.clk_req = 13,
				.flags = PCIE_RP_LTR | PCIE_RP_CLK_SRC_UNUSED,
			}"
			register "pcie_clk_config_flag[13]" = "PCIE_CLK_FREE_RUNNING"
			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,
			}"
		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 | PCIE_RP_AER,
			}"
		end

		device ref pcie_rp21 on
			# PCH RP#21 x4, Clock 15 (TBT)
			register "pch_pcie_rp[PCH_RP(21)]" = "{
				.clk_src = 15,
				.clk_req = 15,
				.flags = PCIE_RP_HOTPLUG | PCIE_RP_LTR,
			}"
		end

		device ref pcie_rp25 on
			# PCH RP#25 x4, Clock 8 (SSD2)
			register "pch_pcie_rp[PCH_RP(25)]" = "{
				.clk_src = 8,
				.clk_req = 8,
				.flags = PCIE_RP_LTR | PCIE_RP_AER,
			}"
		end

		device ref gbe on end
	end
end
