Skip to content

Commit 39ac2a0

Browse files
sandy-huangrkhuangtao
authored andcommitted
video: rockchip: vop: 3399: update for cabc
If enable cabc function, close auto gating, because cabc and auto gating can't enable at the same time, in addition cabc open and close will lead to splash screen, so when close cabc, we just set stage up and down to 0. Change-Id: Ia4561d6adafa956c26d1921caecc7eed97dd218a Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
1 parent 190390b commit 39ac2a0

1 file changed

Lines changed: 17 additions & 16 deletions

File tree

drivers/video/rockchip/lcdc/rk322x_lcdc.c

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,8 @@ static int vop_pre_init(struct rk_lcdc_driver *dev_drv)
636636
vop_writel(vop_dev, FRC_LOWER11_0, 0xdeb77deb);
637637
vop_writel(vop_dev, FRC_LOWER11_1, 0xed7bb7de);
638638

639-
vop_msk_reg(vop_dev, SYS_CTRL, V_AUTO_GATING_EN(1));
639+
if (!dev_drv->cabc_mode)
640+
vop_msk_reg(vop_dev, SYS_CTRL, V_AUTO_GATING_EN(0));
640641
vop_msk_reg(vop_dev, DSP_CTRL1, V_DITHER_UP_EN(1));
641642
vop_cfg_done(vop_dev);
642643
vop_dev->pre_init = true;
@@ -4478,18 +4479,22 @@ static int vop_set_dsp_cabc(struct rk_lcdc_driver *dev_drv, int mode,
44784479
}
44794480

44804481
if (!mode) {
4481-
spin_lock(&vop_dev->reg_lock);
4482-
if (vop_dev->clk_on) {
4483-
vop_msk_reg(vop_dev, CABC_CTRL0,
4484-
V_CABC_EN(0) | V_CABC_HANDLE_EN(0));
4485-
vop_cfg_done(vop_dev);
4486-
while (vop_read_bit(vop_dev, CABC_CTRL0, V_CABC_EN(0)))
4487-
;
4488-
vop_msk_reg(vop_dev, SYS_CTRL, V_AUTO_GATING_EN(1));
4482+
if (VOP_CHIP(vop_dev) == VOP_RK3399) {
4483+
calc = 0;
4484+
up = 256;
4485+
down = 255;
4486+
global = 0;
4487+
} else {
4488+
spin_lock(&vop_dev->reg_lock);
4489+
if (vop_dev->clk_on) {
4490+
vop_msk_reg(vop_dev, CABC_CTRL0,
4491+
V_CABC_EN(0) | V_CABC_HANDLE_EN(0));
4492+
vop_cfg_done(vop_dev);
4493+
}
4494+
pr_info("mode = 0, close cabc\n");
4495+
spin_unlock(&vop_dev->reg_lock);
4496+
return 0;
44894497
}
4490-
pr_info("mode = 0, close cabc\n");
4491-
spin_unlock(&vop_dev->reg_lock);
4492-
return 0;
44934498
}
44944499

44954500
total_pixel = screen->mode.xres * screen->mode.yres;
@@ -4503,10 +4508,6 @@ static int vop_set_dsp_cabc(struct rk_lcdc_driver *dev_drv, int mode,
45034508

45044509
spin_lock(&vop_dev->reg_lock);
45054510
if (vop_dev->clk_on) {
4506-
vop_msk_reg(vop_dev, SYS_CTRL, V_AUTO_GATING_EN(0));
4507-
vop_cfg_done(vop_dev);
4508-
while (vop_read_bit(vop_dev, SYS_CTRL, V_AUTO_GATING_EN(0)))
4509-
;
45104511
val = V_PWM_CONFIG_MODE(STAGE_BY_STAGE) |
45114512
V_CABC_CALC_PIXEL_NUM(calc_pixel);
45124513
vop_msk_reg(vop_dev, CABC_CTRL0, val);

0 commit comments

Comments
 (0)