diff options
Diffstat (limited to 'drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c')
-rw-r--r-- | drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c index 4587d5e60a72..5592fddb2529 100644 --- a/drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c +++ b/drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c @@ -441,9 +441,8 @@ static int ipu_drm_bind(struct device *dev, struct device *master, void *data) struct ipu_crtc *ipu_crtc; int ret; - ipu_crtc = devm_kzalloc(dev, sizeof(*ipu_crtc), GFP_KERNEL); - if (!ipu_crtc) - return -ENOMEM; + ipu_crtc = dev_get_drvdata(dev); + memset(ipu_crtc, 0, sizeof(*ipu_crtc)); ipu_crtc->dev = dev; @@ -455,8 +454,6 @@ static int ipu_drm_bind(struct device *dev, struct device *master, void *data) drm->mode_config.helper_private = &ipuv3_drm_mode_config_helpers; drm->mode_config.allow_fb_modifiers = true; - dev_set_drvdata(dev, ipu_crtc); - return 0; } @@ -479,6 +476,7 @@ static const struct component_ops ipu_crtc_ops = { static int ipu_drm_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; + struct ipu_crtc *ipu_crtc; int ret; if (!dev->platform_data) @@ -488,6 +486,12 @@ static int ipu_drm_probe(struct platform_device *pdev) if (ret) return ret; + ipu_crtc = devm_kzalloc(dev, sizeof(*ipu_crtc), GFP_KERNEL); + if (!ipu_crtc) + return -ENOMEM; + + dev_set_drvdata(dev, ipu_crtc); + return component_add(dev, &ipu_crtc_ops); } |