Patch "pinctrl: devicetree: Keep deferring even on timeout" has been added to the 5.9-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    pinctrl: devicetree: Keep deferring even on timeout

to the 5.9-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     pinctrl-devicetree-keep-deferring-even-on-timeout.patch
and it can be found in the queue-5.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit e2698a7277e1cc05cc676406a72103ede9e2caf2
Author: Thierry Reding <treding@xxxxxxxxxx>
Date:   Tue Aug 25 16:33:48 2020 +0200

    pinctrl: devicetree: Keep deferring even on timeout
    
    [ Upstream commit 84f28fc38d2ff99e2ac623325ba37809da611b8e ]
    
    driver_deferred_probe_check_state() may return -ETIMEDOUT instead of
    -EPROBE_DEFER after all built-in drivers have been probed. This can
    cause issues for built-in drivers that depend on resources provided by
    loadable modules.
    
    One such case happens on Tegra where I2C controllers are used during
    early boot to set up the system PMIC, so the I2C driver needs to be a
    built-in driver. At the same time, some instances of the I2C controller
    depend on the DPAUX hardware for pinmuxing. Since the DPAUX is handled
    by the display driver, which is usually not built-in, the pin control
    states will not become available until after the root filesystem has
    been mounted and the display driver loaded from it.
    
    Fixes: bec6c0ecb243 ("pinctrl: Remove use of driver_deferred_probe_check_state_continue()")
    Suggested-by: John Stultz <john.stultz@xxxxxxxxxx>
    Signed-off-by: Thierry Reding <treding@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20200825143348.1358679-1-thierry.reding@xxxxxxxxx
    Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/pinctrl/devicetree.c b/drivers/pinctrl/devicetree.c
index 5eff8c2965528..3fb2387147189 100644
--- a/drivers/pinctrl/devicetree.c
+++ b/drivers/pinctrl/devicetree.c
@@ -130,9 +130,8 @@ static int dt_to_map_one_config(struct pinctrl *p,
 		if (!np_pctldev || of_node_is_root(np_pctldev)) {
 			of_node_put(np_pctldev);
 			ret = driver_deferred_probe_check_state(p->dev);
-			/* keep deferring if modules are enabled unless we've timed out */
-			if (IS_ENABLED(CONFIG_MODULES) && !allow_default &&
-			    (ret == -ENODEV))
+			/* keep deferring if modules are enabled */
+			if (IS_ENABLED(CONFIG_MODULES) && !allow_default && ret < 0)
 				ret = -EPROBE_DEFER;
 			return ret;
 		}



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux