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

chip soc/intel/meteorlake
	#TODO: POWER LIMITS
	#register "power_limits_config[RPL_P_282_242_142_15W_CORE]" = "{
	#	.tdp_pl1_override = 15,
	#	.tdp_pl2_override = 46,
	#}"

	device domain 0 on
		subsystemid 0x1558 0x2624 inherit

		device ref tbt_pcie_rp0 on end
		device ref tcss_xhci on
			register "tcss_ports[0]" = "TCSS_PORT_DEFAULT(OC_SKIP)"
			#TODO: TCP1 is used as USB Type-A
			register "tcss_ports[1]" = "TCSS_PORT_DEFAULT(OC_SKIP)"
			#TODO: TCP2 is used as HDMI
			#TODO: TCP3 goes to redriver, then mux, then USB Type-C
			register "tcss_ports[3]" = "TCSS_PORT_DEFAULT(OC_SKIP)"
			chip drivers/usb/acpi
				device ref tcss_root_hub on
					chip drivers/usb/acpi
						register "desc" = ""TBT Type-C""
						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
						device ref tcss_usb3_port0 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""USB Type-A""
						register "type" = "UPC_TYPE_USB3_A"
						device ref tcss_usb3_port1 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""USB Type-C""
						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
						device ref tcss_usb3_port3 on end
					end
				end
			end
		end
		device ref tcss_dma0 on end
		device ref xhci on
			register "usb2_ports" = "{
				[0] = USB2_PORT_MID(OC_SKIP),		/* TODO: USB TYPEA port1 GEN2 */
				[1] = USB2_PORT_MID(OC_SKIP),		/* TODO: USB TYPEA port2 GEN1 */
				[2] = USB2_PORT_TYPE_C(OC_SKIP),	/* TODO: TBT TYPEC USB2.0 */
				[4] = USB2_PORT_TYPE_C(OC_SKIP),	/* TODO: TYPEC USB2.0 */
				[6] = USB2_PORT_MID(OC_SKIP),		/* Camera */
				[9] = USB2_PORT_MID(OC_SKIP),		/* Bluetooth */
			}"
			register "usb3_ports" = "{
				[0] = USB3_PORT_DEFAULT(OC_SKIP),	/* TODO: USB port1 GEN1 */
			}"
		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_A17)"
				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_A17)"
				register "generic.detect" = "1"
				register "hid_desc_reg_offset" = "0x01"
				device i2c 38 on end
			end
		end
		device ref i2c5 on
			# Smart Amplifier I2C bus
			register "serial_io_i2c_mode[PchSerialIoIndexI2C5]" = "PchSerialIoPci"
			chip drivers/i2c/tas5825m
				register "id" = "0"
				device i2c 4e on end # (8bit address: 0x9c)
			end
		end

		device ref pcie_rp1 on
			# PCH RP#1 x1, Clock 0 (CARD)
			register "pcie_rp[PCH_RP(1)]" = "{
				.clk_src = 0,
				.clk_req = 0,
				.flags = PCIE_RP_LTR | PCIE_RP_AER,
			}"
		end
		device ref pcie_rp2 on
			# PCH RP#2 x1, Clock 2 (WLAN)
			register "pcie_rp[PCH_RP(2)]" = "{
				.clk_src = 2,
				.clk_req = 2,
				.flags = PCIE_RP_LTR | PCIE_RP_AER,
			}"
			smbios_slot_desc "SlotTypeM2Socket1_SD" "SlotLengthOther" "M.2/E 2230 (J_WLAN1)" "SlotDataBusWidth1X"
		end
		device ref pcie_rp10 on
			# PCH RP#10 x4, Clock 7 (SSD2)
			# This uses signals PCIE_13 through PCIE_16 in the schematics
			# but is identified as root port 10 in firmware.
			register "pcie_rp[PCH_RP(10)]" = "{
				.clk_src = 7,
				.clk_req = 7,
				.flags = PCIE_RP_LTR | PCIE_RP_AER,
			}"
			smbios_slot_desc "SlotTypeM2Socket3" "SlotLengthOther" "M.2/M 2280 (J_SSD2)" "SlotDataBusWidth4X"
		end
		device ref pcie_rp11 on
			# CPU RP#11 x4, Clock 8 (SSD1)
			# This uses signals PCIE_17 through PCIE_20 in the schematics
			# but is identified as root port 11 in firmware.
			register "pcie_rp[PCIE_RP(11)]" = "{
				.clk_src = 8,
				.clk_req = 8,
				.flags = PCIE_RP_LTR | PCIE_RP_AER,
			}"
			smbios_slot_desc "SlotTypeM2Socket3" "SlotLengthOther" "M.2/M 2280 (J_SSD1)" "SlotDataBusWidth4X"
		end
	end
end
