+++ /dev/null
-From 533169d164c6b4c8571d0d48779f6ff6be593d72 Mon Sep 17 00:00:00 2001
-From: Stefan Agner <stefan@agner.ch>
-Date: Mon, 26 Sep 2016 17:18:58 -0700
-Subject: i2c: imx: defer probe if bus recovery GPIOs are not ready
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Stefan Agner <stefan@agner.ch>
-
-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@agner.ch>
-Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-Acked-by: Li Yang <leoyang.li@nxp.com>
-Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/i2c/busses/i2c-imx.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
---- a/drivers/i2c/busses/i2c-imx.c
-+++ b/drivers/i2c/busses/i2c-imx.c
-@@ -996,10 +996,13 @@ static void i2c_imx_init_recovery_info(s
- 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) ||
-- !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;
- }