Skip to content
  • Jon Hunter's avatar
    PM / Domains: Return -EPROBE_DEFER if we fail to init or turn-on domain · 311fa6ad
    Jon Hunter authored
    
    
    When a device is probed, the function dev_pm_domain_attach() is called
    to see if there is a power-domain that is associated with the device and
    needs to be turned on. If dev_pm_domain_attach() does not return
    -EPROBE_DEFER then the device will be probed.
    
    For devices using genpd, dev_pm_domain_attach() will call
    genpd_dev_pm_attach(). If genpd_dev_pm_attach() does not find a power
    domain associated with the device then it returns an error code not
    equal to -EPROBE_DEFER to allow the device to be probed. However, if
    genpd_dev_pm_attach() does find a power-domain that is associated with
    the device, then it does not return -EPROBE_DEFER on failure and hence
    the device will still be probed. Furthermore, genpd_dev_pm_attach() does
    not check the error code returned by pm_genpd_poweron() to see if the
    power-domain was turned on successfully.
    
    Fix this by checking the return code from pm_genpd_poweron() and
    returning -EPROBE_DEFER from genpd_dev_pm_attach on failure, if there
    is a power-domain associated with the device.
    
    Signed-off-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Acked-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Acked-by: default avatarKevin Hilman <khilman@linaro.org>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    311fa6ad