return dqe_read_mask(DQECON, DQE_HSC_ON_MASK);
}
+void dqe_reg_hsc_sw_reset(u32 id)
+{
+ u32 cnt = 5000; /* 3 frame */
+ u32 state;
+
+ dqe_write_mask(DQECON, ~0, DQE_HSC_SW_RESET_MASK);
+ decon_reg_update_req_dqe(id);
+
+ do {
+ state = dqe_read_mask(DQECON, DQE_HSC_SW_RESET_MASK);
+ cnt--;
+ udelay(10);
+ } while (state && cnt);
+
+ if (!cnt)
+ dqe_err("%s is timeout.\n", __func__);
+
+ dqe_dbg("dqe hsc_sw_reset:%d cnt:%d\n",
+ DQE_HSC_SW_RESET_GET(dqe_read(DQECON)), cnt);
+}
+
void dqe_reg_set_hsc_pphc_on(u32 on)
{
dqe_write_mask(DQEHSC_CONTROL, ~0, HSC_PPHC_ON_MASK);
#define DQE_BASE 0x2000
/* DQECON_SET */
#define DQECON 0x0000
+#define DQE_APS_SW_RESET_MASK (1 << 18)
+#define DQE_APS_SW_RESET_GET(_v) (((_v) >> 18) & 0x1)
+#define DQE_HSC_SW_RESET_MASK (1 << 16)
+#define DQE_HSC_SW_RESET_GET(_v) (((_v) >> 16) & 0x1)
+
#define DQE_HSC_ON_MASK (1 << 3)
#define DQE_HSC_ON_GET(_v) (((_v) >> 3) & 0x1)
#define DQE_GAMMA_ON_MASK (1 << 2)
struct dqe_ctx ctx;
};
+extern int dqe_log_level;
+
/* CAL APIs list */
void dqe_reg_module_on_off(bool en_she, bool en_cgc, bool en_gamma,
bool en_hsc, bool en_aps);
u32 dqe_reg_get_gamma_on(void);
void dqe_reg_set_hsc_on(u32 on);
u32 dqe_reg_get_hsc_on(void);
+void dqe_reg_hsc_sw_reset(u32 id);
void dqe_reg_set_hsc_pphc_on(u32 on);
void dqe_reg_set_hsc_ppsc_on(u32 on);
void dqe_reg_set_hsc_control(u32 val);
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);
void dqe_reg_reset(u32 en);
void dqe_reg_set_gammagray_on(u32 on);
void dqe_reg_lpd_mode_exit(u32 en);
void dqe_reg_set_hsc_pphcgain_cmy(u32 c, u32 m, u32 y);
void dqe_reg_set_hsc_tsc_ycomp(u32 ratio, u32 gain);
+void decon_dqe_sw_reset(struct decon_device *decon);
void decon_dqe_enable(struct decon_device *decon);
void decon_dqe_disable(struct decon_device *decon);
int decon_dqe_create_interface(struct decon_device *decon);