From: ChiHun Won Date: Thu, 27 Dec 2018 01:32:59 +0000 (+0900) Subject: [RAMEN9610-10033] fbdev: dpu20: added exception for checking diagonal matrix X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=9c9f11dc8cef4e61f1243304bc448605e4a5863b;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git [RAMEN9610-10033] fbdev: dpu20: added exception for checking diagonal matrix Change-Id: If3dceec7047aaf537677656ec532d1e23f2c5483 Signed-off-by: ChiHun Won --- diff --git a/drivers/video/fbdev/exynos/dpu20/decon_core.c b/drivers/video/fbdev/exynos/dpu20/decon_core.c index 202580c7b001..f57ab7b4f20d 100644 --- a/drivers/video/fbdev/exynos/dpu20/decon_core.c +++ b/drivers/video/fbdev/exynos/dpu20/decon_core.c @@ -3067,7 +3067,7 @@ static int decon_ioctl(struct fb_info *info, unsigned int cmd, decon_dbg("DQE: EXYNOS_SET_COLOR_MOE_WITH_RENDER_INTENT: %d %d\n", cm_intent_info.color_mode, cm_intent_info.render_intent); #if defined(CONFIG_EXYNOS_DECON_DQE) - decon_dqe_set_color_mode(&cm_intent_info); + ret = decon_dqe_set_color_mode(&cm_intent_info); #endif break; @@ -3080,7 +3080,7 @@ static int decon_ioctl(struct fb_info *info, unsigned int cmd, decon_dbg("DQE: EXYNOS_SET_COLOR_TRANSFORM: %d\n", transform_info.hint); #if defined(CONFIG_EXYNOS_DECON_DQE) - decon_dqe_set_color_transform(&transform_info); + ret = decon_dqe_set_color_transform(&transform_info); #endif break; diff --git a/drivers/video/fbdev/exynos/dpu20/dqe_drv.c b/drivers/video/fbdev/exynos/dpu20/dqe_drv.c index aeeb9982b5c2..b281fc36fcb2 100644 --- a/drivers/video/fbdev/exynos/dpu20/dqe_drv.c +++ b/drivers/video/fbdev/exynos/dpu20/dqe_drv.c @@ -1189,9 +1189,10 @@ int decon_dqe_set_color_transform(struct decon_color_transform_info *transform) { int ret = 0; int i, j; - int temp[16]; + int input[16], temp[16]; struct dqe_device *dqe = dqe_drvdata; struct decon_device *decon = get_decon_drvdata(0); + int diag_matrix[16] = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}; mutex_lock(&dqe->lock); @@ -1199,38 +1200,53 @@ int decon_dqe_set_color_transform(struct decon_color_transform_info *transform) if ((decon->state == DECON_STATE_OFF) || (decon->state == DECON_STATE_INIT)) { dqe_err("decon is not enabled!(%d)\n", decon->state); - ret = -1; goto err; } } else { dqe_err("decon is NULL!\n"); - ret = -1; goto err; } if (transform->matrix[0] != 65536/*transform->hint*/) { for (i = 0; i < 16; i++) - dqe_dbg("matrix[%d] = %d\n", i, transform->matrix[i]); - - for (i = 0; i < 16; i++) - temp[i] = transform->matrix[i]; + input[i] = temp[i] = transform->matrix[i]; dqe_color_transform_night_light(temp, transform->matrix); for (i = 0; i < 16; i++) - dqe_dbg("night[%d] = %d\n", i, transform->matrix[i]); + if (transform->matrix[i] == -1 || transform->matrix[i] == 1) + transform->matrix[i] = 0; + } + + for (i = 0; i < 16; i++) { + if (transform->matrix[i] && diag_matrix[i]) + continue; + if (!transform->matrix[i] && !diag_matrix[i]) + continue; + + for (j = 0; j < 4; j++) + dqe_info("%6d %6d %6d %6d\n", + input[j * 4], input[j * 4 + 1], + input[j * 4 + 2], input[j * 4 + 3]); + for (j = 0; j < 4; j++) + dqe_info("%6d %6d %6d %6d\n", + transform->matrix[j * 4], transform->matrix[j * 4 + 1], + transform->matrix[j * 4 + 2], transform->matrix[j * 4 + 3]); + ret = -1; + goto err; } if (transform->matrix[0] == 65536 && transform->matrix[5] == 65536 && - transform->matrix[10] == 65536) + transform->matrix[10] == 65536 && + transform->matrix[15] == 65536) dqe->ctx.night_light_on = 0; else dqe->ctx.night_light_on = 1; - for (i = 0; i < 3; i++) - for (j = 0; j < 65; j++) - gamma_lut[i][j] = bypass_gamma_tune[i][j]; + for (i = 0; i < 3; i++) + for (j = 0; j < 65; j++) + gamma_lut[i][j] = bypass_gamma_tune[i][j]; for (j = 0; j < 65; j++) { int inR, inG, inB, outR, outG, outB;