Skip to content

Commit

Permalink
OMAPDSS: APPLY: Remove omap_dss_device references in wait_for_go func…
Browse files Browse the repository at this point in the history
…tions

The functions dss_mgr_wait_for_go() and dss_mgr_wait_for_go_ovl() check if there
is an enabled display connected to the manager before trying to see the state of
the GO bit.

The checks related to the display can be replaced by checking the state of the
manager, i.e, whether the manager is enabled or not. This makes more sense than
checking with the connected display as the GO bit behaviour is more connected
with the manager state rather than the display state. A GO bit can only be set
if the manager is enabled. If a manager isn't enabled, we can safely assume that
the GO bit is not set.

Signed-off-by: Archit Taneja <archit@ti.com>
  • Loading branch information
Archit Taneja committed Sep 26, 2012
1 parent 9e7e937 commit fc22a84
Showing 1 changed file with 25 additions and 11 deletions.
36 changes: 25 additions & 11 deletions drivers/video/omap2/dss/apply.c
Original file line number Diff line number Diff line change
Expand Up @@ -421,28 +421,34 @@ static void wait_pending_extra_info_updates(void)
int dss_mgr_wait_for_go(struct omap_overlay_manager *mgr)
{
unsigned long timeout = msecs_to_jiffies(500);
struct mgr_priv_data *mp;
struct mgr_priv_data *mp = get_mgr_priv(mgr);
u32 irq;
unsigned long flags;
int r;
int i;
struct omap_dss_device *dssdev = mgr->device;

if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
spin_lock_irqsave(&data_lock, flags);

if (mgr_manual_update(mgr)) {
spin_unlock_irqrestore(&data_lock, flags);
return 0;
}

if (mgr_manual_update(mgr))
if (!mp->enabled) {
spin_unlock_irqrestore(&data_lock, flags);
return 0;
}

spin_unlock_irqrestore(&data_lock, flags);

r = dispc_runtime_get();
if (r)
return r;

irq = dispc_mgr_get_vsync_irq(mgr->id);

mp = get_mgr_priv(mgr);
i = 0;
while (1) {
unsigned long flags;
bool shadow_dirty, dirty;

spin_lock_irqsave(&data_lock, flags);
Expand Down Expand Up @@ -486,21 +492,30 @@ int dss_mgr_wait_for_go_ovl(struct omap_overlay *ovl)
{
unsigned long timeout = msecs_to_jiffies(500);
struct ovl_priv_data *op;
struct omap_dss_device *dssdev;
struct mgr_priv_data *mp;
u32 irq;
unsigned long flags;
int r;
int i;

if (!ovl->manager)
return 0;

dssdev = ovl->manager->device;
mp = get_mgr_priv(ovl->manager);

spin_lock_irqsave(&data_lock, flags);

if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
if (ovl_manual_update(ovl)) {
spin_unlock_irqrestore(&data_lock, flags);
return 0;
}

if (ovl_manual_update(ovl))
if (!mp->enabled) {
spin_unlock_irqrestore(&data_lock, flags);
return 0;
}

spin_unlock_irqrestore(&data_lock, flags);

r = dispc_runtime_get();
if (r)
Expand All @@ -511,7 +526,6 @@ int dss_mgr_wait_for_go_ovl(struct omap_overlay *ovl)
op = get_ovl_priv(ovl);
i = 0;
while (1) {
unsigned long flags;
bool shadow_dirty, dirty;

spin_lock_irqsave(&data_lock, flags);
Expand Down

0 comments on commit fc22a84

Please sign in to comment.