return dqe_read_mask(DQEHSC_CONTROL, HSC_ALL_MASK);
}
+void dqe_reg_set_hsc_full_pxl_num(struct decon_lcd *lcd_info)
+{
+ u32 val, mask;
+
+ val = (u32)(lcd_info->xres * lcd_info->yres);
+ mask = DQEHSC_FULL_PXL_NUM_MASK;
+ dqe_write_mask(DQEHSC_FULL_PXL_NUM, val, mask);
+}
+
+u32 dqe_reg_get_hsc_full_pxl_num(void)
+{
+ return dqe_read_mask(DQEHSC_FULL_PXL_NUM, DQEHSC_FULL_PXL_NUM_MASK);
+}
+
void dqe_reg_set_img_size(u32 id, struct decon_lcd *lcd_info)
{
u32 width, val, mask;
#define DQEHSC_POLY_CURVE2 0x022c
#define DQEHSC_SKIN_H 0x0240
+#define DQEHSC_FULL_PXL_NUM 0x0310
+#define DQEHSC_FULL_PXL_NUM_MASK (0x03ffffff << 0)
+#define DQEHSC_FULL_PXL_NUM_GET(_v) (((_v) >> 0) & 0x03ffffff)
+
#define SHADOW_DQE_OFFSET 0x9000
#endif
void dqe_reg_set_hsc_control(u32 val);
void dqe_reg_set_hsc_control_all_reset(void);
u32 dqe_reg_get_hsc_control(void);
+void dqe_reg_set_hsc_full_pxl_num(struct decon_lcd *lcd_info);
+u32 dqe_reg_get_hsc_full_pxl_num(void);
void dqe_reg_set_aps_on(u32 on);
void dqe_reg_hsc_sw_reset(u32 en);
void dqe_reg_aps_sw_reset(u32 en);
{
int i;
struct dqe_device *dqe = dqe_drvdata;
+ struct decon_device *decon = dqe->decon;
dqe_dbg("%s\n", __func__);
dqe->ctx.hsc[i].val);
if (dqe->ctx.hsc_on) {
+ if (decon) {
+ dqe_reg_set_hsc_full_pxl_num(decon->lcd_info);
+ dqe_dbg("dqe DQEHSC_FULL_PXL_NUM: %d\n",
+ dqe_reg_get_hsc_full_pxl_num());
+ }
dqe_reg_set_hsc_control_all_reset();
dqe_reg_set_hsc_on(1);
dqe_reg_set_hsc_control(dqe->ctx.hsc_control);