Commit 5d1741ad authored by Gustavo Padovan's avatar Gustavo Padovan Committed by Inki Dae

drm/exynos: move 'type' from manager to crtc struct

'type' is now part of the struct exynos_drm_crtc. This is just another
step in the struct exynos_drm_manager removal.
Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 8a326edd
...@@ -299,7 +299,8 @@ static void exynos_drm_crtc_attach_mode_property(struct drm_crtc *crtc) ...@@ -299,7 +299,8 @@ static void exynos_drm_crtc_attach_mode_property(struct drm_crtc *crtc)
drm_object_attach_property(&crtc->base, prop, 0); drm_object_attach_property(&crtc->base, prop, 0);
} }
int exynos_drm_crtc_create(struct exynos_drm_manager *manager, int pipe) int exynos_drm_crtc_create(struct exynos_drm_manager *manager, int pipe,
enum exynos_drm_output_type type)
{ {
struct exynos_drm_crtc *exynos_crtc; struct exynos_drm_crtc *exynos_crtc;
struct drm_plane *plane; struct drm_plane *plane;
...@@ -317,6 +318,7 @@ int exynos_drm_crtc_create(struct exynos_drm_manager *manager, int pipe) ...@@ -317,6 +318,7 @@ int exynos_drm_crtc_create(struct exynos_drm_manager *manager, int pipe)
exynos_crtc->dpms = DRM_MODE_DPMS_OFF; exynos_crtc->dpms = DRM_MODE_DPMS_OFF;
exynos_crtc->manager = manager; exynos_crtc->manager = manager;
exynos_crtc->pipe = pipe; exynos_crtc->pipe = pipe;
exynos_crtc->type = type;
plane = exynos_plane_init(manager->drm_dev, 1 << pipe, plane = exynos_plane_init(manager->drm_dev, 1 << pipe,
DRM_PLANE_TYPE_PRIMARY); DRM_PLANE_TYPE_PRIMARY);
if (IS_ERR(plane)) { if (IS_ERR(plane)) {
...@@ -435,7 +437,7 @@ int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev, ...@@ -435,7 +437,7 @@ int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev,
struct exynos_drm_crtc *exynos_crtc; struct exynos_drm_crtc *exynos_crtc;
exynos_crtc = to_exynos_crtc(crtc); exynos_crtc = to_exynos_crtc(crtc);
if (exynos_crtc->manager->type == out_type) if (exynos_crtc->type == out_type)
return exynos_crtc->pipe; return exynos_crtc->pipe;
} }
......
...@@ -17,7 +17,8 @@ ...@@ -17,7 +17,8 @@
#include "exynos_drm_drv.h" #include "exynos_drm_drv.h"
int exynos_drm_crtc_create(struct exynos_drm_manager *manager, int pipe); int exynos_drm_crtc_create(struct exynos_drm_manager *manager, int pipe,
enum exynos_drm_output_type type);
int exynos_drm_crtc_enable_vblank(struct drm_device *dev, int pipe); int exynos_drm_crtc_enable_vblank(struct drm_device *dev, int pipe);
void exynos_drm_crtc_disable_vblank(struct drm_device *dev, int pipe); void exynos_drm_crtc_disable_vblank(struct drm_device *dev, int pipe);
void exynos_drm_crtc_finish_pageflip(struct drm_device *dev, int pipe); void exynos_drm_crtc_finish_pageflip(struct drm_device *dev, int pipe);
......
...@@ -204,7 +204,6 @@ struct exynos_drm_manager_ops { ...@@ -204,7 +204,6 @@ struct exynos_drm_manager_ops {
* Exynos drm common manager structure, maps 1:1 with a crtc * Exynos drm common manager structure, maps 1:1 with a crtc
* *
* @list: the list entry for this manager * @list: the list entry for this manager
* @type: one of EXYNOS_DISPLAY_TYPE_LCD and HDMI.
* @drm_dev: pointer to the drm device * @drm_dev: pointer to the drm device
* @crtc: crtc object. * @crtc: crtc object.
* @ops: pointer to callbacks for exynos drm specific functionality * @ops: pointer to callbacks for exynos drm specific functionality
...@@ -212,7 +211,6 @@ struct exynos_drm_manager_ops { ...@@ -212,7 +211,6 @@ struct exynos_drm_manager_ops {
*/ */
struct exynos_drm_manager { struct exynos_drm_manager {
struct list_head list; struct list_head list;
enum exynos_drm_output_type type;
struct drm_device *drm_dev; struct drm_device *drm_dev;
struct drm_crtc *crtc; struct drm_crtc *crtc;
struct exynos_drm_manager_ops *ops; struct exynos_drm_manager_ops *ops;
...@@ -228,6 +226,7 @@ enum exynos_crtc_mode { ...@@ -228,6 +226,7 @@ enum exynos_crtc_mode {
* *
* @base: crtc object. * @base: crtc object.
* @manager: the manager associated with this crtc * @manager: the manager associated with this crtc
* @type: one of EXYNOS_DISPLAY_TYPE_LCD and HDMI.
* @pipe: a crtc index created at load() with a new crtc object creation * @pipe: a crtc index created at load() with a new crtc object creation
* and the crtc object would be set to private->crtc array * and the crtc object would be set to private->crtc array
* to get a crtc object corresponding to this pipe from private->crtc * to get a crtc object corresponding to this pipe from private->crtc
...@@ -241,6 +240,7 @@ enum exynos_crtc_mode { ...@@ -241,6 +240,7 @@ enum exynos_crtc_mode {
struct exynos_drm_crtc { struct exynos_drm_crtc {
struct drm_crtc base; struct drm_crtc base;
struct exynos_drm_manager *manager; struct exynos_drm_manager *manager;
enum exynos_drm_output_type type;
unsigned int pipe; unsigned int pipe;
unsigned int dpms; unsigned int dpms;
enum exynos_crtc_mode mode; enum exynos_crtc_mode mode;
......
...@@ -1076,7 +1076,8 @@ static int fimd_bind(struct device *dev, struct device *master, void *data) ...@@ -1076,7 +1076,8 @@ static int fimd_bind(struct device *dev, struct device *master, void *data)
struct drm_device *drm_dev = data; struct drm_device *drm_dev = data;
fimd_mgr_initialize(&ctx->manager, drm_dev); fimd_mgr_initialize(&ctx->manager, drm_dev);
exynos_drm_crtc_create(&ctx->manager, ctx->pipe); exynos_drm_crtc_create(&ctx->manager, ctx->pipe,
EXYNOS_DISPLAY_TYPE_LCD);
if (ctx->display) if (ctx->display)
exynos_drm_create_enc_conn(drm_dev, ctx->display); exynos_drm_create_enc_conn(drm_dev, ctx->display);
...@@ -1117,11 +1118,10 @@ static int fimd_probe(struct platform_device *pdev) ...@@ -1117,11 +1118,10 @@ static int fimd_probe(struct platform_device *pdev)
if (!ctx) if (!ctx)
return -ENOMEM; return -ENOMEM;
ctx->manager.type = EXYNOS_DISPLAY_TYPE_LCD;
ctx->manager.ops = &fimd_manager_ops; ctx->manager.ops = &fimd_manager_ops;
ret = exynos_drm_component_add(dev, EXYNOS_DEVICE_TYPE_CRTC, ret = exynos_drm_component_add(dev, EXYNOS_DEVICE_TYPE_CRTC,
ctx->manager.type); EXYNOS_DISPLAY_TYPE_LCD);
if (ret) if (ret)
return ret; return ret;
......
...@@ -558,7 +558,8 @@ static int vidi_bind(struct device *dev, struct device *master, void *data) ...@@ -558,7 +558,8 @@ static int vidi_bind(struct device *dev, struct device *master, void *data)
vidi_mgr_initialize(&ctx->manager, drm_dev); vidi_mgr_initialize(&ctx->manager, drm_dev);
ret = exynos_drm_crtc_create(&ctx->manager, ctx->pipe); ret = exynos_drm_crtc_create(&ctx->manager, ctx->pipe,
EXYNOS_DISPLAY_TYPE_VIDI);
if (ret) { if (ret) {
DRM_ERROR("failed to create crtc.\n"); DRM_ERROR("failed to create crtc.\n");
return ret; return ret;
...@@ -593,7 +594,6 @@ static int vidi_probe(struct platform_device *pdev) ...@@ -593,7 +594,6 @@ static int vidi_probe(struct platform_device *pdev)
if (!ctx) if (!ctx)
return -ENOMEM; return -ENOMEM;
ctx->manager.type = EXYNOS_DISPLAY_TYPE_VIDI;
ctx->manager.ops = &vidi_manager_ops; ctx->manager.ops = &vidi_manager_ops;
ctx->display.type = EXYNOS_DISPLAY_TYPE_VIDI; ctx->display.type = EXYNOS_DISPLAY_TYPE_VIDI;
ctx->display.ops = &vidi_display_ops; ctx->display.ops = &vidi_display_ops;
...@@ -601,7 +601,7 @@ static int vidi_probe(struct platform_device *pdev) ...@@ -601,7 +601,7 @@ static int vidi_probe(struct platform_device *pdev)
ctx->pdev = pdev; ctx->pdev = pdev;
ret = exynos_drm_component_add(&pdev->dev, EXYNOS_DEVICE_TYPE_CRTC, ret = exynos_drm_component_add(&pdev->dev, EXYNOS_DEVICE_TYPE_CRTC,
ctx->manager.type); EXYNOS_DISPLAY_TYPE_VIDI);
if (ret) if (ret)
return ret; return ret;
......
...@@ -1261,7 +1261,8 @@ static int mixer_bind(struct device *dev, struct device *manager, void *data) ...@@ -1261,7 +1261,8 @@ static int mixer_bind(struct device *dev, struct device *manager, void *data)
if (ret) if (ret)
return ret; return ret;
ret = exynos_drm_crtc_create(&ctx->manager, ctx->pipe); ret = exynos_drm_crtc_create(&ctx->manager, ctx->pipe,
EXYNOS_DISPLAY_TYPE_HDMI);
if (ret) { if (ret) {
mixer_mgr_remove(&ctx->manager); mixer_mgr_remove(&ctx->manager);
return ret; return ret;
...@@ -1297,7 +1298,6 @@ static int mixer_probe(struct platform_device *pdev) ...@@ -1297,7 +1298,6 @@ static int mixer_probe(struct platform_device *pdev)
mutex_init(&ctx->mixer_mutex); mutex_init(&ctx->mixer_mutex);
ctx->manager.type = EXYNOS_DISPLAY_TYPE_HDMI;
ctx->manager.ops = &mixer_manager_ops; ctx->manager.ops = &mixer_manager_ops;
if (dev->of_node) { if (dev->of_node) {
...@@ -1321,7 +1321,7 @@ static int mixer_probe(struct platform_device *pdev) ...@@ -1321,7 +1321,7 @@ static int mixer_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, ctx); platform_set_drvdata(pdev, ctx);
ret = exynos_drm_component_add(&pdev->dev, EXYNOS_DEVICE_TYPE_CRTC, ret = exynos_drm_component_add(&pdev->dev, EXYNOS_DEVICE_TYPE_CRTC,
ctx->manager.type); EXYNOS_DISPLAY_TYPE_HDMI);
if (ret) if (ret)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment