summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/arm/display/komeda/komeda_drv.c
diff options
context:
space:
mode:
authorjames qian wang (Arm Technology China) <james.qian.wang@arm.com>2019-01-03 14:41:30 +0300
committerLiviu Dudau <Liviu.Dudau@arm.com>2019-01-14 14:20:11 +0300
commit61f1c4a8ab7575c0147ae6c0d220f9719fdc741e (patch)
tree3ab5eeed9de51d000ce5d072dc0c78aece67dd05 /drivers/gpu/drm/arm/display/komeda/komeda_drv.c
parentc46c24bb6b115b0d74789cf089894384875189c7 (diff)
downloadlinux-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.c12
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;