chip soc/intel/jasperlake

	# Intel Common SoC Config
	#+-------------------+---------------------------+
	#| Field             |  Value                    |
	#+-------------------+---------------------------+
	#| GSPI0             | cr50 TPM. Early init is   |
	#|                   | required to set up a BAR  |
	#|                   | for TPM communication     |
	#|                   | before memory is up       |
	#| I2C1              | LVDS                      |
	#| I2C2              | Touchscreen               |
	#| I2C4              | Audio                     |
	#+-------------------+---------------------------+
	register "common_soc_config" = "{
		.gspi[0] = {
			.speed_mhz = 1,
			.early_init = 1,
		},
		.i2c[1] = {
			.speed = I2C_SPEED_FAST,
		},
		.i2c[2] = {
			.speed = I2C_SPEED_FAST,
			.speed_config[0] = {
				.speed = I2C_SPEED_FAST,
				.scl_lcnt = 185,
				.scl_hcnt = 95,
			}
		},
		.i2c[4] = {
			.speed = I2C_SPEED_FAST,
			.speed_config[0] = {
				.speed = I2C_SPEED_FAST,
				.scl_lcnt = 185,
				.scl_hcnt = 95,
			}
		},
	}"

	register "disable_external_bypass_vr" = "1"    # Does not support external vnn power rail

	# Power limit config
	register "power_limits_config[JSL_N4500_6W_CORE]" = "{
		.tdp_pl1_override = 7,
		.tdp_pl2_override = 25,
	}"

	register "power_limits_config[JSL_N6000_6W_CORE]" = "{
		.tdp_pl1_override = 7,
		.tdp_pl2_override = 25,
	}"

	register "power_limits_config[JSL_N5100_6W_CORE]" = "{
		.tdp_pl1_override = 7,
		.tdp_pl2_override = 25,
	}"

	register "tcc_offset" = "5"	# TCC of 100C

	# USB Port Configuration
	register "usb2_ports[5]" = "USB2_PORT_MID(OC_SKIP)"     # Camera
	register "usb2_ports[6]" = "USB2_PORT_MID(OC_SKIP)"     # Lan

	device domain 0 on
		device pci 04.0 on
			chip drivers/intel/dptf
				# Default DPTF Policy for all drawcia boards if not overridden
				register "options.tsr[0].desc" = ""Ambient""

				## Passive Policy
				register "policies.passive" = "{
					[0] = DPTF_PASSIVE(CPU,		CPU,	       85, 60000),
					[1] = DPTF_PASSIVE(CPU,		TEMP_SENSOR_0, 65, 60000),
				}"

				## Critical Policy
				register "policies.critical" = "{
					[0] = DPTF_CRITICAL(CPU,           105, SHUTDOWN),
					[1] = DPTF_CRITICAL(TEMP_SENSOR_0,  78, SHUTDOWN),
				}"

				register "controls.power_limits" = "{
					.pl1 = {
						.min_power = 6000,
						.max_power = 6500,
						.time_window_min = 1 * MSECS_PER_SEC,
						.time_window_max = 1 * MSECS_PER_SEC,
						.granularity = 100,
					},
					.pl2 = {
						.min_power = 25000,
						.max_power = 25000,
						.time_window_min = 1 * MSECS_PER_SEC,
						.time_window_max = 1 * MSECS_PER_SEC,
						.granularity = 1000,
					}
				}"

				## Charger Performance Control (Control, mA)
				register "controls.charger_perf" = "{
					[0] = { 255, 3000 },
					[1] = {  24, 1500 },
					[2] = {  16, 1000 },
					[3] = {   8,  500 }
				}"

				device generic 0 on end
			end
		end # SA Thermal device
		device pci 14.0 on
			chip drivers/usb/acpi
				device usb 0.0 on
					chip drivers/usb/acpi
						register "desc" = ""USB2 Type-C Port C0""
						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
						register "group" = "ACPI_PLD_GROUP(1, 1)"
						device usb 2.0 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""USB2 Type-A Port A2""
						register "type" = "UPC_TYPE_A"
						register "group" = "ACPI_PLD_GROUP(2, 1)"
						device usb 2.1 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""USB2 Type-A Port A0""
						register "type" = "UPC_TYPE_A"
						register "group" = "ACPI_PLD_GROUP(2, 2)"
						device usb 2.2 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""USB2 Type-A Port A1""
						register "type" = "UPC_TYPE_A"
						register "group" = "ACPI_PLD_GROUP(2, 3)"
						device usb 2.3 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""USB2 Type-A Port A3""
						register "type" = "UPC_TYPE_A"
						register "group" = "ACPI_PLD_GROUP(2, 4)"
						device usb 2.4 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""Camera""
						register "type" = "UPC_TYPE_INTERNAL"
						device usb 2.5 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""LAN""
						register "type" = "UPC_TYPE_INTERNAL"
						device usb 2.6 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""Bluetooth""
						register "type" = "UPC_TYPE_INTERNAL"
						register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_H19)"
						device usb 2.7 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""USB3 Type-C Port C0""
						register "type" = "UPC_TYPE_C_USB2_SS_SWITCH"
						register "group" = "ACPI_PLD_GROUP(1, 1)"
						device usb 3.0 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""LAN""
						register "type" = "UPC_TYPE_INTERNAL"
						device usb 3.1 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""USB3 Type-A Port A0""
						register "type" = "UPC_TYPE_USB3_A"
						register "group" = "ACPI_PLD_GROUP(2, 1)"
						device usb 3.2 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""USB3 Type-A Port A1""
						register "type" = "UPC_TYPE_USB3_A"
						register "group" = "ACPI_PLD_GROUP(2, 2)"
						device usb 3.3 on end
					end
				end
			end
		end # USB xHCI
		device pci 15.0 off end # I2C 0
		device pci 15.2 on
			chip drivers/i2c/hid
				register "generic.hid" = ""ILTK0001""
				register "generic.desc" = ""ILITEK Touchscreen""
				register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_D4_IRQ)"
				register "generic.detect" = "1"
				register "generic.reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D5)"
				register "generic.reset_delay_ms" = "400"
				register "generic.enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D6)"
				register "generic.enable_delay_ms" = "12"
				register "generic.wake" = "GPE0_DW2_04"
				register "generic.has_power_resource" = "1"
				register "hid_desc_reg_offset" = "0x01"
				device i2c 41 on end
			end
		end # I2C 2
		device pci 15.3 off  end #I2C 3
		device pci 1c.7 on
			chip drivers/wifi/generic
				register "wake" = "GPE0_DW2_03"
				device pci 00.0 on  end
			end
		end # PCI Express Root Port 8 - WLAN
		device pci 19.0 on
			chip drivers/i2c/generic
				register "hid" = ""RTL5682""
				register "name" = ""RT58""
				register "desc" = ""Realtek RT5682""
				register "irq_gpio" = "ACPI_GPIO_IRQ_EDGE_BOTH(GPP_D16)"
				register "property_count" = "1"
				register "property_list[0].type" = "ACPI_DP_TYPE_INTEGER"
				register "property_list[0].name" = ""realtek,jd-src""
				register "property_list[0].integer" = "1"
				device i2c 1a on end
			end
		end #I2C 4
		device pci 1f.3 on
			chip drivers/generic/alc1015
				register "hid" = ""RTL1019""
				register "sdb" =  "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D17)"
				device generic 0 on end
			end
		end # Intel HDA
	end
end
