On Fri, Sep 1, 2023 at 1:49 PM Robert Marko <robert.marko@xxxxxxxxxx> wrote: > > Ever since PXA I2C driver was moved to the generic I2C recovery, I2C has > stopped working completely on Armada 3720 if the pins are specified in DTS. > > After a while it was traced down to the only difference being that PXA > driver did not change the pinmux state to GPIO before trying to acquire the > GPIO pins. > And indeed as soon as this call is removed I2C starts working. > > To me it seems that this call is not required at all as devm_gpiod_get() > will result in the pinmux state being changed to GPIO via the pinmux > set_mux() op. > > Fixes: 0b01392c18b9 ("i2c: pxa: move to generic GPIO recovery") > Signed-off-by: Robert Marko <robert.marko@xxxxxxxxxx> > --- > I am aware this probably isnt the correct fix, so I am sending it as RFC > cause I have ran out of ideas. CC-ing Russel as well since I forgot him. Regards, Robert > > drivers/i2c/i2c-core-base.c | 7 ------- > 1 file changed, 7 deletions(-) > > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c > index 60746652fd52..b34d939078a1 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -359,13 +359,6 @@ static int i2c_gpio_init_generic_recovery(struct i2c_adapter *adap) > if (bri->recover_bus && bri->recover_bus != i2c_generic_scl_recovery) > return 0; > > - /* > - * pins might be taken as GPIO, so we should inform pinctrl about > - * this and move the state to GPIO > - */ > - if (bri->pinctrl) > - pinctrl_select_state(bri->pinctrl, bri->pins_gpio); > - > /* > * if there is incomplete or no recovery information, see if generic > * GPIO recovery is available > -- > 2.41.0 > -- Robert Marko Staff Embedded Linux Engineer Sartura Ltd. Lendavska ulica 16a 10000 Zagreb, Croatia Email: robert.marko@xxxxxxxxxx Web: www.sartura.hr