summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/exynos_drm_core.c
diff options
context:
space:
mode:
authorGustavo Padovan <gustavo.padovan@collabora.co.uk>2015-08-11 17:38:06 +0900
committerInki Dae <inki.dae@samsung.com>2015-08-16 10:23:36 +0900
commitcf67cc9a29ac19c98bc4fa0e6d14b0c1f592d322 (patch)
treec56b2ee63f9235bd762dd34c3b59b7202149355b /drivers/gpu/drm/exynos/exynos_drm_core.c
parentd1fa72d0a6e70057f6aa0d0f6187e4a49e261fa8 (diff)
downloadop-kernel-dev-cf67cc9a29ac19c98bc4fa0e6d14b0c1f592d322.zip
op-kernel-dev-cf67cc9a29ac19c98bc4fa0e6d14b0c1f592d322.tar.gz
drm/exynos: remove struct exynos_drm_display
This struct was just representing encoder information, it was a member of struct exynos_drm_encoder, so any code trying to access encoder data would have to go through the encoder struct, get the display struct and then get the data it want. During this patchset we also realized that the only data exynos_drm_encoder needs to store is the drm_encoder parent and the exynos_drm_encoder_ops. Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_core.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_core.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_core.c b/drivers/gpu/drm/exynos/exynos_drm_core.c
index 4c9f972..e386452 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_core.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_core.c
@@ -21,38 +21,33 @@
static LIST_HEAD(exynos_drm_subdrv_list);
int exynos_drm_create_enc_conn(struct drm_device *dev,
- struct exynos_drm_display *display)
+ struct exynos_drm_encoder *exynos_encoder,
+ enum exynos_drm_output_type type)
{
- struct drm_encoder *encoder;
int ret;
unsigned long possible_crtcs = 0;
- ret = exynos_drm_crtc_get_pipe_from_type(dev, display->type);
+ ret = exynos_drm_crtc_get_pipe_from_type(dev, type);
if (ret < 0)
return ret;
possible_crtcs |= 1 << ret;
/* create and initialize a encoder for this sub driver. */
- encoder = exynos_drm_encoder_create(dev, display, possible_crtcs);
- if (!encoder) {
+ ret = exynos_drm_encoder_create(dev, exynos_encoder, possible_crtcs);
+ if (ret) {
DRM_ERROR("failed to create encoder\n");
- return -EFAULT;
+ return ret;
}
- display->encoder = encoder;
-
- ret = display->ops->create_connector(display, encoder);
+ ret = exynos_encoder->ops->create_connector(exynos_encoder);
if (ret) {
DRM_ERROR("failed to create connector ret = %d\n", ret);
- goto err_destroy_encoder;
+ drm_encoder_cleanup(&exynos_encoder->base);
+ return ret;
}
return 0;
-
-err_destroy_encoder:
- encoder->funcs->destroy(encoder);
- return ret;
}
int exynos_drm_subdrv_register(struct exynos_drm_subdrv *subdrv)
OpenPOWER on IntegriCloud