void disp_gamma_init(disp_gamma_id_t id, unsigned int width, unsigned int height, void *cmdq) { if (id == DISP_GAMMA1) { DISP_REG_MASK(cmdq, DISP_REG_GAMMA_EN, 0x1, 0x1); DISP_REG_MASK(cmdq, DISP_REG_GAMMA_SIZE, ((width << 16) | height), ~0); } disp_gamma_write_lut_reg(cmdq, id, 1); { /* Init CCORR */ disp_ccorr_id_t ccorr_id = DISP_CCORR0; if (id == DISP_GAMMA1) ccorr_id = DISP_CCORR1; disp_ccorr_init(ccorr_id, width, height, cmdq); } }
static int disp_gamma_set_lut(const DISP_GAMMA_LUT_T __user *user_gamma_lut, void *cmdq) { int ret = 0; disp_gamma_id_t id; DISP_GAMMA_LUT_T *gamma_lut, *old_lut; pr_debug("[GAMMA] disp_gamma_set_lut(cmdq = %d)", (cmdq != NULL ? 1 : 0)); gamma_lut = kmalloc(sizeof(DISP_GAMMA_LUT_T), GFP_KERNEL); if (gamma_lut == NULL) { pr_err("[GAMMA] disp_gamma_set_lut: no memory\n"); return -EFAULT; } if (copy_from_user(gamma_lut, user_gamma_lut, sizeof(DISP_GAMMA_LUT_T)) != 0) { ret = -EFAULT; kfree(gamma_lut); } else { id = gamma_lut->hw_id; if (0 <= id && id < DISP_GAMMA_TOTAL) { mutex_lock(&g_gamma_global_lock); old_lut = g_disp_gamma_lut[id]; g_disp_gamma_lut[id] = gamma_lut; ret = disp_gamma_write_lut_reg(cmdq, id, 0); mutex_unlock(&g_gamma_global_lock); if (old_lut != NULL) kfree(old_lut); disp_gamma_trigger_refresh(id); } else { pr_err("[GAMMA] disp_gamma_set_lut: invalid ID = %d\n", id); ret = -EFAULT; } } return ret; }
static void disp_gamma_init(disp_gamma_id_t id, unsigned int width, unsigned int height, void *cmdq) { DISP_REG_SET(cmdq, DISP_REG_GAMMA_SIZE, (width << 16) | height); disp_gamma_write_lut_reg(cmdq, id, 1); }
static int disp_gamma_start(DISP_MODULE_ENUM module, void *cmdq) { disp_gamma_write_lut_reg(cmdq, DISP_GAMMA0, 1); return 0; }