On 2016-11-08 16:32, Stefan Agner wrote: > commit 533169d164c6b4c8571d0d48779f6ff6be593d72 upstream. > > Some SoC might load the GPIO driver after the I2C driver and > using the I2C bus recovery mechanism via GPIOs. In this case > it is crucial to defer probing if the GPIO request functions > do so, otherwise the I2C driver gets loaded without recovery > mechanisms enabled. > > Signed-off-by: Stefan Agner <stefan@xxxxxxxx> > Acked-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > Acked-by: Li Yang <leoyang.li@xxxxxxx> > Signed-off-by: Wolfram Sang <wsa@xxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxx I forgot to mention, this should be applied to 4.4 only. Later versions made the return value void, and it would require a larger rework. I am mainly concerned about LTS... -- Stefan > --- > drivers/i2c/busses/i2c-imx.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c > index d4d8536..32fae2c 100644 > --- a/drivers/i2c/busses/i2c-imx.c > +++ b/drivers/i2c/busses/i2c-imx.c > @@ -1002,10 +1002,13 @@ static void i2c_imx_init_recovery_info(struct > imx_i2c_struct *i2c_imx, > rinfo->scl_gpio = of_get_named_gpio_flags(pdev->dev.of_node, > "scl-gpios", 0, NULL); > > - if (!gpio_is_valid(rinfo->sda_gpio) || > - !gpio_is_valid(rinfo->scl_gpio) || > - IS_ERR(i2c_imx->pinctrl_pins_default) || > - IS_ERR(i2c_imx->pinctrl_pins_gpio)) { > + if (rinfo->sda_gpio == -EPROBE_DEFER || > + rinfo->scl_gpio == -EPROBE_DEFER) { > + return -EPROBE_DEFER; > + } else if (!gpio_is_valid(rinfo->sda_gpio) || > + !gpio_is_valid(rinfo->scl_gpio) || > + IS_ERR(i2c_imx->pinctrl_pins_default) || > + IS_ERR(i2c_imx->pinctrl_pins_gpio)) { > dev_dbg(&pdev->dev, "recovery information incomplete\n"); > return; > } -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html