mb/google/sarien: Implement touchscreen power sequencing

For touchscreens on sarien, drive the enable GPIO high starting in
romstage while holding in reset, then disable the reset GPIO in
ramstage. This will allow coreboot to detect the presence of i2c
touchscreens during ACPI SSDT generation (implemented in a subsequent
commit).

BUG=b:121309055
TEST=tested with rest of patch train

Change-Id: I3ce7bfc0fa4c03c0bb96bebaa3c3d256f886ecc4
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/74237
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
This commit is contained in:
Matt DeVillier 2023-02-23 19:24:38 -06:00
parent 08da6eff8a
commit b4bf865359
2 changed files with 16 additions and 4 deletions

View File

@ -242,6 +242,12 @@ static const struct pad_config early_gpio_table[] = {
/* M2_SKT2_CFG0 */ PAD_CFG_GPO(GPP_H12, 1, DEEP), /* D3 cold RST */
};
static const struct pad_config romstage_gpio_table[] = {
/* Enable touchscreen, hold in reset */
PAD_CFG_GPO(GPP_B21, 1, DEEP), /* PCH_3.3V_TS_EN */
PAD_CFG_GPO(GPP_E7, 0, DEEP), /* TOUCH_SCREEN_PD# */
};
const struct pad_config *variant_gpio_table(size_t *num)
{
*num = ARRAY_SIZE(gpio_table);
@ -256,8 +262,8 @@ const struct pad_config *variant_early_gpio_table(size_t *num)
const struct pad_config *variant_romstage_gpio_table(size_t *num)
{
*num = 0;
return NULL;
*num = ARRAY_SIZE(romstage_gpio_table);
return romstage_gpio_table;
}
static const struct cros_gpio cros_gpios[] = {

View File

@ -230,6 +230,12 @@ static const struct pad_config early_gpio_table[] = {
/* M2_SKT2_CFG0 */ PAD_CFG_GPO(GPP_H12, 1, DEEP), /* D3 cold RST */
};
static const struct pad_config romstage_gpio_table[] = {
/* Enable touchscreen, hold in reset */
PAD_CFG_GPO(GPP_B21, 1, DEEP), /* PCH_3.3V_TS_EN */
PAD_CFG_GPO(GPP_E7, 0, DEEP), /* TOUCH_SCREEN_PD# */
};
const struct pad_config *variant_gpio_table(size_t *num)
{
*num = ARRAY_SIZE(gpio_table);
@ -244,8 +250,8 @@ const struct pad_config *variant_early_gpio_table(size_t *num)
const struct pad_config *variant_romstage_gpio_table(size_t *num)
{
*num = 0;
return NULL;
*num = ARRAY_SIZE(romstage_gpio_table);
return romstage_gpio_table;
}
static const struct cros_gpio cros_gpios[] = {