chip soc/intel/apollolake

	# EMMC Tx CMD Delay
	# Refer to EDS-Vol2-16.32.
	# [14:8] steps of delay for DDR mode, each 125ps.
	# [6:0] steps of delay for SDR mode, each 125ps.
	register "emmc_tx_cmd_cntl" = "0x505"

	# EMMC TX DATA Delay 1
	# Refer to EDS-Vol2-16.33.
	# [14:8] steps of delay for HS400, each 125ps.
	# [6:0] steps of delay for SDR104/HS200, each 125ps.
	register "emmc_tx_data_cntl1" = "0x0a0b"

	# EMMC TX DATA Delay 2
	# Refer to EDS-Vol2-16.34.
	# [30:24] steps of delay for SDR50, each 125ps.
	# [22:16] steps of delay for DDR50, each 125ps.
	# [14:8] steps of delay for SDR25/HS50, each 125ps.
	# [6:0] steps of delay for SDR12, each 125ps.
	register "emmc_tx_data_cntl2" = "0x1c272828"

	# EMMC RX CMD/DATA Delay 1
	# Refer to EDS-Vol2-16.35.
	# [30:24] steps of delay for SDR50, each 125ps.
	# [22:16] steps of delay for DDR50, each 125ps.
	# [14:8] steps of delay for SDR25/HS50, each 125ps.
	# [6:0] steps of delay for SDR12, each 125ps.
	register "emmc_rx_cmd_data_cntl1" = "0x00181b1a"

	# EMMC RX CMD/DATA Delay 2
	# Refer to EDS-Vol2-16.37.
	# [17:16] stands for Rx Clock before Output Buffer
	# [14:8] steps of delay for Auto Tuning Mode, each 125ps.
	# [6:0] steps of delay for HS200, each 125ps.
	register "emmc_rx_cmd_data_cntl2" = "0x10021"

	# EMMC Rx Strobe Delay
	# Refer to EDS-Vol2-16.36.
	# [14:8] Rx Strobe Delay DLL 1(HS400 Mode), each 125ps.
	# [6:0] Rx Strobe Delay DLL 2(HS400 Mode), each 125ps.
	register "emmc_rx_strobe_cntl" = "0x0a0a"

	# 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              | Digitizer                 |
	#| I2C5              | Audio                     |
	#| I2C6              | Trackpad                  |
	#| I2C7              | Touchscreen               |
	#+-------------------+---------------------------+

	register "tcc_offset" = "10"

	register "common_soc_config" = "{
		.gspi[0] = {
			.speed_mhz = 1,
			.early_init = 1,
		},
		.i2c[0] = {
			.speed = I2C_SPEED_FAST,
			.rise_time_ns = 88,
			.fall_time_ns = 16,
		},
		.i2c[1] = {
			.speed = I2C_SPEED_FAST,
			.rise_time_ns = 66,
			.fall_time_ns = 90,
			.data_hold_time_ns = 350,
		},
		.i2c[5] = {
			.speed = I2C_SPEED_FAST,
			.rise_time_ns = 104,
			.fall_time_ns = 52,
		},
		.i2c[6] = {
			.speed = I2C_SPEED_FAST,
			.rise_time_ns = 66,
			.fall_time_ns = 90,
			.data_hold_time_ns = 350,
		},
		.i2c[7] = {
			.speed = I2C_SPEED_FAST,
			.rise_time_ns = 44,
			.fall_time_ns = 90,
		},
	}"

	device domain 0 on
		device pci 16.0 on
			chip drivers/i2c/hid
				register "generic.hid" = ""WCOM50C1""
				register "generic.desc" = ""WCOM Digitizer""
				register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPIO_139_IRQ)"
				register "generic.reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_140)"
				register "generic.reset_delay_ms" = "20"
				register "generic.has_power_resource" = "1"
				register "generic.detect" = "1"
				register "hid_desc_reg_offset" = "0x1"
				device i2c 0x9 on end
			end
			chip drivers/generic/gpio_keys
				register "name" = ""PENH""
				register "gpio" = "ACPI_GPIO_INPUT_ACTIVE_LOW(GPIO_145)"
				register "key.dev_name" = ""EJCT""
				register "key.linux_code" = "SW_PEN_INSERTED"
				register "key.linux_input_type" = "EV_SW"
				register "key.label" = ""pen_eject""
				register "key.wake_gpe" = "GPE0_DW2_04"
				register "key.wakeup_route" = "WAKEUP_ROUTE_SCI"
				register "key.wakeup_event_action" = "EV_ACT_DEASSERTED"
				device generic 0 on end
			end
		end	# - I2C 0
		device pci 16.1 on
			chip drivers/i2c/sx9310
				register "desc" = ""SAR Proximity Sensor""
				register "irq" = "ACPI_IRQ_LEVEL_LOW(GPIO_214_IRQ)"
				register "uid" = "1"
				register "cs0_ground" = "0x0"
				register "combined_sensors_count" = "2"
				register "combined_sensors[0]" = "1"
				register "combined_sensors[1]" = "2"
				register "resolution" = "SX9310_FINEST"
				register "avg_pos_strength" = "512"
				register "startup_sensor" = "1"
				register "proxraw_strength" = "0"
				device i2c 28 on end
			end
		end	# - I2C 1
		device pci 17.1 on
			chip drivers/i2c/da7219
				register "irq" = "ACPI_IRQ_LEVEL_LOW(GPIO_137_IRQ)"
				register "btn_cfg" = "50"
				register "mic_det_thr" = "500"
				register "jack_ins_deb" = "20"
				register "jack_det_rate" = ""32ms_64ms""
				register "jack_rem_deb" = "1"
				register "a_d_btn_thr" = "0xa"
				register "d_b_btn_thr" = "0x16"
				register "b_c_btn_thr" = "0x21"
				register "c_mic_btn_thr" = "0x3e"
				register "btn_avg" = "4"
				register "adc_1bit_rpt" = "1"
				register "micbias_lvl" = "2600"
				register "mic_amp_in_sel" = ""diff""
				device i2c 1a on end
			end
			chip drivers/i2c/generic
				register "hid" = ""10EC5682""
				register "name" = ""RT58""
				register "desc" = ""Realtek RT5682""
				register "irq" = "ACPI_IRQ_LEVEL_LOW(GPIO_137_IRQ)"
				register "probed" = "1"
				register "property_count" = "1"
				# Set the jd_src to RT5668_JD1 for jack detection
				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 5
		device pci 17.2 on
			chip drivers/i2c/generic
				register "hid" = ""ELAN0000""
				register "desc" = ""ELAN Touchpad""
				register "irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPIO_135_IRQ)"
				register "wake" = "GPE0_DW3_27"
				register "detect" = "1"
				device i2c 15 on end
			end
			chip drivers/i2c/hid
				register "generic.hid" = ""SYNA0000""
				register "generic.cid" = ""ACPI0C50""
				register "generic.desc" = ""Synaptics Touchpad""
				register "generic.irq" = "ACPI_IRQ_WAKE_LEVEL_LOW(GPIO_135_IRQ)"
				register "generic.wake" = "GPE0_DW3_27"
				register "generic.detect" = "1"
				register "hid_desc_reg_offset" = "0x20"
				device i2c 0x2c on end
			end
		end	# - I2C 6
		device pci 17.3 on
			chip drivers/i2c/generic
				register "hid" = ""ELAN0001""
				register "desc" = ""ELAN Touchscreen""
				register "irq" = "ACPI_IRQ_LEVEL_LOW(GPIO_212_IRQ)"
				register "detect" = "1"
				register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_105)"
				register "reset_delay_ms" = "20"
				register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_146)"
				register "enable_delay_ms" = "1"
				register "has_power_resource" = "1"
				device i2c 10 on end
			end
			chip drivers/i2c/generic
				register "hid" = ""RAYD0001""
				register "desc" = ""Raydium Touchscreen""
				register "irq" = "ACPI_IRQ_LEVEL_LOW(GPIO_212_IRQ)"
				register "detect" = "1"
				register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_105)"
				register "reset_delay_ms" = "1"
				register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_146)"
				register "enable_delay_ms" = "50"
				register "has_power_resource" = "1"
				device i2c 39 on end
			end
			chip drivers/i2c/hid
				register "generic.hid" = ""GTCH7502""
				register "generic.desc" = ""G2TOUCH Touchscreen""
				register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPIO_212_IRQ)"
				register "generic.detect" = "1"
				register "generic.reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_105)"
				register "generic.reset_delay_ms" = "70"
				register "generic.enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_146)"
				register "generic.enable_delay_ms" = "1"
				register "generic.has_power_resource" = "1"
				register "generic.disable_gpio_export_in_crs" = "1"
				register "hid_desc_reg_offset" = "0x01"
				device i2c 40 on end
			end
		end	# - I2C 7
	end

	# Disable compliance mode
	register "DisableComplianceMode" = "1"
	register "disable_xhci_lfps_pm" = "0"
end
