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: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Signed-off-by: Inki Dae <inki.dae@samsung.com>
This commit is contained in:
parent
8a326edda4
commit
5d1741ad4b
|
@ -299,7 +299,8 @@ static void exynos_drm_crtc_attach_mode_property(struct drm_crtc *crtc)
|
|||
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 drm_plane *plane;
|
||||
|
@ -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->manager = manager;
|
||||
exynos_crtc->pipe = pipe;
|
||||
exynos_crtc->type = type;
|
||||
plane = exynos_plane_init(manager->drm_dev, 1 << pipe,
|
||||
DRM_PLANE_TYPE_PRIMARY);
|
||||
if (IS_ERR(plane)) {
|
||||
|
@ -435,7 +437,7 @@ int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev,
|
|||
struct exynos_drm_crtc *exynos_crtc;
|
||||
|
||||
exynos_crtc = to_exynos_crtc(crtc);
|
||||
if (exynos_crtc->manager->type == out_type)
|
||||
if (exynos_crtc->type == out_type)
|
||||
return exynos_crtc->pipe;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,8 @@
|
|||
|
||||
#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);
|
||||
void exynos_drm_crtc_disable_vblank(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 {
|
|||
* Exynos drm common manager structure, maps 1:1 with a crtc
|
||||
*
|
||||
* @list: the list entry for this manager
|
||||
* @type: one of EXYNOS_DISPLAY_TYPE_LCD and HDMI.
|
||||
* @drm_dev: pointer to the drm device
|
||||
* @crtc: crtc object.
|
||||
* @ops: pointer to callbacks for exynos drm specific functionality
|
||||
|
@ -212,7 +211,6 @@ struct exynos_drm_manager_ops {
|
|||
*/
|
||||
struct exynos_drm_manager {
|
||||
struct list_head list;
|
||||
enum exynos_drm_output_type type;
|
||||
struct drm_device *drm_dev;
|
||||
struct drm_crtc *crtc;
|
||||
struct exynos_drm_manager_ops *ops;
|
||||
|
@ -228,6 +226,7 @@ enum exynos_crtc_mode {
|
|||
*
|
||||
* @base: crtc object.
|
||||
* @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
|
||||
* and the crtc object would be set to private->crtc array
|
||||
* to get a crtc object corresponding to this pipe from private->crtc
|
||||
|
@ -241,6 +240,7 @@ enum exynos_crtc_mode {
|
|||
struct exynos_drm_crtc {
|
||||
struct drm_crtc base;
|
||||
struct exynos_drm_manager *manager;
|
||||
enum exynos_drm_output_type type;
|
||||
unsigned int pipe;
|
||||
unsigned int dpms;
|
||||
enum exynos_crtc_mode mode;
|
||||
|
|
|
@ -1076,7 +1076,8 @@ static int fimd_bind(struct device *dev, struct device *master, void *data)
|
|||
struct drm_device *drm_dev = data;
|
||||
|
||||
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)
|
||||
exynos_drm_create_enc_conn(drm_dev, ctx->display);
|
||||
|
||||
|
@ -1117,11 +1118,10 @@ static int fimd_probe(struct platform_device *pdev)
|
|||
if (!ctx)
|
||||
return -ENOMEM;
|
||||
|
||||
ctx->manager.type = EXYNOS_DISPLAY_TYPE_LCD;
|
||||
ctx->manager.ops = &fimd_manager_ops;
|
||||
|
||||
ret = exynos_drm_component_add(dev, EXYNOS_DEVICE_TYPE_CRTC,
|
||||
ctx->manager.type);
|
||||
EXYNOS_DISPLAY_TYPE_LCD);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -558,7 +558,8 @@ static int vidi_bind(struct device *dev, struct device *master, void *data)
|
|||
|
||||
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) {
|
||||
DRM_ERROR("failed to create crtc.\n");
|
||||
return ret;
|
||||
|
@ -593,7 +594,6 @@ static int vidi_probe(struct platform_device *pdev)
|
|||
if (!ctx)
|
||||
return -ENOMEM;
|
||||
|
||||
ctx->manager.type = EXYNOS_DISPLAY_TYPE_VIDI;
|
||||
ctx->manager.ops = &vidi_manager_ops;
|
||||
ctx->display.type = EXYNOS_DISPLAY_TYPE_VIDI;
|
||||
ctx->display.ops = &vidi_display_ops;
|
||||
|
@ -601,7 +601,7 @@ static int vidi_probe(struct platform_device *pdev)
|
|||
ctx->pdev = pdev;
|
||||
|
||||
ret = exynos_drm_component_add(&pdev->dev, EXYNOS_DEVICE_TYPE_CRTC,
|
||||
ctx->manager.type);
|
||||
EXYNOS_DISPLAY_TYPE_VIDI);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -1261,7 +1261,8 @@ static int mixer_bind(struct device *dev, struct device *manager, void *data)
|
|||
if (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) {
|
||||
mixer_mgr_remove(&ctx->manager);
|
||||
return ret;
|
||||
|
@ -1297,7 +1298,6 @@ static int mixer_probe(struct platform_device *pdev)
|
|||
|
||||
mutex_init(&ctx->mixer_mutex);
|
||||
|
||||
ctx->manager.type = EXYNOS_DISPLAY_TYPE_HDMI;
|
||||
ctx->manager.ops = &mixer_manager_ops;
|
||||
|
||||
if (dev->of_node) {
|
||||
|
@ -1321,7 +1321,7 @@ static int mixer_probe(struct platform_device *pdev)
|
|||
platform_set_drvdata(pdev, ctx);
|
||||
|
||||
ret = exynos_drm_component_add(&pdev->dev, EXYNOS_DEVICE_TYPE_CRTC,
|
||||
ctx->manager.type);
|
||||
EXYNOS_DISPLAY_TYPE_HDMI);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
Loading…
Reference in New Issue