forked from Minki/linux
drm/exynos: kill exynos_drm_crtc::pipe
Since crtc index is stored in drm_crtc pipe field became redundant. The patch beside removing the field simplifies also exynos_drm_crtc_get_pipe_from_type. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
This commit is contained in:
parent
0586feba32
commit
d644951c2b
@ -614,8 +614,7 @@ static int decon_bind(struct device *dev, struct device *master, void *data)
|
||||
out_type = (ctx->out_type & IFTYPE_HDMI) ? EXYNOS_DISPLAY_TYPE_HDMI
|
||||
: EXYNOS_DISPLAY_TYPE_LCD;
|
||||
ctx->crtc = exynos_drm_crtc_create(drm_dev, &exynos_plane->base,
|
||||
ctx->pipe, out_type,
|
||||
&decon_crtc_ops, ctx);
|
||||
out_type, &decon_crtc_ops, ctx);
|
||||
if (IS_ERR(ctx->crtc)) {
|
||||
ret = PTR_ERR(ctx->crtc);
|
||||
goto err;
|
||||
|
@ -656,8 +656,7 @@ static int decon_bind(struct device *dev, struct device *master, void *data)
|
||||
|
||||
exynos_plane = &ctx->planes[DEFAULT_WIN];
|
||||
ctx->crtc = exynos_drm_crtc_create(drm_dev, &exynos_plane->base,
|
||||
ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD,
|
||||
&decon_crtc_ops, ctx);
|
||||
EXYNOS_DISPLAY_TYPE_LCD, &decon_crtc_ops, ctx);
|
||||
if (IS_ERR(ctx->crtc)) {
|
||||
decon_ctx_remove(ctx);
|
||||
return PTR_ERR(ctx->crtc);
|
||||
|
@ -166,7 +166,6 @@ static const struct drm_crtc_funcs exynos_crtc_funcs = {
|
||||
|
||||
struct exynos_drm_crtc *exynos_drm_crtc_create(struct drm_device *drm_dev,
|
||||
struct drm_plane *plane,
|
||||
int pipe,
|
||||
enum exynos_drm_output_type type,
|
||||
const struct exynos_drm_crtc_ops *ops,
|
||||
void *ctx)
|
||||
@ -179,7 +178,6 @@ struct exynos_drm_crtc *exynos_drm_crtc_create(struct drm_device *drm_dev,
|
||||
if (!exynos_crtc)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
exynos_crtc->pipe = pipe;
|
||||
exynos_crtc->type = type;
|
||||
exynos_crtc->ops = ops;
|
||||
exynos_crtc->ctx = ctx;
|
||||
@ -206,13 +204,9 @@ int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev,
|
||||
{
|
||||
struct drm_crtc *crtc;
|
||||
|
||||
list_for_each_entry(crtc, &drm_dev->mode_config.crtc_list, head) {
|
||||
struct exynos_drm_crtc *exynos_crtc;
|
||||
|
||||
exynos_crtc = to_exynos_crtc(crtc);
|
||||
if (exynos_crtc->type == out_type)
|
||||
return exynos_crtc->pipe;
|
||||
}
|
||||
drm_for_each_crtc(crtc, drm_dev)
|
||||
if (to_exynos_crtc(crtc)->type == out_type)
|
||||
return drm_crtc_index(crtc);
|
||||
|
||||
return -EPERM;
|
||||
}
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
struct exynos_drm_crtc *exynos_drm_crtc_create(struct drm_device *drm_dev,
|
||||
struct drm_plane *plane,
|
||||
int pipe,
|
||||
enum exynos_drm_output_type type,
|
||||
const struct exynos_drm_crtc_ops *ops,
|
||||
void *context);
|
||||
|
@ -154,13 +154,6 @@ struct exynos_drm_clk {
|
||||
*
|
||||
* @base: crtc object.
|
||||
* @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
|
||||
* array when irq interrupt occurred. the reason of using this pipe is that
|
||||
* drm framework doesn't support multiple irq yet.
|
||||
* we can refer to the crtc to current hardware interrupt occurred through
|
||||
* this pipe value.
|
||||
* @ops: pointer to callbacks for exynos drm specific functionality
|
||||
* @ctx: A pointer to the crtc's implementation specific context
|
||||
* @pipe_clk: A pointer to the crtc's pipeline clock.
|
||||
@ -168,7 +161,6 @@ struct exynos_drm_clk {
|
||||
struct exynos_drm_crtc {
|
||||
struct drm_crtc base;
|
||||
enum exynos_drm_output_type type;
|
||||
unsigned int pipe;
|
||||
const struct exynos_drm_crtc_ops *ops;
|
||||
void *ctx;
|
||||
struct exynos_drm_clk *pipe_clk;
|
||||
|
@ -1003,8 +1003,7 @@ static int fimd_bind(struct device *dev, struct device *master, void *data)
|
||||
|
||||
exynos_plane = &ctx->planes[DEFAULT_WIN];
|
||||
ctx->crtc = exynos_drm_crtc_create(drm_dev, &exynos_plane->base,
|
||||
ctx->pipe, EXYNOS_DISPLAY_TYPE_LCD,
|
||||
&fimd_crtc_ops, ctx);
|
||||
EXYNOS_DISPLAY_TYPE_LCD, &fimd_crtc_ops, ctx);
|
||||
if (IS_ERR(ctx->crtc))
|
||||
return PTR_ERR(ctx->crtc);
|
||||
|
||||
|
@ -416,8 +416,7 @@ static int vidi_bind(struct device *dev, struct device *master, void *data)
|
||||
|
||||
exynos_plane = &ctx->planes[DEFAULT_WIN];
|
||||
ctx->crtc = exynos_drm_crtc_create(drm_dev, &exynos_plane->base,
|
||||
ctx->pipe, EXYNOS_DISPLAY_TYPE_VIDI,
|
||||
&vidi_crtc_ops, ctx);
|
||||
EXYNOS_DISPLAY_TYPE_VIDI, &vidi_crtc_ops, ctx);
|
||||
if (IS_ERR(ctx->crtc)) {
|
||||
DRM_ERROR("failed to create crtc.\n");
|
||||
return PTR_ERR(ctx->crtc);
|
||||
|
@ -1165,8 +1165,7 @@ static int mixer_bind(struct device *dev, struct device *manager, void *data)
|
||||
|
||||
exynos_plane = &ctx->planes[DEFAULT_WIN];
|
||||
ctx->crtc = exynos_drm_crtc_create(drm_dev, &exynos_plane->base,
|
||||
ctx->pipe, EXYNOS_DISPLAY_TYPE_HDMI,
|
||||
&mixer_crtc_ops, ctx);
|
||||
EXYNOS_DISPLAY_TYPE_HDMI, &mixer_crtc_ops, ctx);
|
||||
if (IS_ERR(ctx->crtc)) {
|
||||
mixer_ctx_remove(ctx);
|
||||
ret = PTR_ERR(ctx->crtc);
|
||||
|
Loading…
Reference in New Issue
Block a user