On 9/11/26 12:29 PM, Krzysztof Kozlowski wrote:
> Properly handle power up failures during .atomic_pre_enable() by
> aborting the .atomic_pre_enable() to avoid accessing registers why
> blocks did not bring up.  Otherwise this could lead to imprecise aborts
> when accessing MMIO while entire power domain is off.
> 
> Cc: <[email protected]>
> Fixes: ba3d7bf3a7ab ("drm/msm/hdmi: Convert PHY files according to new 
> design")
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
>  drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 30 +++++++++++++++++++++---------
>  1 file changed, 21 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c 
> b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> index 157f19bd90b4..db85400e574e 100644
> --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
> @@ -13,14 +13,16 @@
>  #include "msm_kms.h"
>  #include "hdmi.h"
>  
> -static void msm_hdmi_power_on(struct drm_bridge *bridge)
> +static int msm_hdmi_power_on(struct drm_bridge *bridge)
>  {
>       struct drm_device *dev = bridge->dev;
>       struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge);
>       struct hdmi *hdmi = hdmi_bridge->hdmi;
>       int ret;
>  
> -     pm_runtime_resume_and_get(&hdmi->pdev->dev);
> +     ret = pm_runtime_resume_and_get(&hdmi->pdev->dev);
> +     if (ret)
> +             return ret;
>  
>       if (hdmi->extp_clk) {
>               DBG("pixclock: %lu", hdmi->pixclock);
> @@ -29,9 +31,14 @@ static void msm_hdmi_power_on(struct drm_bridge *bridge)
>                       DRM_DEV_ERROR(dev->dev, "failed to set extp clk rate: 
> %d\n", ret);

^ should fail too

Konrad

Reply via email to