forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c
....@@ -218,6 +218,12 @@
218218 INTERLEAVE_EN, lb_params->interleave_en, /* Interleave source enable */
219219 LB_DATA_FORMAT__ALPHA_EN, lb_params->alpha_en); /* Alpha enable */
220220 }
221
+ else {
222
+ /* DSCL caps: pixel data processed in float format */
223
+ REG_SET_2(LB_DATA_FORMAT, 0,
224
+ INTERLEAVE_EN, lb_params->interleave_en, /* Interleave source enable */
225
+ LB_DATA_FORMAT__ALPHA_EN, lb_params->alpha_en); /* Alpha enable */
226
+ }
221227
222228 REG_SET_2(LB_MEMORY_CTRL, 0,
223229 MEMORY_CONFIG, mem_size_config,
....@@ -610,11 +616,13 @@
610616 SCL_V_INIT_FRAC, init_frac,
611617 SCL_V_INIT_INT, init_int);
612618
613
- init_frac = dc_fixpt_u0d19(data->inits.v_bot) << 5;
614
- init_int = dc_fixpt_floor(data->inits.v_bot);
615
- REG_SET_2(SCL_VERT_FILTER_INIT_BOT, 0,
616
- SCL_V_INIT_FRAC_BOT, init_frac,
617
- SCL_V_INIT_INT_BOT, init_int);
619
+ if (REG(SCL_VERT_FILTER_INIT_BOT)) {
620
+ init_frac = dc_fixpt_u0d19(data->inits.v_bot) << 5;
621
+ init_int = dc_fixpt_floor(data->inits.v_bot);
622
+ REG_SET_2(SCL_VERT_FILTER_INIT_BOT, 0,
623
+ SCL_V_INIT_FRAC_BOT, init_frac,
624
+ SCL_V_INIT_INT_BOT, init_int);
625
+ }
618626
619627 init_frac = dc_fixpt_u0d19(data->inits.v_c) << 5;
620628 init_int = dc_fixpt_floor(data->inits.v_c);
....@@ -622,11 +630,13 @@
622630 SCL_V_INIT_FRAC_C, init_frac,
623631 SCL_V_INIT_INT_C, init_int);
624632
625
- init_frac = dc_fixpt_u0d19(data->inits.v_c_bot) << 5;
626
- init_int = dc_fixpt_floor(data->inits.v_c_bot);
627
- REG_SET_2(SCL_VERT_FILTER_INIT_BOT_C, 0,
628
- SCL_V_INIT_FRAC_BOT_C, init_frac,
629
- SCL_V_INIT_INT_BOT_C, init_int);
633
+ if (REG(SCL_VERT_FILTER_INIT_BOT_C)) {
634
+ init_frac = dc_fixpt_u0d19(data->inits.v_c_bot) << 5;
635
+ init_int = dc_fixpt_floor(data->inits.v_c_bot);
636
+ REG_SET_2(SCL_VERT_FILTER_INIT_BOT_C, 0,
637
+ SCL_V_INIT_FRAC_BOT_C, init_frac,
638
+ SCL_V_INIT_INT_BOT_C, init_int);
639
+ }
630640 }
631641
632642
....@@ -701,15 +711,17 @@
701711 return;
702712
703713 /* Black offsets */
704
- if (ycbcr)
705
- REG_SET_2(SCL_BLACK_OFFSET, 0,
706
- SCL_BLACK_OFFSET_RGB_Y, BLACK_OFFSET_RGB_Y,
707
- SCL_BLACK_OFFSET_CBCR, BLACK_OFFSET_CBCR);
708
- else
714
+ if (REG(SCL_BLACK_OFFSET)) {
715
+ if (ycbcr)
716
+ REG_SET_2(SCL_BLACK_OFFSET, 0,
717
+ SCL_BLACK_OFFSET_RGB_Y, BLACK_OFFSET_RGB_Y,
718
+ SCL_BLACK_OFFSET_CBCR, BLACK_OFFSET_CBCR);
719
+ else
709720
710
- REG_SET_2(SCL_BLACK_OFFSET, 0,
711
- SCL_BLACK_OFFSET_RGB_Y, BLACK_OFFSET_RGB_Y,
712
- SCL_BLACK_OFFSET_CBCR, BLACK_OFFSET_RGB_Y);
721
+ REG_SET_2(SCL_BLACK_OFFSET, 0,
722
+ SCL_BLACK_OFFSET_RGB_Y, BLACK_OFFSET_RGB_Y,
723
+ SCL_BLACK_OFFSET_CBCR, BLACK_OFFSET_RGB_Y);
724
+ }
713725
714726 /* Manually calculate scale ratio and init values */
715727 dpp1_dscl_set_manual_ratio_init(dpp, scl_data);