On 05.04.2018 11:49, Enric Balletbo i Serra wrote: > From: Tomasz Figa <tfiga@xxxxxxxxxxxx> > > 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(). >From purity PoV I would store either 0 either valid pointer in dp->adp, but functionally it should be the same. Reviewed-by: Andrzej Hajda <a.hajda@xxxxxxxxxxx> -- Regards Andrzej > > Signed-off-by: Tomasz Figa <tfiga@xxxxxxxxxxxx> > Signed-off-by: Thierry Escande <thierry.escande@xxxxxxxxxxxxx> > Signed-off-by: Enric Balletbo i Serra <enric.balletbo@xxxxxxxxxxxxx> > Tested-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > --- > > drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c > index 23317a2269e1..6d45d62466b3 100644 > --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c > +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c > @@ -368,6 +368,8 @@ static void rockchip_dp_unbind(struct device *dev, struct device *master, > 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 = { > @@ -391,6 +393,7 @@ static int rockchip_dp_probe(struct platform_device *pdev) > return -ENOMEM; > > dp->dev = dev; > + dp->adp = ERR_PTR(-ENODEV); > dp->plat_data.panel = panel; > > ret = rockchip_dp_of_probe(dp); > @@ -414,6 +417,9 @@ static int rockchip_dp_suspend(struct device *dev) > { > struct rockchip_dp_device *dp = dev_get_drvdata(dev); > > + if (IS_ERR(dp->adp)) > + return 0; > + > return analogix_dp_suspend(dp->adp); > } > > @@ -421,6 +427,9 @@ static int rockchip_dp_resume(struct device *dev) > { > struct rockchip_dp_device *dp = dev_get_drvdata(dev); > > + if (IS_ERR(dp->adp)) > + return 0; > + > return analogix_dp_resume(dp->adp); > } > #endif _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel