• Thierry Reding's avatar
    driver: core: Allow subsystems to continue deferring probe · 62a6bc3a
    Thierry Reding authored
    Some subsystems, such as pinctrl, allow continuing to defer probe
    indefinitely. This is useful for devices that depend on resources
    provided by devices that are only probed after the init stage.
    
    One example of this can be seen on Tegra, where the DPAUX hardware
    contains pinmuxing controls for pins that it shares with an I2C
    controller. The I2C controller is typically used for communication
    with a monitor over HDMI (DDC). However, other instances of the I2C
    controller are used to access system critical components, such as a
    PMIC. The I2C controller driver will therefore usually be a builtin
    driver, whereas the DPAUX driver is part of the display driver that
    is loaded from a module to avoid bloating the kernel image with all
    of the DRM/KMS subsystem.
    
    In this particular case the pins used by this I2C/DDC controller
    become accessible very late in the boot process. However, since the
    controller is only used in conjunction with display, that's not an
    issue.
    
    Unfortunately the driver core currently outputs a warning message
    when a device fails to get the pinctrl before the end of the init
    stage. That can be confusing for the user because it may sound like
    an unwanted error occurred, whereas it's really an expected and
    harmless situation.
    
    In order to eliminate this warning, this patch allows callers of the
    driver_deferred_probe_check_state() helper to specify that they want
    to continue deferring probe, regardless of whether we're past the
    init stage or not. All of the callers of that function are updated
    for the new signature, but only the pinctrl subsystem passes a true
    value in the new persist parameter if appropriate.
    Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
    Reviewed-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20190621151725.20414-1-thierry.reding@gmail.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    62a6bc3a
dd.c 32.5 KB