From 91033d8707a92e089fbe0b9cb48565d2c8581659 Mon Sep 17 00:00:00 2001 From: Liu Ying <victor.liu@nxp.com> Date: Tue, 14 Nov 2017 13:28:41 +0800 Subject: [PATCH] MLK-16812 drm/imx: ldb: Let system PM behave properly when we are unbinded The system power management operations should get correct driver data before going on to further handling. When the component is unbinded, driver data should be set to NULL so that the system power management may be bypassed(return early). This way, we may prevent the system power management from using any invalid driver data. Fixes: 915ac0ad7369 ("MLK-16581-7 drm/imx: ldb: Add system power management support") Signed-off-by: Liu Ying <victor.liu@nxp.com> --- drivers/gpu/drm/imx/imx-ldb.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c index 3cc45e56b7c92a..ef5f229a4b4c2a 100644 --- a/drivers/gpu/drm/imx/imx-ldb.c +++ b/drivers/gpu/drm/imx/imx-ldb.c @@ -1273,6 +1273,8 @@ static void imx_ldb_unbind(struct device *dev, struct device *master, kfree(channel->edid); i2c_put_adapter(channel->ddc); } + + dev_set_drvdata(dev, NULL); } static const struct component_ops imx_ldb_ops = { @@ -1298,6 +1300,9 @@ static int imx_ldb_suspend(struct device *dev) struct imx_ldb_channel *channel; int i; + if (imx_ldb == NULL) + return 0; + for (i = 0; i < 2; i++) { channel = &imx_ldb->channel[i]; @@ -1315,6 +1320,9 @@ static int imx_ldb_resume(struct device *dev) struct imx_ldb *imx_ldb = dev_get_drvdata(dev); int i; + if (imx_ldb == NULL) + return 0; + if (imx_ldb->visible_phy) for (i = 0; i < 2; i++) phy_init(imx_ldb->channel[i].phy); -- GitLab