mb/google/dedede/var/awasuki: Enable ELAN touchscreen with fw_config
1. Change driver form i2c/hid to i2c/generic.
2. Add fw_config for touchscreen.
BUG=b:351968527
TEST=ectool cbi set 6 0x0x10200a0;
     touchscreen functions normally;
Change-Id: Ifd6330be8924d4873f0efab3ce404168a62099eb
Signed-off-by: Weimin Wu <wuweimin@huaqin.corp-partner.google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83704
Reviewed-by: zhongtian wu <wuzhongtian@huaqin.corp-partner.google.com>
Reviewed-by: Eric Lai <ericllai@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
			
			
This commit is contained in:
		| @@ -181,18 +181,24 @@ chip soc/intel/jasperlake | |||||||
| 		end # I2C 0 | 		end # I2C 0 | ||||||
| 		device pci 15.1 off end # I2C 1 | 		device pci 15.1 off end # I2C 1 | ||||||
| 		device pci 15.2 on | 		device pci 15.2 on | ||||||
| 			chip drivers/i2c/hid | 			probe TOUCHSCREEN TOUCHSCREEN_PRESENT | ||||||
| 				register "generic.hid" = ""ELAN9008"" | 			chip drivers/i2c/generic | ||||||
| 				register "generic.desc" = ""ELAN Touchscreen"" | 				register "hid" = ""ELAN0001"" | ||||||
| 				register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_D4_IRQ)" | 				register "desc" = ""ELAN Touchscreen"" | ||||||
| 				register "generic.detect" = "1" | 				register "irq" = "ACPI_IRQ_LEVEL_LOW(GPP_D4_IRQ)" | ||||||
| 				register "generic.reset_gpio" = | 				register "detect" = "1" | ||||||
|  | 				register "reset_gpio" = | ||||||
| 							"ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_D5)" | 							"ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_D5)" | ||||||
| 				register "generic.enable_gpio" = | 				register "reset_delay_ms" = "25" | ||||||
|  | 				register "reset_off_delay_ms" = "8" | ||||||
|  | 				register "stop_gpio" = | ||||||
|  | 							"ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_A11)" | ||||||
|  | 				register "stop_delay_ms" = "280" | ||||||
|  | 				register "stop_off_delay_ms" = "2" | ||||||
|  | 				register "enable_gpio" = | ||||||
| 							"ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D6)" | 							"ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_D6)" | ||||||
| 				register "generic.enable_delay_ms" = "7" | 				register "enable_delay_ms" = "7" | ||||||
| 				register "generic.has_power_resource" = "1" | 				register "has_power_resource" = "1" | ||||||
| 				register "hid_desc_reg_offset" = "0x01" |  | ||||||
| 				device i2c 10 on end | 				device i2c 10 on end | ||||||
| 			end | 			end | ||||||
| 		end # I2C 2 | 		end # I2C 2 | ||||||
|   | |||||||
| @@ -3,18 +3,35 @@ | |||||||
| #include <baseboard/variants.h> | #include <baseboard/variants.h> | ||||||
| #include <fw_config.h> | #include <fw_config.h> | ||||||
| #include <soc/soc_chip.h> | #include <soc/soc_chip.h> | ||||||
|  | #include <soc/gpio.h> | ||||||
|  |  | ||||||
| static void ext_vr_update(void) | static const struct pad_config ts_disable_pad[] = { | ||||||
|  | 	/* A11 : TOUCH_RPT_EN */ | ||||||
|  | 	PAD_NC(GPP_A11, NONE), | ||||||
|  |  | ||||||
|  | 	/* D4  : TOUCH_INT_ODL */ | ||||||
|  | 	PAD_NC(GPP_D4, NONE), | ||||||
|  | 	/* D5  : TOUCH_RESET_L */ | ||||||
|  | 	PAD_NC(GPP_D5, NONE), | ||||||
|  | 	/* D6  : EN_PP3300_TOUCH_S0 */ | ||||||
|  | 	PAD_NC(GPP_D6, NONE), | ||||||
|  |  | ||||||
|  | 	/* H4  : AP_I2C_TS_SDA */ | ||||||
|  | 	PAD_NC(GPP_H4, NONE), | ||||||
|  | 	/* H5  : AP_I2C_TS_SCL */ | ||||||
|  | 	PAD_NC(GPP_H5, NONE), | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | void variant_devtree_update(void) | ||||||
| { | { | ||||||
| 	struct soc_intel_jasperlake_config *cfg = config_of_soc(); | 	struct soc_intel_jasperlake_config *cfg = config_of_soc(); | ||||||
|  |  | ||||||
| 	if (fw_config_probe(FW_CONFIG(EXT_VR, EXT_VR_ABSENT))) { | 	if (fw_config_probe(FW_CONFIG(EXT_VR, EXT_VR_ABSENT))) { | ||||||
| 		printk(BIOS_INFO, "Device config for EXT_VR_ABSENT.\n"); |  | ||||||
| 		cfg->disable_external_bypass_vr = 1; | 		cfg->disable_external_bypass_vr = 1; | ||||||
| 	} | 	} | ||||||
| } |  | ||||||
|  |  | ||||||
| void variant_devtree_update(void) | 	if (!fw_config_probe(FW_CONFIG(TOUCHSCREEN, TOUCHSCREEN_PRESENT))) { | ||||||
| { | 		cfg->SerialIoI2cMode[PchSerialIoIndexI2C2] = PchSerialIoDisabled; | ||||||
| 	ext_vr_update(); | 		gpio_configure_pads(ts_disable_pad, ARRAY_SIZE(ts_disable_pad)); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|   | |||||||
| @@ -15,10 +15,18 @@ fw_config | |||||||
| 		option STYLUS_ABSENT 0 | 		option STYLUS_ABSENT 0 | ||||||
| 		option STYLUS_PRESENT 1 | 		option STYLUS_PRESENT 1 | ||||||
| 	end | 	end | ||||||
|  | 	field TOUCHSCREEN 5 | ||||||
|  | 		option TOUCHSCREEN_ABSENT	0 | ||||||
|  | 		option TOUCHSCREEN_PRESENT	1 | ||||||
|  | 	end | ||||||
|         field TABLETMODE 10 |         field TABLETMODE 10 | ||||||
|                 option TABLETMODE_DISABLED 0 |                 option TABLETMODE_DISABLED 0 | ||||||
|                 option TABLETMODE_ENABLED 1 |                 option TABLETMODE_ENABLED 1 | ||||||
|         end |         end | ||||||
|  | 	field LTE 11 | ||||||
|  | 		option LTE_ABSENT 0 | ||||||
|  | 		option LTE_PRESENT 1 | ||||||
|  | 	end | ||||||
| 	field AUDIO_AMP 14 16 | 	field AUDIO_AMP 14 16 | ||||||
| 		option UNPROVISIONED 0 | 		option UNPROVISIONED 0 | ||||||
| 		option MAX98360 1 | 		option MAX98360 1 | ||||||
| @@ -26,10 +34,6 @@ fw_config | |||||||
| 		option RT1015P_AUTO 3 | 		option RT1015P_AUTO 3 | ||||||
| 		option ALC5650 4 | 		option ALC5650 4 | ||||||
| 	end | 	end | ||||||
| 	field LTE 11 |  | ||||||
| 		option LTE_ABSENT 0 |  | ||||||
| 		option LTE_PRESENT 1 |  | ||||||
| 	end |  | ||||||
| 	field EXT_VR 18 | 	field EXT_VR 18 | ||||||
| 		option EXT_VR_PRESENT 0 | 		option EXT_VR_PRESENT 0 | ||||||
| 		option EXT_VR_ABSENT 1 | 		option EXT_VR_ABSENT 1 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user