Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 284945
b: refs/heads/master
c: 388c4c6
h: refs/heads/master
i:
  284943: d9f003b
v: v3
  • Loading branch information
Tomi Valkeinen committed Dec 2, 2011
1 parent 733ab0b commit 44017ad
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 17 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: 7609893c637b422eec88b57d204f02d8798cfc65
refs/heads/master: 388c4c6cbb335e69fe23c8d18bd4b0e8dd66901b
20 changes: 13 additions & 7 deletions trunk/drivers/video/omap2/dss/apply.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ struct ovl_priv_data {
};

struct mgr_priv_data {

bool user_info_dirty;
struct omap_overlay_manager_info user_info;

/* If true, cache changed, but not written to shadow registers. Set
* in apply(), cleared when registers written. */
bool dirty;
Expand Down Expand Up @@ -592,15 +596,15 @@ static void omap_dss_mgr_apply_mgr(struct omap_overlay_manager *mgr)

if (mgr->device_changed) {
mgr->device_changed = false;
mgr->info_dirty = true;
mp->user_info_dirty = true;
}

if (!mgr->info_dirty)
if (!mp->user_info_dirty)
return;

mgr->info_dirty = false;
mp->user_info_dirty = false;
mp->dirty = true;
mp->info = mgr->info;
mp->info = mp->user_info;
}

static void omap_dss_mgr_apply_ovl_fifos(struct omap_overlay *ovl)
Expand Down Expand Up @@ -720,12 +724,13 @@ void dss_mgr_disable(struct omap_overlay_manager *mgr)
int dss_mgr_set_info(struct omap_overlay_manager *mgr,
struct omap_overlay_manager_info *info)
{
struct mgr_priv_data *mp = get_mgr_priv(mgr);
unsigned long flags;

spin_lock_irqsave(&data_lock, flags);

mgr->info = *info;
mgr->info_dirty = true;
mp->user_info = *info;
mp->user_info_dirty = true;

spin_unlock_irqrestore(&data_lock, flags);

Expand All @@ -735,11 +740,12 @@ int dss_mgr_set_info(struct omap_overlay_manager *mgr,
void dss_mgr_get_info(struct omap_overlay_manager *mgr,
struct omap_overlay_manager_info *info)
{
struct mgr_priv_data *mp = get_mgr_priv(mgr);
unsigned long flags;

spin_lock_irqsave(&data_lock, flags);

*info = mgr->info;
*info = mp->user_info;

spin_unlock_irqrestore(&data_lock, flags);
}
Expand Down
35 changes: 29 additions & 6 deletions trunk/drivers/video/omap2/dss/manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,11 @@ static ssize_t manager_display_store(struct omap_overlay_manager *mgr,
static ssize_t manager_default_color_show(struct omap_overlay_manager *mgr,
char *buf)
{
return snprintf(buf, PAGE_SIZE, "%#x\n", mgr->info.default_color);
struct omap_overlay_manager_info info;

mgr->get_manager_info(mgr, &info);

return snprintf(buf, PAGE_SIZE, "%#x\n", info.default_color);
}

static ssize_t manager_default_color_store(struct omap_overlay_manager *mgr,
Expand Down Expand Up @@ -142,8 +146,11 @@ static ssize_t manager_trans_key_type_show(struct omap_overlay_manager *mgr,
char *buf)
{
enum omap_dss_trans_key_type key_type;
struct omap_overlay_manager_info info;

mgr->get_manager_info(mgr, &info);

key_type = mgr->info.trans_key_type;
key_type = info.trans_key_type;
BUG_ON(key_type >= ARRAY_SIZE(trans_key_type_str));

return snprintf(buf, PAGE_SIZE, "%s\n", trans_key_type_str[key_type]);
Expand Down Expand Up @@ -183,7 +190,11 @@ static ssize_t manager_trans_key_type_store(struct omap_overlay_manager *mgr,
static ssize_t manager_trans_key_value_show(struct omap_overlay_manager *mgr,
char *buf)
{
return snprintf(buf, PAGE_SIZE, "%#x\n", mgr->info.trans_key);
struct omap_overlay_manager_info info;

mgr->get_manager_info(mgr, &info);

return snprintf(buf, PAGE_SIZE, "%#x\n", info.trans_key);
}

static ssize_t manager_trans_key_value_store(struct omap_overlay_manager *mgr,
Expand Down Expand Up @@ -215,7 +226,11 @@ static ssize_t manager_trans_key_value_store(struct omap_overlay_manager *mgr,
static ssize_t manager_trans_key_enabled_show(struct omap_overlay_manager *mgr,
char *buf)
{
return snprintf(buf, PAGE_SIZE, "%d\n", mgr->info.trans_enabled);
struct omap_overlay_manager_info info;

mgr->get_manager_info(mgr, &info);

return snprintf(buf, PAGE_SIZE, "%d\n", info.trans_enabled);
}

static ssize_t manager_trans_key_enabled_store(struct omap_overlay_manager *mgr,
Expand Down Expand Up @@ -247,10 +262,14 @@ static ssize_t manager_trans_key_enabled_store(struct omap_overlay_manager *mgr,
static ssize_t manager_alpha_blending_enabled_show(
struct omap_overlay_manager *mgr, char *buf)
{
struct omap_overlay_manager_info info;

mgr->get_manager_info(mgr, &info);

WARN_ON(!dss_has_feature(FEAT_ALPHA_FIXED_ZORDER));

return snprintf(buf, PAGE_SIZE, "%d\n",
mgr->info.partial_alpha_enabled);
info.partial_alpha_enabled);
}

static ssize_t manager_alpha_blending_enabled_store(
Expand Down Expand Up @@ -285,7 +304,11 @@ static ssize_t manager_alpha_blending_enabled_store(
static ssize_t manager_cpr_enable_show(struct omap_overlay_manager *mgr,
char *buf)
{
return snprintf(buf, PAGE_SIZE, "%d\n", mgr->info.cpr_enable);
struct omap_overlay_manager_info info;

mgr->get_manager_info(mgr, &info);

return snprintf(buf, PAGE_SIZE, "%d\n", info.cpr_enable);
}

static ssize_t manager_cpr_enable_store(struct omap_overlay_manager *mgr,
Expand Down
3 changes: 0 additions & 3 deletions trunk/include/video/omapdss.h
Original file line number Diff line number Diff line change
Expand Up @@ -430,11 +430,8 @@ struct omap_overlay_manager {

/* dynamic fields */
struct omap_dss_device *device;
struct omap_overlay_manager_info info;

bool device_changed;
/* if true, info has been changed but not applied() yet */
bool info_dirty;

int (*set_device)(struct omap_overlay_manager *mgr,
struct omap_dss_device *dssdev);
Expand Down

0 comments on commit 44017ad

Please sign in to comment.