Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 533169d1 authored by Stefan Agner's avatar Stefan Agner Committed by Wolfram Sang
Browse files

i2c: imx: defer probe if bus recovery GPIOs are not ready



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: default avatarStefan Agner <stefan@agner.ch>
Acked-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: default avatarLi Yang <leoyang.li@nxp.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
Cc: stable@kernel.org
parent 171e23e1
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -1009,7 +1009,10 @@ static int i2c_imx_init_recovery_info(struct imx_i2c_struct *i2c_imx,
	rinfo->sda_gpio = of_get_named_gpio(pdev->dev.of_node, "sda-gpios", 0);
	rinfo->scl_gpio = of_get_named_gpio(pdev->dev.of_node, "scl-gpios", 0);

	if (!gpio_is_valid(rinfo->sda_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)) {