Пример #1
0
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);
    }
}
Пример #2
0
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;
}
Пример #3
0
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);
}
Пример #4
0
static int disp_gamma_start(DISP_MODULE_ENUM module, void *cmdq)
{
	disp_gamma_write_lut_reg(cmdq, DISP_GAMMA0, 1);

	return 0;
}