chip soc/intel/elkhartlake

	device cpu_cluster 0 on end

	# 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 "pmc_gpe0_dw0" = "GPP_B"
	register "pmc_gpe0_dw1" = "GPP_F"
	register "pmc_gpe0_dw2" = "GPP_E"

	# FSP configuration
	register "SaGv" = "SaGv_Disabled"

	# Enable IBECC for the complete memory
	register "ibecc" = "{
		.enable = 1,
		.mode = IBECC_ALL
	}"

	# USB related UPDs
	register "usb2_ports[0]" = "USB2_PORT_MID(OC2)"	# X125/X135
	register "usb2_ports[1]" = "USB2_PORT_MID(OC2)"	# X125/X135
	register "usb2_ports[2]" = "USB2_PORT_MID(OC0)"	# X145/X155
	register "usb2_ports[3]" = "USB2_PORT_MID(OC0)"	# X145/X155
	register "usb2_ports[4]" = "USB2_PORT_MID(OC3)"	# USB Panel
	register "usb2_ports[5]" = "USB2_PORT_MID(OC3)"	# USB Panel
	register "usb2_ports[6]" = "USB2_PORT_EMPTY"
	register "usb2_ports[7]" = "USB2_PORT_EMPTY"
	register "usb2_ports[8]" = "USB2_PORT_EMPTY"
	register "usb2_ports[9]" = "USB2_PORT_EMPTY"

	register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC_SKIP)"	# USB3/2 Type A port1
	register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC_SKIP)"	# USB3/2 Type A port2
	register "usb3_ports[2]" = "USB3_PORT_EMPTY"	# UNUSED
	register "usb3_ports[3]" = "USB3_PORT_EMPTY"	# UNUSED

	# Skip the CPU replacement check
	register "SkipCpuReplacementCheck" = "1"

	# PCIe root ports related UPDs
	register "PcieClkSrcUsage[0]" = "PCIE_CLK_NOTUSED"
	register "PcieClkSrcUsage[1]" = "PCIE_CLK_FREE"
	register "PcieClkSrcUsage[2]" = "PCIE_CLK_NOTUSED"
	register "PcieClkSrcUsage[3]" = "PCIE_CLK_NOTUSED"
	register "PcieClkSrcUsage[4]" = "PCIE_CLK_FREE"
	register "PcieClkSrcUsage[5]" = "PCIE_CLK_NOTUSED"

	register "PcieClkSrcClkReq[0]" = "PCIE_CLK_NOTUSED"
	register "PcieClkSrcClkReq[1]" = "PCIE_CLK_NOTUSED"
	register "PcieClkSrcClkReq[2]" = "PCIE_CLK_NOTUSED"
	register "PcieClkSrcClkReq[3]" = "PCIE_CLK_NOTUSED"
	register "PcieClkSrcClkReq[4]" = "PCIE_CLK_NOTUSED"
	register "PcieClkSrcClkReq[5]" = "PCIE_CLK_NOTUSED"

	# Disable all L1 substates for PCIe root ports
	register "PcieRpL1Substates[1]" = "L1_SS_DISABLED"
	register "PcieRpL1Substates[6]" = "L1_SS_DISABLED"

	# Disable LTR for all PCIe root ports
	register "PcieRpLtrDisable[1]" = "true"
	register "PcieRpLtrDisable[6]" = "true"

	# Storage (SDCARD/EMMC) related UPDs
	register "ScsEmmcHs400Enabled" = "0"
	register "ScsEmmcDdr50Enabled" = "1"
	register "SdCardPowerEnableActiveHigh" = "1"

	# GPIO for SD card detect
	register "sdcard_cd_gpio" = "GPP_G5"

	# LPSS Serial IO (I2C/UART/GSPI) related UPDs
	register "SerialIoI2cMode" = "{
		[PchSerialIoIndexI2C0] = PchSerialIoPci,
		[PchSerialIoIndexI2C1] = PchSerialIoPci,
		[PchSerialIoIndexI2C2] = PchSerialIoPci,
		[PchSerialIoIndexI2C3] = PchSerialIoPci,
		[PchSerialIoIndexI2C4] = PchSerialIoPci,
		[PchSerialIoIndexI2C5] = PchSerialIoPci,
		[PchSerialIoIndexI2C6] = PchSerialIoDisabled,
		[PchSerialIoIndexI2C7] = PchSerialIoDisabled,
	}"

	register "SerialIoUartMode" = "{
		[PchSerialIoIndexUART0] = PchSerialIoPci,
		[PchSerialIoIndexUART1] = PchSerialIoPci,
		[PchSerialIoIndexUART2] = PchSerialIoPci,
	}"

	register "SerialIoUartDmaEnable" = "{
		[PchSerialIoIndexUART0] = 1,
		[PchSerialIoIndexUART1] = 1,
		[PchSerialIoIndexUART2] = 1,
	}"

	# TSN GBE related UPDs
	register "PchTsnGbeLinkSpeed" = "Tsn_1_Gbps"
	register "PchTsnGbeSgmiiEnable" = "1"
	register "PseDmaOwn[0]" = "Host_Owned"
	register "PseDmaOwn[1]" = "Host_Owned"
	register "pch_tsn_phy_irq_edge" = "RISING_EDGE"
	register "pse_tsn_phy_irq_edge[0]" = "RISING_EDGE"
	register "pse_tsn_phy_irq_edge[1]" = "RISING_EDGE"

	register "DdiPortAHpd" = "1"
	register "DdiPortADdc" = "1"

	register "common_soc_config" = "{
		.i2c[1] = {
			.speed = I2C_SPEED_STANDARD,
			.speed_config[0] = {
				.speed = I2C_SPEED_STANDARD,
				.scl_hcnt = 0x1e1,
				.scl_lcnt = 0x1f4,
				.sda_hold = 0x64
			},
		},
		.i2c[2] = {
			.speed = I2C_SPEED_STANDARD,
			.speed_config[0] = {
				.speed = I2C_SPEED_STANDARD,
				.scl_hcnt = 0x1df,
				.scl_lcnt = 0x1f4,
				.sda_hold = 0x64
			},
		},
	}"

	# FIVR related settings
	register "fivr" = "{
		.fivr_config_en = true,
		.vcc_low_high_us = 50,
	}"

	# Disable L1 prefetcher for real-time demands
	register "L1_prefetcher_disable" = "true"

	device domain 0 on
		device pci 00.0 on	end # Host Bridge
		device pci 02.0 on	end # Integrated Graphics Device

		device pci 14.0 on	end # USB3.1 xHCI

		device pci 15.0 on	end # I2C0
		device pci 15.1 on	    # I2C1
			# Enable external RTC chip
			chip drivers/i2c/rv3028c7
				register "bus_speed" = "I2C_SPEED_STANDARD"
				register "set_user_date" = "1"
				register "user_year" = "04"
				register "user_month" = "07"
				register "user_day" = "01"
				register "user_weekday" = "4"
				register "bckup_sw_mode" = "BACKUP_SW_LEVEL"
				register "cap_charge" = "CHARGE_OFF"
				device i2c 0x52 on end  # RTC RV3028-C7
			end
		end
		device pci 15.2 on	    # I2C2
			# Add dummy I2C device to limit BUS speed to 100 kHz in OS
			chip drivers/i2c/generic
				register "hid" = ""PRP0001""
				register "speed" = "I2C_SPEED_STANDARD"
				device i2c 0x7f on end
			end
			# Enable external display bridge (eDP to LVDS)
			chip drivers/i2c/ptn3460
				device i2c 0x20 on end  # PTN3460 DP2LVDS Bridge
			end
		end
		device pci 15.3 on	end # I2C3

		device pci 16.0 hidden	end # Management Engine Interface 1

		device pci 19.0 on	end # I2C4
		device pci 19.1 on	end # I2C5
		device pci 19.2 on	end # UART2

		device pci 1a.0 on	end # eMMC
		device pci 1a.1 on	end # SD

		device pci 1c.1 on	end # RP2 (pcie0 single VC)
		device pci 1c.6 on	end # RP7 (pcie3 multi VC)

		device pci 1d.0 off	end # Intel PSE IPC (local host to PSE)
		device pci 1d.1 on	    # Intel PSE Time-Sensitive Networking GbE 0
			# Enable external Marvell PHY 88E1512
			chip drivers/net/phy/m88e1512
				register "configure_leds" = "true"
				# LED[0]: On - 1000 Mbps Link, Off - Else
				register "led_0_ctrl" = "7"
				# LED[1]: On - Link, Blink - Activity, Off - No Link
				register "led_1_ctrl" = "1"
				# INTn is routed to LED[2] pin
				register "enable_int" = "true"
				register "downshift_cnt" = "2"
				register "force_mos" = "true"
				register "pmos_val" = "0xF"
				register "nmos_val" = "0xA"
				device mdio 0 on    # PHY address
					ops m88e1512_ops
				end
			end
		end
		device pci 1d.2 on	    # Intel PSE Time-Sensitive Networking GbE 1
			# Enable external Marvell PHY 88E1512
			chip drivers/net/phy/m88e1512
				register "configure_leds" = "true"
				# LED[0]: On - 1000 Mbps Link, Off - Else
				register "led_0_ctrl" = "7"
				# LED[1]: On - Link, Blink - Activity, Off - No Link
				register "led_1_ctrl" = "1"
				# INTn is routed to LED[2] pin
				register "enable_int" = "true"
				register "downshift_cnt" = "2"
				register "force_mos" = "true"
				register "pmos_val" = "0xF"
				register "nmos_val" = "0xA"
				device mdio 1 on    # PHY address
					ops m88e1512_ops
				end
			end
		end

		device pci 1e.0 on	end # UART0
		device pci 1e.1 on	end # UART1
		device pci 1e.4 on	    # PCH Time-Sensitive Networking GbE
			# Enable external Marvell PHY 88E1512
			chip drivers/net/phy/m88e1512
				register "configure_leds" = "true"
				# LED[0]: On - 1000 Mbps Link, Off - Else
				register "led_0_ctrl" = "7"
				# LED[1]: On - Link, Blink - Activity, Off - No Link
				register "led_1_ctrl" = "1"
				# INTn is routed to LED[2] pin
				register "enable_int" = "true"
				register "downshift_cnt" = "2"
				device mdio 1 on    # PHY address
					ops m88e1512_ops
				end
			end
		end

		device pci 1f.0 on	    # eSPI Interface
			chip drivers/pc80/tpm
				device pnp 0c31.0 on end
			end
		end
		device pci 1f.2 hidden	end # Power Management Controller
		device pci 1f.4	on	end # SMBus
		device pci 1f.5 on	end # PCH SPI (flash & TPM)
	end
end
