Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 230481
b: refs/heads/master
c: fd28a39
h: refs/heads/master
i:
  230479: a57edbd
v: v3
  • Loading branch information
Rajkumar N authored and Tomi Valkeinen committed Jan 10, 2011
1 parent 8ab41f5 commit 90fd6da
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 10 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: 8fbde10aff726c9b5a1a2fe878a072b937d32476
refs/heads/master: fd28a39071cee34ec59021f620f6dfca5f89ac9b
1 change: 1 addition & 0 deletions trunk/arch/arm/plat-omap/include/plat/display.h
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ struct omap_overlay_info {
u16 out_width; /* if 0, out_width == width */
u16 out_height; /* if 0, out_height == height */
u8 global_alpha;
u8 pre_mult_alpha;
};

struct omap_overlay {
Expand Down
30 changes: 23 additions & 7 deletions trunk/drivers/video/omap2/dss/dispc.c
Original file line number Diff line number Diff line change
Expand Up @@ -773,13 +773,26 @@ static void _dispc_set_vid_size(enum omap_plane plane, int width, int height)
dispc_write_reg(vsi_reg[plane-1], val);
}

static void _dispc_set_pre_mult_alpha(enum omap_plane plane, bool enable)
{
if (!dss_has_feature(FEAT_PRE_MULT_ALPHA))
return;

if (!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
plane == OMAP_DSS_VIDEO1)
return;

REG_FLD_MOD(dispc_reg_att[plane], enable ? 1 : 0, 28, 28);
}

static void _dispc_setup_global_alpha(enum omap_plane plane, u8 global_alpha)
{
if (!dss_has_feature(FEAT_GLOBAL_ALPHA))
return;

BUG_ON(!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
plane == OMAP_DSS_VIDEO1);
if (!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
plane == OMAP_DSS_VIDEO1)
return;

if (plane == OMAP_DSS_GFX)
REG_FLD_MOD(DISPC_GLOBAL_ALPHA, global_alpha, 7, 0);
Expand Down Expand Up @@ -1507,7 +1520,8 @@ static int _dispc_setup_plane(enum omap_plane plane,
bool ilace,
enum omap_dss_rotation_type rotation_type,
u8 rotation, int mirror,
u8 global_alpha)
u8 global_alpha,
u8 pre_mult_alpha)
{
const int maxdownscale = cpu_is_omap34xx() ? 4 : 2;
bool five_taps = 0;
Expand Down Expand Up @@ -1693,8 +1707,8 @@ static int _dispc_setup_plane(enum omap_plane plane,

_dispc_set_rotation_attrs(plane, rotation, mirror, color_mode);

if (plane != OMAP_DSS_VIDEO1)
_dispc_setup_global_alpha(plane, global_alpha);
_dispc_set_pre_mult_alpha(plane, pre_mult_alpha);
_dispc_setup_global_alpha(plane, global_alpha);

return 0;
}
Expand Down Expand Up @@ -3138,7 +3152,8 @@ int dispc_setup_plane(enum omap_plane plane,
enum omap_color_mode color_mode,
bool ilace,
enum omap_dss_rotation_type rotation_type,
u8 rotation, bool mirror, u8 global_alpha)
u8 rotation, bool mirror, u8 global_alpha,
u8 pre_mult_alpha)
{
int r = 0;

Expand All @@ -3160,7 +3175,8 @@ int dispc_setup_plane(enum omap_plane plane,
color_mode, ilace,
rotation_type,
rotation, mirror,
global_alpha);
global_alpha,
pre_mult_alpha);

enable_clocks(0);

Expand Down
3 changes: 2 additions & 1 deletion trunk/drivers/video/omap2/dss/dss.h
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,8 @@ int dispc_setup_plane(enum omap_plane plane,
bool ilace,
enum omap_dss_rotation_type rotation_type,
u8 rotation, bool mirror,
u8 global_alpha);
u8 global_alpha,
u8 pre_mult_alpha);

bool dispc_go_busy(enum omap_channel channel);
void dispc_go(enum omap_channel channel);
Expand Down
5 changes: 4 additions & 1 deletion trunk/drivers/video/omap2/dss/manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,7 @@ struct overlay_cache_data {
u16 out_width; /* if 0, out_width == width */
u16 out_height; /* if 0, out_height == height */
u8 global_alpha;
u8 pre_mult_alpha;

enum omap_channel channel;
bool replication;
Expand Down Expand Up @@ -842,7 +843,8 @@ static int configure_overlay(enum omap_plane plane)
c->rotation_type,
c->rotation,
c->mirror,
c->global_alpha);
c->global_alpha,
c->pre_mult_alpha);

if (r) {
/* this shouldn't happen */
Expand Down Expand Up @@ -1265,6 +1267,7 @@ static int omap_dss_mgr_apply(struct omap_overlay_manager *mgr)
oc->out_width = ovl->info.out_width;
oc->out_height = ovl->info.out_height;
oc->global_alpha = ovl->info.global_alpha;
oc->pre_mult_alpha = ovl->info.pre_mult_alpha;

oc->replication =
dss_use_replication(dssdev, ovl->info.color_mode);
Expand Down
41 changes: 41 additions & 0 deletions trunk/drivers/video/omap2/dss/overlay.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,43 @@ static ssize_t overlay_global_alpha_store(struct omap_overlay *ovl,
return size;
}

static ssize_t overlay_pre_mult_alpha_show(struct omap_overlay *ovl,
char *buf)
{
return snprintf(buf, PAGE_SIZE, "%d\n",
ovl->info.pre_mult_alpha);
}

static ssize_t overlay_pre_mult_alpha_store(struct omap_overlay *ovl,
const char *buf, size_t size)
{
int r;
struct omap_overlay_info info;

ovl->get_overlay_info(ovl, &info);

/* only GFX and Video2 plane support pre alpha multiplied
* set zero for Video1 plane
*/
if (!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
ovl->id == OMAP_DSS_VIDEO1)
info.pre_mult_alpha = 0;
else
info.pre_mult_alpha = simple_strtoul(buf, NULL, 10);

r = ovl->set_overlay_info(ovl, &info);
if (r)
return r;

if (ovl->manager) {
r = ovl->manager->apply(ovl->manager);
if (r)
return r;
}

return size;
}

struct overlay_attribute {
struct attribute attr;
ssize_t (*show)(struct omap_overlay *, char *);
Expand All @@ -280,6 +317,9 @@ static OVERLAY_ATTR(enabled, S_IRUGO|S_IWUSR,
overlay_enabled_show, overlay_enabled_store);
static OVERLAY_ATTR(global_alpha, S_IRUGO|S_IWUSR,
overlay_global_alpha_show, overlay_global_alpha_store);
static OVERLAY_ATTR(pre_mult_alpha, S_IRUGO|S_IWUSR,
overlay_pre_mult_alpha_show,
overlay_pre_mult_alpha_store);

static struct attribute *overlay_sysfs_attrs[] = {
&overlay_attr_name.attr,
Expand All @@ -290,6 +330,7 @@ static struct attribute *overlay_sysfs_attrs[] = {
&overlay_attr_output_size.attr,
&overlay_attr_enabled.attr,
&overlay_attr_global_alpha.attr,
&overlay_attr_pre_mult_alpha.attr,
NULL
};

Expand Down

0 comments on commit 90fd6da

Please sign in to comment.