diff options
author | Xinliang Liu <xinliang.liu@linaro.org> | 2015-10-10 10:16:22 +0800 |
---|---|---|
committer | Xinliang Liu <xinliang.liu@linaro.org> | 2016-04-29 16:39:12 +0800 |
commit | 783ad972c9a0e4690fa9a1580d16b64f389bc068 (patch) | |
tree | 969c827d349e8d73c54a5c02fac74320e0a00c83 /drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | |
parent | 23e7b2ab9a8ff5653e8140248a494c3f3171dce3 (diff) |
drm/hisilicon: Add crtc driver for ADE
Add crtc funcs and helper funcs for ADE.
v8: None.
v7:
- A few Regs define clean up and typo fixs.
v6:
- Cleanup reg-names dt parsing.
v5:
- Use syscon to access ADE media NOC QoS registers instread of directly
writing registers.
- Use reset controller to reset ADE instead of directly writing registers.
v4: None.
v3:
- Make ade as the master driver.
- Use port to connect with encoder.
- A few cleanup.
v2:
- Remove abtraction layer.
Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
Signed-off-by: Xinwei Kong <kong.kongxinwei@hisilicon.com>
Reviewed-by: Archit Taneja <architt@codeaurora.org>
Diffstat (limited to 'drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c')
-rw-r--r-- | drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c index 976c9b1a3fd3..578a1eb94517 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -30,8 +30,12 @@ static struct kirin_dc_ops *dc_ops; static int kirin_drm_kms_cleanup(struct drm_device *dev) { + struct kirin_drm_private *priv = dev->dev_private; + dc_ops->cleanup(dev); drm_mode_config_cleanup(dev); + devm_kfree(dev->dev, priv); + dev->dev_private = NULL; return 0; } @@ -55,8 +59,14 @@ static void kirin_drm_mode_config_init(struct drm_device *dev) static int kirin_drm_kms_init(struct drm_device *dev) { + struct kirin_drm_private *priv; int ret; + priv = devm_kzalloc(dev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + dev->dev_private = priv; dev_set_drvdata(dev->dev, dev); /* dev->mode_config initialization */ @@ -84,6 +94,8 @@ err_dc_cleanup: dc_ops->cleanup(dev); err_mode_config_cleanup: drm_mode_config_cleanup(dev); + devm_kfree(dev->dev, priv); + dev->dev_private = NULL; return ret; } |