disp: msm: sde: program dither based on input data

This change programs dither based on user mode input data and
reprograms the dither when device comes out of power collapse.

Change-Id: I83be20c8eb2dc2221cc57cd2395f6512338ff6ef
Signed-off-by: Narendra Muppalla <NarendraM@codeaurora.org>
这个提交包含在:
Narendra Muppalla
2019-07-05 18:28:49 -07:00
父节点 52161a09b6
当前提交 f402d8e542
修改 7 个文件,包含 118 行新增141 行删除

查看文件

@@ -38,6 +38,10 @@ static u32 dither_depth_map[DITHER_DEPTH_MAP_INDEX] = {
0, 0, 0, 0, 0, 1, 2, 3, 3
};
#define DITHER_VER_MAJOR_1 1
/* supports LUMA Dither */
#define DITHER_VER_MAJOR_2 2
#define MERGE_3D_MODE 0x004
#define MERGE_3D_MUX 0x000
@@ -311,7 +315,7 @@ static int sde_hw_pp_setup_dsc(struct sde_hw_pingpong *pp)
return 0;
}
static int sde_hw_pp_setup_dither_v1(struct sde_hw_pingpong *pp,
static int sde_hw_pp_setup_dither(struct sde_hw_pingpong *pp,
void *cfg, size_t len)
{
struct sde_hw_blk_reg_map *c;
@@ -357,7 +361,12 @@ static int sde_hw_pp_setup_dither_v1(struct sde_hw_pingpong *pp,
((dither->matrix[i + 3] & REG_MASK(4)) << 12);
SDE_REG_WRITE(c, base + offset, data);
}
SDE_REG_WRITE(c, base, 1);
if (test_bit(SDE_PINGPONG_DITHER_LUMA, &pp->caps->features)
&& (dither->flags & DITHER_LUMA_MODE))
SDE_REG_WRITE(c, base, 0x11);
else
SDE_REG_WRITE(c, base, 1);
return 0;
}
@@ -491,8 +500,9 @@ static void _setup_pingpong_ops(struct sde_hw_pingpong_ops *ops,
version = SDE_COLOR_PROCESS_MAJOR(hw_cap->sblk->dither.version);
switch (version) {
case 1:
ops->setup_dither = sde_hw_pp_setup_dither_v1;
case DITHER_VER_MAJOR_1:
case DITHER_VER_MAJOR_2:
ops->setup_dither = sde_hw_pp_setup_dither;
break;
default:
ops->setup_dither = NULL;