diff options
author | james qian wang (Arm Technology China) <james.qian.wang@arm.com> | 2019-01-03 14:41:30 +0300 |
---|---|---|
committer | Liviu Dudau <Liviu.Dudau@arm.com> | 2019-01-14 14:20:11 +0300 |
commit | 61f1c4a8ab7575c0147ae6c0d220f9719fdc741e (patch) | |
tree | 3ab5eeed9de51d000ce5d072dc0c78aece67dd05 /drivers/gpu/drm/arm/display/komeda/komeda_drv.c | |
parent | c46c24bb6b115b0d74789cf089894384875189c7 (diff) | |
download | linux-61f1c4a8ab7575c0147ae6c0d220f9719fdc741e.tar.xz |
drm/komeda: Attach komeda_dev to DRM-KMS
Add komeda_kms abstracton to attach komeda_dev to DRM-KMS
CRTC: according to the komeda_pipeline
PLANE: according to komeda_layer (layer input pipeline)
PRIVATE_OBJS: komeda_pipeline/component all will be treat as private_objs
komeda_kms is for connecting DRM-KMS and komeda_dev, like reporting the
kms object properties according to the komeda_dev, and pass/convert KMS's
requirement to komeda_dev.
Changes in v4:
- Set drm_atomic_helper_check as mode_config->atomic_check.
Changes in v3:
- Fixed style problem found by checkpatch.pl --strict.
Changes in v2:
- Unified abbreviation of "pipeline" to "pipe".
Signed-off-by: James Qian Wang (Arm Technology China) <james.qian.wang@arm.com>
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Diffstat (limited to 'drivers/gpu/drm/arm/display/komeda/komeda_drv.c')
-rw-r--r-- | drivers/gpu/drm/arm/display/komeda/komeda_drv.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c b/drivers/gpu/drm/arm/display/komeda/komeda_drv.c index dd386d82d143..2bdd189b041d 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_drv.c @@ -10,9 +10,11 @@ #include <linux/component.h> #include <drm/drm_of.h> #include "komeda_dev.h" +#include "komeda_kms.h" struct komeda_drv { struct komeda_dev *mdev; + struct komeda_kms_dev *kms; }; static void komeda_unbind(struct device *dev) @@ -22,6 +24,7 @@ static void komeda_unbind(struct device *dev) if (!mdrv) return; + komeda_kms_detach(mdrv->kms); komeda_dev_destroy(mdrv->mdev); dev_set_drvdata(dev, NULL); @@ -43,10 +46,19 @@ static int komeda_bind(struct device *dev) goto free_mdrv; } + mdrv->kms = komeda_kms_attach(mdrv->mdev); + if (IS_ERR(mdrv->kms)) { + err = PTR_ERR(mdrv->kms); + goto destroy_mdev; + } + dev_set_drvdata(dev, mdrv); return 0; +destroy_mdev: + komeda_dev_destroy(mdrv->mdev); + free_mdrv: devm_kfree(dev, mdrv); return err; |