summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Paul <seanpaul@chromium.org>2014-02-24 19:15:38 +0900
committerMarek Szyprowski <m.szyprowski@samsung.com>2014-05-15 07:28:51 +0200
commit24f767bfbeca2db33e3514707c908a06a576fba0 (patch)
tree3ef06bb7f6ed910c0e28ad028bb7acd9324fd485
parent308bb03267780f8460b8c75e7cd07a10f6ef3c69 (diff)
downloadlinux-3.10-24f767bfbeca2db33e3514707c908a06a576fba0.tar.gz
linux-3.10-24f767bfbeca2db33e3514707c908a06a576fba0.tar.bz2
linux-3.10-24f767bfbeca2db33e3514707c908a06a576fba0.zip
drm/exynos: Add create_connector callback
This creates a new display hook called create_connector. The purpose is to allow the display driver to create its own drm_connector instead of using the exynos_drm_connector. This moves things closer to completely removing the exynos_drm_connector abstraction. Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_core.c3
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.h2
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_core.c b/drivers/gpu/drm/exynos/exynos_drm_core.c
index e23611eaa90..eeb5e4e0f52 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_core.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_core.c
@@ -44,6 +44,9 @@ static int exynos_drm_create_enc_conn(struct drm_device *dev,
return -EFAULT;
}
+ if (display->ops->create_connector)
+ return display->ops->create_connector(display, encoder);
+
/*
* create and initialize a connector for this sub driver and
* attach the encoder created above to the connector.
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h
index 97bdfcc258d..06aa27e750c 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
@@ -139,6 +139,8 @@ struct exynos_drm_display;
struct exynos_drm_display_ops {
int (*initialize)(struct exynos_drm_display *display,
struct drm_device *drm_dev);
+ int (*create_connector)(struct exynos_drm_display *display,
+ struct drm_encoder *encoder);
void (*remove)(struct exynos_drm_display *display);
bool (*is_connected)(struct exynos_drm_display *display);
void (*get_max_resol)(struct exynos_drm_display *display,