Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 184862
b: refs/heads/master
c: b9eb5d7
h: refs/heads/master
v: v3
  • Loading branch information
Tomi Valkeinen committed Feb 24, 2010
1 parent 50107a0 commit 2fe137d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 63cf28ac3e3166a02a4e0db6168cf403ed66e3a5
refs/heads/master: b9eb5d7d0b9bf7c6430374333e4b9dae73bbba20
20 changes: 6 additions & 14 deletions trunk/drivers/video/omap2/dss/dsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/mutex.h>
#include <linux/semaphore.h>
#include <linux/seq_file.h>
#include <linux/platform_device.h>
#include <linux/regulator/consumer.h>
Expand Down Expand Up @@ -227,7 +228,7 @@ static struct
} vc[4];

struct mutex lock;
struct mutex bus_lock;
struct semaphore bus_lock;

unsigned pll_locked;

Expand Down Expand Up @@ -298,19 +299,19 @@ void dsi_restore_context(void)

void dsi_bus_lock(void)
{
mutex_lock(&dsi.bus_lock);
down(&dsi.bus_lock);
}
EXPORT_SYMBOL(dsi_bus_lock);

void dsi_bus_unlock(void)
{
mutex_unlock(&dsi.bus_lock);
up(&dsi.bus_lock);
}
EXPORT_SYMBOL(dsi_bus_unlock);

static bool dsi_bus_is_locked(void)
{
return mutex_is_locked(&dsi.bus_lock);
return dsi.bus_lock.count == 0;
}

static inline int wait_for_bit_change(const struct dsi_reg idx, int bitnum,
Expand Down Expand Up @@ -3002,8 +3003,6 @@ static int dsi_update_thread(void *data)
u16 x, y, w, h;

while (1) {
bool sched;

wait_event_interruptible(dsi.waitqueue,
dsi.update_mode == OMAP_DSS_UPDATE_AUTO ||
(dsi.update_mode == OMAP_DSS_UPDATE_MANUAL &&
Expand Down Expand Up @@ -3089,16 +3088,9 @@ static int dsi_update_thread(void *data)
dsi_perf_show("L4");
}

sched = atomic_read(&dsi.bus_lock.count) < 0;

complete_all(&dsi.update_completion);

dsi_bus_unlock();

/* XXX We need to give others chance to get the bus lock. Is
* there a better way for this? */
if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO && sched)
schedule_timeout_interruptible(1);
}

DSSDBG("update thread exiting\n");
Expand Down Expand Up @@ -3798,7 +3790,7 @@ int dsi_init(struct platform_device *pdev)
spin_lock_init(&dsi.update_lock);

mutex_init(&dsi.lock);
mutex_init(&dsi.bus_lock);
sema_init(&dsi.bus_lock, 1);

#ifdef DSI_CATCH_MISSING_TE
init_timer(&dsi.te_timer);
Expand Down

0 comments on commit 2fe137d

Please sign in to comment.