HI Patrick On 3/31/20 6:04 PM, Patrick Delaunay wrote: > Software workaround for I2C issue on EV1 board, > configure the IRQ line for touchscreen before LCD reset > to fix the used I2C address. > > Signed-off-by: Patrick Delaunay <patrick.delau...@st.com> > --- > > board/st/stm32mp1/stm32mp1.c | 41 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c > index 6ca47509b3..52881adef7 100644 > --- a/board/st/stm32mp1/stm32mp1.c > +++ b/board/st/stm32mp1/stm32mp1.c > @@ -626,6 +626,44 @@ static bool board_is_dk2(void) > } > #endif > > +static bool board_is_ev1(void) > +{ > + if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) && > + (of_machine_is_compatible("st,stm32mp157a-ev1") || > + of_machine_is_compatible("st,stm32mp157c-ev1") || > + of_machine_is_compatible("st,stm32mp157d-ev1") || > + of_machine_is_compatible("st,stm32mp157f-ev1"))) > + return true; > + > + return false; > +} > + > +/* touchscreen driver: only used for pincontrol configuration */ > +static const struct udevice_id goodix_ids[] = { > + { .compatible = "goodix,gt9147", }, > + { } > +}; > + > +U_BOOT_DRIVER(goodix) = { > + .name = "goodix", > + .id = UCLASS_NOP, > + .of_match = goodix_ids, > +}; > + > +static int board_ev1_init(void) > +{ > + struct udevice *dev; > + int ret; > + > + /* configure IRQ line on EV1 for touchscreen before LCD reset */ > + ret = uclass_get_device_by_driver(UCLASS_NOP, DM_GET_DRIVER(goodix), > + &dev); > + if (ret) > + debug("goodix init failed: %d\n", ret); > + > + return ret; > +} > + > /* board dependent setup after realloc */ > int board_init(void) > { > @@ -643,6 +681,9 @@ int board_init(void) > > board_key_check(); > > + if (board_is_ev1()) > + board_ev1_init(); > + > #ifdef CONFIG_DM_REGULATOR > if (board_is_dk2()) > dk2_i2c1_fix();
Reviewed-by: Patrice Chotard <patrice.chot...@st.com> Thanks