fw_config
	field AUDIO_CODEC_SOURCE 41 43
		option AUDIO_CODEC_UNPROVISIONED 0
		option AUDIO_CODEC_ALC5682 1
		option AUDIO_CODEC_CS42l42 2
		option AUDIO_CODEC_ALC5682I_VS 3
	end
end

chip soc/intel/jasperlake
	# Disable PCIe Root Port 8 (index 7)
	register "PcieRpEnable[7]" = "0"
	# Disable PCIe Clock Source 4 (index 3)
	register "PcieClkSrcUsage[3]" = "0xff"

	# 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       |
	#| I2C0              | Trackpad                  |
	#| I2C1              | Digitizer                 |
	#| I2C2              | Touchscreen               |
	#| I2C3              | Camera                    |
	#| I2C4              | Audio                     |
	#+-------------------+---------------------------+
	register "common_soc_config" = "{
		.gspi[0] = {
			.speed_mhz = 1,
			.early_init = 1,
		},
		.i2c[0] = {
			.speed = I2C_SPEED_FAST,
			.speed_config[0] = {
				.speed = I2C_SPEED_FAST,
				.scl_lcnt = 180,
				.scl_hcnt = 90,
				.sda_hold = 40,
			}
		},
		.i2c[1] = {
			.speed = I2C_SPEED_FAST,
		},
		.i2c[2] = {
			.speed = I2C_SPEED_FAST,
		},
		.i2c[3] = {
			.speed = I2C_SPEED_FAST,
		},
		.i2c[4] = {
			.speed = I2C_SPEED_FAST,
			.speed_config[0] = {
				.speed = I2C_SPEED_FAST,
				.scl_lcnt = 185,
				.scl_hcnt = 95,
				.sda_hold = 40,
			}
		},
	}"

	# USB Port Configuration
	register "usb2_ports[2]" = "{
		.enable = 1,
		.ocpin = OC_SKIP,
		.tx_bias = USB2_BIAS_0MV,
		.tx_emp_enable = USB2_DE_EMP_ON_PRE_EMP_ON,
		.pre_emp_bias  = USB2_BIAS_28P15MV,
		.pre_emp_bit   = USB2_HALF_BIT_PRE_EMP,
	}" # Type-A
	register "usb2_ports[3]" = "{
		.enable = 1,
		.ocpin = OC_SKIP,
		.tx_bias = USB2_BIAS_0MV,
		.tx_emp_enable = USB2_DE_EMP_ON_PRE_EMP_ON,
		.pre_emp_bias  = USB2_BIAS_16P9MV,
		.pre_emp_bit   = USB2_HALF_BIT_PRE_EMP,
	}" # WWAN
	register "usb2_ports[5]" = "{
		.enable = 1,
		.ocpin = OC_SKIP,
		.tx_bias = USB2_BIAS_0MV,
		.tx_emp_enable = USB2_DE_EMP_ON_PRE_EMP_ON,
		.pre_emp_bias  = USB2_BIAS_28P15MV,
		.pre_emp_bit   = USB2_HALF_BIT_PRE_EMP,
	}" # Camera

	register "tcc_offset" = "10"    # TCC of 95C

	register "xhci_lfps_sampling_offtime_ms" = "0"

	device domain 0 on
		device pci 04.0 on
			chip drivers/intel/dptf
				## Passive Policy
				register "policies.passive" = "{
					[0] = DPTF_PASSIVE(CPU, TEMP_SENSOR_0, 52, 5000),
					[1] = DPTF_PASSIVE(CPU, TEMP_SENSOR_1, 52, 5000),
					[2] = DPTF_PASSIVE(CHARGER, TEMP_SENSOR_2, 50, 5000),}"
				## Critical Policy
				register "policies.critical" = "{
					[0] = DPTF_CRITICAL(CPU,          105, SHUTDOWN),
					[1] = DPTF_CRITICAL(TEMP_SENSOR_0, 90, SHUTDOWN),
					[2] = DPTF_CRITICAL(TEMP_SENSOR_1, 90, SHUTDOWN),
					[3] = DPTF_CRITICAL(TEMP_SENSOR_2, 90, SHUTDOWN),}"
				register "controls.power_limits.pl1" = "{
						.min_power = 3500,
						.max_power = 7000,
						.time_window_min = 28 * MSECS_PER_SEC,
						.time_window_max = 28 * MSECS_PER_SEC,
						.granularity = 250,}"
				register "controls.power_limits.pl2" = "{
						.min_power = 20000,
						.max_power = 20000,
						.time_window_min = 28 * MSECS_PER_SEC,
						.time_window_max = 32 * MSECS_PER_SEC,
						.granularity = 1000,}"
				## Charger Performance Control (Control, mA)
				register "controls.charger_perf" = "{
					[0] = { 255, 3000 },
					[1] = {  32, 2000 },
					[2] = {  24, 1500 },
					[3] = {  16, 1000 },
					[4] = {   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" = ""UFCamera""
						register "type" = "UPC_TYPE_INTERNAL"
						register "has_power_resource" = "1"
						register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D15)"
						register "enable_delay_ms" = "20"
						device usb 2.5 on end
					end
					chip drivers/usb/acpi
						register "desc" = ""LTE""
						register "type" = "UPC_TYPE_INTERNAL"
						register "has_power_resource" = "1"
						register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_H17)"
						register "reset_off_delay_ms" = "20"
						register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_A10)"
						register "enable_delay_ms" = "20"
						device usb 3.3 on end
					end
				end
			end
		end # USB xHCI
		device pci 15.0 on
			chip drivers/i2c/hid
				register "generic.hid" = ""SYNA0A00""
				register "generic.desc" = ""SYNA Touchpad""
				register "generic.irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_B3_IRQ)"
				register "generic.wake" = "GPE0_DW0_03"
				register "generic.detect" = "1"
				register "hid_desc_reg_offset" = "0x20"
				device i2c 2c on end
			end
			chip drivers/i2c/hid
				register "generic.hid" = ""GXTP7288""
				register "generic.desc" = ""GXTP Touchpad""
				register "generic.irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_B3_IRQ)"
				register "generic.wake" = "GPE0_DW0_03"
				register "generic.detect" = "1"
				register "hid_desc_reg_offset" = "0x01"
				device i2c 14 on end
			end
			chip drivers/i2c/hid
				register "generic.hid" = ""SPPT2600""
				register "generic.desc" = ""SPPT Touchpad""
				register "generic.irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_B3_IRQ)"
				register "generic.wake" = "GPE0_DW0_03"
				register "generic.detect" = "1"
				register "hid_desc_reg_offset" = "0x20"
				device i2c 2a on end
			end
			chip drivers/i2c/hid
				register "generic.hid" = ""PIXA2635""
				register "generic.desc" = ""PIXA Touchpad""
				register "generic.irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPP_B3_IRQ)"
				register "generic.wake" = "GPE0_DW0_03"
				register "generic.detect" = "1"
				register "hid_desc_reg_offset" = "0x20"
				device i2c 2d on end
			end
			chip drivers/i2c/generic
				register "hid" = ""ELAN0000""
				register "desc" = ""ELAN Touchpad""
				register "irq" = "ACPI_IRQ_WAKE_EDGE_LOW(GPP_B3_IRQ)"
				register "wake" = "GPE0_DW0_03"
				register "detect" = "1"
				device i2c 15 on end
			end
		end #I2C 0
		device pci 19.0 on
			chip drivers/i2c/generic
				register "hid" = ""10EC5682""
				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
					probe AUDIO_CODEC_SOURCE AUDIO_CODEC_ALC5682
					probe AUDIO_CODEC_SOURCE AUDIO_CODEC_UNPROVISIONED
				end
			end
			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
					probe AUDIO_CODEC_SOURCE AUDIO_CODEC_ALC5682I_VS
				end
			end
		end #I2C 4
		device pci 1f.3 on
			chip drivers/generic/alc1015
				register "sdb" =  "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D17)"
				device generic 0 on end
			end
		end # Intel HDA
	end
end
