On 05.01.2020 00:39, Peter Rosin wrote: > On 2020-01-03 10:49, Codrin.Ciubotariu@xxxxxxxxxxxxx wrote: >> From: Kamel Bouhara <kamel.bouhara@xxxxxxxxxxx> >> >> Add the i2c gpio pinctrls to support the i2c bus recovery >> >> Signed-off-by: Kamel Bouhara <kamel.bouhara@xxxxxxxxxxx> >> --- >> >> Changes in v2: >> - none; >> >> arch/arm/boot/dts/sama5d3.dtsi | 33 ++++++++++++++++++++++++++++++--- >> 1 file changed, 30 insertions(+), 3 deletions(-) >> > > *snip* > >> @@ -639,6 +648,12 @@ >> <AT91_PIOA 30 AT91_PERIPH_A AT91_PINCTRL_NONE /* PA30 periph A TWD0 pin, conflicts with URXD1, ISI_VSYNC */ >> AT91_PIOA 31 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PA31 periph A TWCK0 pin, conflicts with UTXD1, ISI_HSYNC */ >> }; >> + >> + pinctrl_i2c0_gpio: i2c0-gpio { >> + atmel,pins = >> + <AT91_PIOA 30 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP >> + AT91_PIOA 31 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; >> + }; > > I'm curious, but why are pull-ups suddenly needed just because the pins are > used for GPIO recovery? Why are pull-ups not needed when the pins are used > by the I2C peripheral device(s)? > > Given figure 27-2 "I/O Line Control Logic" in my SAMA5D3 datasheet, I see > no difference as to how and why the pull-ups are applied depending on what > the current function of the pin is. So, if the I2C bus works w/o pulls, bus > recovery using GPIO must also work w/o pulls. > > I.e. the device tree requires you to have external pull-ups on the I2C bus > anyway, so why bother with internal pull-ups for the recovery case? > > Changing pull-up settings just for recovery feels like something that will > inevitably create hard to debug surprises at the least opportune time... > > Or am I missing something? > > (I'm focusing on SAMA5D3 since that is what I happen to work with, > but the same question appears to apply for SAMA5D2 and SAMA5D4...) I don't think we need the pull-ups. I will remove them in v3. Thanks and best regards, Codrin