4.17-stable review patch. If anyone has any objections, please let me know.
------------------ From: Tomasz Figa <tf...@chromium.org> [ Upstream commit a4169609def769c66f88140678970b2be6f64ac7 ] Driver callbacks, such as system suspend or resume can be called any time, specifically they can be called before the component bind callback. Let's use dp->adp pointer as a safeguard and skip calling Analogix entry points if it is an ERR_PTR(). Signed-off-by: Tomasz Figa <tf...@chromium.org> Signed-off-by: Thierry Escande <thierry.esca...@collabora.com> Signed-off-by: Enric Balletbo i Serra <enric.balle...@collabora.com> Tested-by: Marek Szyprowski <m.szyprow...@samsung.com> Reviewed-by: Archit Taneja <arch...@codeaurora.org> Signed-off-by: Andrzej Hajda <a.ha...@samsung.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180423105003.9004-24-enric.balle...@collabora.com Signed-off-by: Sasha Levin <alexander.le...@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> --- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 9 +++++++++ 1 file changed, 9 insertions(+) --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -358,6 +358,8 @@ static void rockchip_dp_unbind(struct de analogix_dp_unbind(dp->adp); rockchip_drm_psr_unregister(&dp->encoder); dp->encoder.funcs->destroy(&dp->encoder); + + dp->adp = ERR_PTR(-ENODEV); } static const struct component_ops rockchip_dp_component_ops = { @@ -381,6 +383,7 @@ static int rockchip_dp_probe(struct plat return -ENOMEM; dp->dev = dev; + dp->adp = ERR_PTR(-ENODEV); dp->plat_data.panel = panel; ret = rockchip_dp_of_probe(dp); @@ -404,6 +407,9 @@ static int rockchip_dp_suspend(struct de { struct rockchip_dp_device *dp = dev_get_drvdata(dev); + if (IS_ERR(dp->adp)) + return 0; + return analogix_dp_suspend(dp->adp); } @@ -411,6 +417,9 @@ static int rockchip_dp_resume(struct dev { struct rockchip_dp_device *dp = dev_get_drvdata(dev); + if (IS_ERR(dp->adp)) + return 0; + return analogix_dp_resume(dp->adp); } #endif