Skip to content

Commit

Permalink
OMAPDSS: APPLY: move channel-field to extra_info set
Browse files Browse the repository at this point in the history
Setting overlay's output channel is currently handled at the same time
as other overlay attributes. This is not right, as the normal attributes
should only affect one overlay and manager, but changing the channel
affects two managers.

This patch moves the channel field into the "extra_info" set, handled
together with enabled-status.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Tomi Valkeinen committed Dec 2, 2011
1 parent c1a9feb commit 5d5a97a
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 16 deletions.
21 changes: 7 additions & 14 deletions drivers/video/omap2/dss/apply.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,14 @@ struct ovl_priv_data {

struct omap_overlay_info info;

enum omap_channel channel;

u32 fifo_low;
u32 fifo_high;

bool extra_info_dirty;
bool shadow_extra_info_dirty;

bool enabled;

enum omap_channel channel;
};

struct mgr_priv_data {
Expand Down Expand Up @@ -384,8 +382,6 @@ static void dss_ovl_write_regs(struct omap_overlay *ovl)

ilace = ovl->manager->device->type == OMAP_DISPLAY_TYPE_VENC;

dispc_ovl_set_channel_out(ovl->id, op->channel);

r = dispc_ovl_setup(ovl->id, oi, ilace, replication);
if (r) {
/*
Expand Down Expand Up @@ -423,6 +419,7 @@ static void dss_ovl_write_regs_extra(struct omap_overlay *ovl)
* disabled */

dispc_ovl_enable(ovl->id, op->enabled);
dispc_ovl_set_channel_out(ovl->id, op->channel);

mp = get_mgr_priv(ovl->manager);

Expand Down Expand Up @@ -608,19 +605,12 @@ static void omap_dss_mgr_apply_ovl(struct omap_overlay *ovl)

op = get_ovl_priv(ovl);

if (ovl->manager_changed) {
ovl->manager_changed = false;
op->user_info_dirty = true;
}

if (!op->user_info_dirty)
return;

op->user_info_dirty = false;
op->dirty = true;
op->info = op->user_info;

op->channel = ovl->manager->id;
}

static void omap_dss_mgr_apply_mgr(struct omap_overlay_manager *mgr)
Expand Down Expand Up @@ -910,9 +900,11 @@ int dss_ovl_set_manager(struct omap_overlay *ovl,
goto err;
}

op->channel = mgr->id;
op->extra_info_dirty = true;

ovl->manager = mgr;
list_add_tail(&ovl->list, &mgr->overlays);
ovl->manager_changed = true;

spin_unlock_irqrestore(&data_lock, flags);

Expand Down Expand Up @@ -960,9 +952,10 @@ int dss_ovl_unset_manager(struct omap_overlay *ovl)
goto err;
}

op->channel = -1;

ovl->manager = NULL;
list_del(&ovl->list);
ovl->manager_changed = true;

spin_unlock_irqrestore(&data_lock, flags);

Expand Down
2 changes: 0 additions & 2 deletions include/video/omapdss.h
Original file line number Diff line number Diff line change
Expand Up @@ -384,8 +384,6 @@ struct omap_overlay {
/* dynamic fields */
struct omap_overlay_manager *manager;

bool manager_changed;

int (*enable)(struct omap_overlay *ovl);
int (*disable)(struct omap_overlay *ovl);
bool (*is_enabled)(struct omap_overlay *ovl);
Expand Down

0 comments on commit 5d5a97a

Please sign in to comment.