static int disp_ccorr_write_coef_reg(cmdqRecHandle cmdq, disp_ccorr_id_t id, int lock) { const unsigned long ccorr_base = DISPSYS_CCORR_BASE; int ret = 0; DISP_CCORR_COEF_T *ccorr; if (lock) mutex_lock(&g_gamma_global_lock); ccorr = g_disp_ccorr_coef[id]; if (ccorr == NULL) { pr_debug("[GAMMA] disp_ccorr_write_coef_reg: [%d] not initialized\n", id); ret = -EFAULT; goto ccorr_write_coef_unlock; } DISP_REG_SET(cmdq, DISP_REG_CCORR_EN, 1); DISP_REG_MASK(cmdq, DISP_REG_CCORR_CFG, 0x2, 0x2); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 0), ((ccorr->coef[0][0] << 16) | (ccorr->coef[0][1])) ); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 1), ((ccorr->coef[0][2] << 16) | (ccorr->coef[1][0])) ); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 2), ((ccorr->coef[1][1] << 16) | (ccorr->coef[1][2])) ); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 3), ((ccorr->coef[2][0] << 16) | (ccorr->coef[2][1])) ); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 4), (ccorr->coef[2][2] << 16) ); ccorr_write_coef_unlock: if (lock) mutex_unlock(&g_gamma_global_lock); return ret; }
static int disp_ccorr_write_coef_reg(cmdqRecHandle cmdq, disp_ccorr_id_t id, int lock) { unsigned int ccorr_base = 0; int ret = 0; int is_identity = 0; DISP_CCORR_COEF_T *ccorr; if (id >= DISP_CCORR_TOTAL) { printk(KERN_ERR "[GAMMA] disp_gamma_write_lut_reg: invalid ID = %d\n", id); return -EFAULT; } if (lock) spin_lock(&g_gamma_global_lock); ccorr = g_disp_ccorr_coef[id]; if (ccorr == NULL) { printk(KERN_NOTICE "[GAMMA] disp_ccorr_write_coef_reg: [%d] not initialized\n", id); ret = -EFAULT; goto ccorr_write_coef_unlock; } if ((ccorr->coef[0][0] == 1024) && (ccorr->coef[0][1] == 0) && (ccorr->coef[0][2] == 0) && (ccorr->coef[1][0] == 0) && (ccorr->coef[1][1] == 1024) && (ccorr->coef[1][2] == 0) && (ccorr->coef[2][0] == 0) && (ccorr->coef[2][1] == 0) && (ccorr->coef[2][2] == 1024)) { is_identity = 1; } if (id == DISP_CCORR0) { ccorr_base = DISP_AAL_CCORR(0); DISP_REG_MASK(cmdq, DISP_AAL_CFG, (!is_identity) << 4, 0x1 << 4); } else if (id == DISP_CCORR1) { ccorr_base = DISP_GAMMA_CCORR_0; DISP_REG_MASK(cmdq, DISP_REG_GAMMA_CFG, (!is_identity) << 4, 0x1 << 4); } else { printk(KERN_ERR "[GAMMA] disp_gamma_write_ccorr_reg: invalid ID = %d\n", id); ret = -EFAULT; goto ccorr_write_coef_unlock; } pr_debug("CCORR %d %d\n", (int)id, is_identity); pr_debug("CCORR %d %d %d\n", ccorr->coef[0][0], ccorr->coef[0][1], ccorr->coef[0][2]); pr_debug("CCORR %d %d %d\n", ccorr->coef[1][0], ccorr->coef[1][1], ccorr->coef[1][2]); pr_debug("CCORR %d %d %d\n", ccorr->coef[2][0], ccorr->coef[2][1], ccorr->coef[2][2]); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 0), ((ccorr->coef[0][0] << 16) | (ccorr->coef[0][1])) ); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 1), ((ccorr->coef[0][2] << 16) | (ccorr->coef[1][0])) ); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 2), ((ccorr->coef[1][1] << 16) | (ccorr->coef[1][2])) ); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 3), ((ccorr->coef[2][0] << 16) | (ccorr->coef[2][1])) ); DISP_REG_SET(cmdq, CCORR_REG(ccorr_base, 4), (ccorr->coef[2][2] << 16) ); ccorr_write_coef_unlock: if (lock) spin_unlock(&g_gamma_global_lock); return ret; }