diff --git a/drivers/misc/rk628/rk628_post_process.c b/drivers/misc/rk628/rk628_post_process.c index f5d9e61fb35a..ae0c5aa1fcf6 100644 --- a/drivers/misc/rk628/rk628_post_process.c +++ b/drivers/misc/rk628/rk628_post_process.c @@ -1594,6 +1594,9 @@ static void rk628_post_process_csc(struct rk628 *rk628) range_type <<= is_input_yuv ? 0 : 1; val = SW_Y2R_MODE(range_type) | SW_FROM_CSC_MATRIX_EN(1); rk628_i2c_write(rk628, GRF_CSC_CTRL_CON, val); + + if (rk628_output_is_bt1120(rk628)) + rk628_i2c_write(rk628, GRF_CSC_CTRL_CON, SW_YUV2VYU_SWP(1)); } } diff --git a/drivers/misc/rk628/rk628_rgb.c b/drivers/misc/rk628/rk628_rgb.c index 6c11b4b3d0b4..5b7b8d1658d5 100644 --- a/drivers/misc/rk628/rk628_rgb.c +++ b/drivers/misc/rk628/rk628_rgb.c @@ -311,7 +311,7 @@ static void rk628_bt1120_decoder_enable(struct rk628 *rk628) rk628_i2c_update_bits(rk628, GRF_SYSTEM_CON0, SW_BT_DATA_OEN_MASK | SW_INPUT_MODE_MASK, SW_BT_DATA_OEN | SW_INPUT_MODE(INPUT_MODE_BT1120)); - rk628_i2c_write(rk628, GRF_CSC_CTRL_CON, SW_Y2R_EN(1)); + rk628_i2c_update_bits(rk628, GRF_RGB_DEC_CON0, SW_CAP_EN_PSYNC | SW_CAP_EN_ASYNC | SW_PROGRESS_EN | @@ -340,7 +340,7 @@ static void rk628_bt1120_encoder_enable(struct rk628 *rk628) rk628_i2c_update_bits(rk628, GRF_SYSTEM_CON0, SW_BT_DATA_OEN_MASK | SW_OUTPUT_RGB_MODE_MASK, SW_OUTPUT_RGB_MODE(OUTPUT_MODE_BT1120 >> 3)); - rk628_i2c_write(rk628, GRF_CSC_CTRL_CON, SW_R2Y_EN(1)); + if (rk628->version != RK628F_VERSION) rk628_i2c_update_bits(rk628, GRF_POST_PROC_CON, SW_DCLK_OUT_INV_EN, SW_DCLK_OUT_INV_EN);