aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYue Hin Lau <Yuehin.Lau@amd.com>2017-08-29 15:01:06 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-09-26 18:17:24 -0400
commit7ad124cc23172a7a70d642adf8f5c99f6c974539 (patch)
tree08f63efad9cb63b293cc4c9ab15c06542f66a8b7
parentfd96c1775a75c14bf15465af7040cc00855b1ec0 (diff)
drm/amd/display: clean up cm register programming functions
Signed-off-by: Yue Hin Lau <Yuehin.Lau@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Harry Wentland <Harry.Wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h120
-rw-r--r--drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c251
2 files changed, 76 insertions, 295 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h
index 717930584111..4bbd3b4f7ae6 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.h
@@ -44,10 +44,6 @@
44#define TF_REG_LIST_DCN(id) \ 44#define TF_REG_LIST_DCN(id) \
45 SRI(CM_GAMUT_REMAP_CONTROL, CM, id),\ 45 SRI(CM_GAMUT_REMAP_CONTROL, CM, id),\
46 SRI(CM_GAMUT_REMAP_C11_C12, CM, id),\ 46 SRI(CM_GAMUT_REMAP_C11_C12, CM, id),\
47 SRI(CM_GAMUT_REMAP_C13_C14, CM, id),\
48 SRI(CM_GAMUT_REMAP_C21_C22, CM, id),\
49 SRI(CM_GAMUT_REMAP_C23_C24, CM, id),\
50 SRI(CM_GAMUT_REMAP_C31_C32, CM, id),\
51 SRI(CM_GAMUT_REMAP_C33_C34, CM, id),\ 47 SRI(CM_GAMUT_REMAP_C33_C34, CM, id),\
52 SRI(DSCL_EXT_OVERSCAN_LEFT_RIGHT, DSCL, id), \ 48 SRI(DSCL_EXT_OVERSCAN_LEFT_RIGHT, DSCL, id), \
53 SRI(DSCL_EXT_OVERSCAN_TOP_BOTTOM, DSCL, id), \ 49 SRI(DSCL_EXT_OVERSCAN_TOP_BOTTOM, DSCL, id), \
@@ -79,10 +75,6 @@
79 SRI(OBUF_CONTROL, DSCL, id), \ 75 SRI(OBUF_CONTROL, DSCL, id), \
80 SRI(CM_ICSC_CONTROL, CM, id), \ 76 SRI(CM_ICSC_CONTROL, CM, id), \
81 SRI(CM_ICSC_C11_C12, CM, id), \ 77 SRI(CM_ICSC_C11_C12, CM, id), \
82 SRI(CM_ICSC_C13_C14, CM, id), \
83 SRI(CM_ICSC_C21_C22, CM, id), \
84 SRI(CM_ICSC_C23_C24, CM, id), \
85 SRI(CM_ICSC_C31_C32, CM, id), \
86 SRI(CM_ICSC_C33_C34, CM, id), \ 78 SRI(CM_ICSC_C33_C34, CM, id), \
87 SRI(CM_DGAM_RAMB_START_CNTL_B, CM, id), \ 79 SRI(CM_DGAM_RAMB_START_CNTL_B, CM, id), \
88 SRI(CM_DGAM_RAMB_START_CNTL_G, CM, id), \ 80 SRI(CM_DGAM_RAMB_START_CNTL_G, CM, id), \
@@ -127,23 +119,11 @@
127#define TF_REG_LIST_DCN10(id) \ 119#define TF_REG_LIST_DCN10(id) \
128 TF_REG_LIST_DCN(id), \ 120 TF_REG_LIST_DCN(id), \
129 SRI(CM_COMA_C11_C12, CM, id),\ 121 SRI(CM_COMA_C11_C12, CM, id),\
130 SRI(CM_COMA_C13_C14, CM, id),\
131 SRI(CM_COMA_C21_C22, CM, id),\
132 SRI(CM_COMA_C23_C24, CM, id),\
133 SRI(CM_COMA_C31_C32, CM, id),\
134 SRI(CM_COMA_C33_C34, CM, id),\ 122 SRI(CM_COMA_C33_C34, CM, id),\
135 SRI(CM_COMB_C11_C12, CM, id),\ 123 SRI(CM_COMB_C11_C12, CM, id),\
136 SRI(CM_COMB_C13_C14, CM, id),\
137 SRI(CM_COMB_C21_C22, CM, id),\
138 SRI(CM_COMB_C23_C24, CM, id),\
139 SRI(CM_COMB_C31_C32, CM, id),\
140 SRI(CM_COMB_C33_C34, CM, id),\ 124 SRI(CM_COMB_C33_C34, CM, id),\
141 SRI(CM_OCSC_CONTROL, CM, id), \ 125 SRI(CM_OCSC_CONTROL, CM, id), \
142 SRI(CM_OCSC_C11_C12, CM, id), \ 126 SRI(CM_OCSC_C11_C12, CM, id), \
143 SRI(CM_OCSC_C13_C14, CM, id), \
144 SRI(CM_OCSC_C21_C22, CM, id), \
145 SRI(CM_OCSC_C23_C24, CM, id), \
146 SRI(CM_OCSC_C31_C32, CM, id), \
147 SRI(CM_OCSC_C33_C34, CM, id), \ 127 SRI(CM_OCSC_C33_C34, CM, id), \
148 SRI(CM_MEM_PWR_CTRL, CM, id), \ 128 SRI(CM_MEM_PWR_CTRL, CM, id), \
149 SRI(CM_RGAM_LUT_DATA, CM, id), \ 129 SRI(CM_RGAM_LUT_DATA, CM, id), \
@@ -189,14 +169,6 @@
189 TF_SF(CM0_CM_GAMUT_REMAP_CONTROL, CM_GAMUT_REMAP_MODE, mask_sh),\ 169 TF_SF(CM0_CM_GAMUT_REMAP_CONTROL, CM_GAMUT_REMAP_MODE, mask_sh),\
190 TF_SF(CM0_CM_GAMUT_REMAP_C11_C12, CM_GAMUT_REMAP_C11, mask_sh),\ 170 TF_SF(CM0_CM_GAMUT_REMAP_C11_C12, CM_GAMUT_REMAP_C11, mask_sh),\
191 TF_SF(CM0_CM_GAMUT_REMAP_C11_C12, CM_GAMUT_REMAP_C12, mask_sh),\ 171 TF_SF(CM0_CM_GAMUT_REMAP_C11_C12, CM_GAMUT_REMAP_C12, mask_sh),\
192 TF_SF(CM0_CM_GAMUT_REMAP_C13_C14, CM_GAMUT_REMAP_C13, mask_sh),\
193 TF_SF(CM0_CM_GAMUT_REMAP_C13_C14, CM_GAMUT_REMAP_C14, mask_sh),\
194 TF_SF(CM0_CM_GAMUT_REMAP_C21_C22, CM_GAMUT_REMAP_C21, mask_sh),\
195 TF_SF(CM0_CM_GAMUT_REMAP_C21_C22, CM_GAMUT_REMAP_C22, mask_sh),\
196 TF_SF(CM0_CM_GAMUT_REMAP_C23_C24, CM_GAMUT_REMAP_C23, mask_sh),\
197 TF_SF(CM0_CM_GAMUT_REMAP_C23_C24, CM_GAMUT_REMAP_C24, mask_sh),\
198 TF_SF(CM0_CM_GAMUT_REMAP_C31_C32, CM_GAMUT_REMAP_C31, mask_sh),\
199 TF_SF(CM0_CM_GAMUT_REMAP_C31_C32, CM_GAMUT_REMAP_C32, mask_sh),\
200 TF_SF(CM0_CM_GAMUT_REMAP_C33_C34, CM_GAMUT_REMAP_C33, mask_sh),\ 172 TF_SF(CM0_CM_GAMUT_REMAP_C33_C34, CM_GAMUT_REMAP_C33, mask_sh),\
201 TF_SF(CM0_CM_GAMUT_REMAP_C33_C34, CM_GAMUT_REMAP_C34, mask_sh),\ 173 TF_SF(CM0_CM_GAMUT_REMAP_C33_C34, CM_GAMUT_REMAP_C34, mask_sh),\
202 TF_SF(DSCL0_DSCL_EXT_OVERSCAN_LEFT_RIGHT, EXT_OVERSCAN_LEFT, mask_sh),\ 174 TF_SF(DSCL0_DSCL_EXT_OVERSCAN_LEFT_RIGHT, EXT_OVERSCAN_LEFT, mask_sh),\
@@ -264,14 +236,6 @@
264 TF_SF(CM0_CM_ICSC_CONTROL, CM_ICSC_MODE, mask_sh), \ 236 TF_SF(CM0_CM_ICSC_CONTROL, CM_ICSC_MODE, mask_sh), \
265 TF_SF(CM0_CM_ICSC_C11_C12, CM_ICSC_C11, mask_sh), \ 237 TF_SF(CM0_CM_ICSC_C11_C12, CM_ICSC_C11, mask_sh), \
266 TF_SF(CM0_CM_ICSC_C11_C12, CM_ICSC_C12, mask_sh), \ 238 TF_SF(CM0_CM_ICSC_C11_C12, CM_ICSC_C12, mask_sh), \
267 TF_SF(CM0_CM_ICSC_C13_C14, CM_ICSC_C13, mask_sh), \
268 TF_SF(CM0_CM_ICSC_C13_C14, CM_ICSC_C14, mask_sh), \
269 TF_SF(CM0_CM_ICSC_C21_C22, CM_ICSC_C21, mask_sh), \
270 TF_SF(CM0_CM_ICSC_C21_C22, CM_ICSC_C22, mask_sh), \
271 TF_SF(CM0_CM_ICSC_C23_C24, CM_ICSC_C23, mask_sh), \
272 TF_SF(CM0_CM_ICSC_C23_C24, CM_ICSC_C24, mask_sh), \
273 TF_SF(CM0_CM_ICSC_C31_C32, CM_ICSC_C31, mask_sh), \
274 TF_SF(CM0_CM_ICSC_C31_C32, CM_ICSC_C32, mask_sh), \
275 TF_SF(CM0_CM_ICSC_C33_C34, CM_ICSC_C33, mask_sh), \ 239 TF_SF(CM0_CM_ICSC_C33_C34, CM_ICSC_C33, mask_sh), \
276 TF_SF(CM0_CM_ICSC_C33_C34, CM_ICSC_C34, mask_sh), \ 240 TF_SF(CM0_CM_ICSC_C33_C34, CM_ICSC_C34, mask_sh), \
277 TF_SF(CM0_CM_DGAM_RAMB_START_CNTL_B, CM_DGAM_RAMB_EXP_REGION_START_B, mask_sh), \ 241 TF_SF(CM0_CM_DGAM_RAMB_START_CNTL_B, CM_DGAM_RAMB_EXP_REGION_START_B, mask_sh), \
@@ -349,39 +313,15 @@
349 TF_SF(DSCL0_LB_DATA_FORMAT, DITHER_EN, mask_sh),\ 313 TF_SF(DSCL0_LB_DATA_FORMAT, DITHER_EN, mask_sh),\
350 TF_SF(CM0_CM_COMA_C11_C12, CM_COMA_C11, mask_sh),\ 314 TF_SF(CM0_CM_COMA_C11_C12, CM_COMA_C11, mask_sh),\
351 TF_SF(CM0_CM_COMA_C11_C12, CM_COMA_C12, mask_sh),\ 315 TF_SF(CM0_CM_COMA_C11_C12, CM_COMA_C12, mask_sh),\
352 TF_SF(CM0_CM_COMA_C13_C14, CM_COMA_C13, mask_sh),\
353 TF_SF(CM0_CM_COMA_C13_C14, CM_COMA_C14, mask_sh),\
354 TF_SF(CM0_CM_COMA_C21_C22, CM_COMA_C21, mask_sh),\
355 TF_SF(CM0_CM_COMA_C21_C22, CM_COMA_C22, mask_sh),\
356 TF_SF(CM0_CM_COMA_C23_C24, CM_COMA_C23, mask_sh),\
357 TF_SF(CM0_CM_COMA_C23_C24, CM_COMA_C24, mask_sh),\
358 TF_SF(CM0_CM_COMA_C31_C32, CM_COMA_C31, mask_sh),\
359 TF_SF(CM0_CM_COMA_C31_C32, CM_COMA_C32, mask_sh),\
360 TF_SF(CM0_CM_COMA_C33_C34, CM_COMA_C33, mask_sh),\ 316 TF_SF(CM0_CM_COMA_C33_C34, CM_COMA_C33, mask_sh),\
361 TF_SF(CM0_CM_COMA_C33_C34, CM_COMA_C34, mask_sh),\ 317 TF_SF(CM0_CM_COMA_C33_C34, CM_COMA_C34, mask_sh),\
362 TF_SF(CM0_CM_COMB_C11_C12, CM_COMB_C11, mask_sh),\ 318 TF_SF(CM0_CM_COMB_C11_C12, CM_COMB_C11, mask_sh),\
363 TF_SF(CM0_CM_COMB_C11_C12, CM_COMB_C12, mask_sh),\ 319 TF_SF(CM0_CM_COMB_C11_C12, CM_COMB_C12, mask_sh),\
364 TF_SF(CM0_CM_COMB_C13_C14, CM_COMB_C13, mask_sh),\
365 TF_SF(CM0_CM_COMB_C13_C14, CM_COMB_C14, mask_sh),\
366 TF_SF(CM0_CM_COMB_C21_C22, CM_COMB_C21, mask_sh),\
367 TF_SF(CM0_CM_COMB_C21_C22, CM_COMB_C22, mask_sh),\
368 TF_SF(CM0_CM_COMB_C23_C24, CM_COMB_C23, mask_sh),\
369 TF_SF(CM0_CM_COMB_C23_C24, CM_COMB_C24, mask_sh),\
370 TF_SF(CM0_CM_COMB_C31_C32, CM_COMB_C31, mask_sh),\
371 TF_SF(CM0_CM_COMB_C33_C34, CM_COMB_C33, mask_sh),\ 320 TF_SF(CM0_CM_COMB_C33_C34, CM_COMB_C33, mask_sh),\
372 TF_SF(CM0_CM_COMB_C31_C32, CM_COMB_C32, mask_sh),\
373 TF_SF(CM0_CM_COMB_C33_C34, CM_COMB_C34, mask_sh),\ 321 TF_SF(CM0_CM_COMB_C33_C34, CM_COMB_C34, mask_sh),\
374 TF_SF(CM0_CM_OCSC_CONTROL, CM_OCSC_MODE, mask_sh), \ 322 TF_SF(CM0_CM_OCSC_CONTROL, CM_OCSC_MODE, mask_sh), \
375 TF_SF(CM0_CM_OCSC_C11_C12, CM_OCSC_C11, mask_sh), \ 323 TF_SF(CM0_CM_OCSC_C11_C12, CM_OCSC_C11, mask_sh), \
376 TF_SF(CM0_CM_OCSC_C11_C12, CM_OCSC_C12, mask_sh), \ 324 TF_SF(CM0_CM_OCSC_C11_C12, CM_OCSC_C12, mask_sh), \
377 TF_SF(CM0_CM_OCSC_C13_C14, CM_OCSC_C13, mask_sh), \
378 TF_SF(CM0_CM_OCSC_C13_C14, CM_OCSC_C14, mask_sh), \
379 TF_SF(CM0_CM_OCSC_C21_C22, CM_OCSC_C21, mask_sh), \
380 TF_SF(CM0_CM_OCSC_C21_C22, CM_OCSC_C22, mask_sh), \
381 TF_SF(CM0_CM_OCSC_C23_C24, CM_OCSC_C23, mask_sh), \
382 TF_SF(CM0_CM_OCSC_C23_C24, CM_OCSC_C24, mask_sh), \
383 TF_SF(CM0_CM_OCSC_C31_C32, CM_OCSC_C31, mask_sh), \
384 TF_SF(CM0_CM_OCSC_C31_C32, CM_OCSC_C32, mask_sh), \
385 TF_SF(CM0_CM_OCSC_C33_C34, CM_OCSC_C33, mask_sh), \ 325 TF_SF(CM0_CM_OCSC_C33_C34, CM_OCSC_C33, mask_sh), \
386 TF_SF(CM0_CM_OCSC_C33_C34, CM_OCSC_C34, mask_sh), \ 326 TF_SF(CM0_CM_OCSC_C33_C34, CM_OCSC_C34, mask_sh), \
387 TF_SF(CM0_CM_MEM_PWR_CTRL, RGAM_MEM_PWR_FORCE, mask_sh), \ 327 TF_SF(CM0_CM_MEM_PWR_CTRL, RGAM_MEM_PWR_FORCE, mask_sh), \
@@ -532,51 +472,19 @@
532 type CM_GAMUT_REMAP_MODE; \ 472 type CM_GAMUT_REMAP_MODE; \
533 type CM_GAMUT_REMAP_C11; \ 473 type CM_GAMUT_REMAP_C11; \
534 type CM_GAMUT_REMAP_C12; \ 474 type CM_GAMUT_REMAP_C12; \
535 type CM_GAMUT_REMAP_C13; \
536 type CM_GAMUT_REMAP_C14; \
537 type CM_GAMUT_REMAP_C21; \
538 type CM_GAMUT_REMAP_C22; \
539 type CM_GAMUT_REMAP_C23; \
540 type CM_GAMUT_REMAP_C24; \
541 type CM_GAMUT_REMAP_C31; \
542 type CM_GAMUT_REMAP_C32; \
543 type CM_GAMUT_REMAP_C33; \ 475 type CM_GAMUT_REMAP_C33; \
544 type CM_GAMUT_REMAP_C34; \ 476 type CM_GAMUT_REMAP_C34; \
545 type CM_COMA_C11; \ 477 type CM_COMA_C11; \
546 type CM_COMA_C12; \ 478 type CM_COMA_C12; \
547 type CM_COMA_C13; \
548 type CM_COMA_C14; \
549 type CM_COMA_C21; \
550 type CM_COMA_C22; \
551 type CM_COMA_C23; \
552 type CM_COMA_C24; \
553 type CM_COMA_C31; \
554 type CM_COMA_C32; \
555 type CM_COMA_C33; \ 479 type CM_COMA_C33; \
556 type CM_COMA_C34; \ 480 type CM_COMA_C34; \
557 type CM_COMB_C11; \ 481 type CM_COMB_C11; \
558 type CM_COMB_C12; \ 482 type CM_COMB_C12; \
559 type CM_COMB_C13; \
560 type CM_COMB_C14; \
561 type CM_COMB_C21; \
562 type CM_COMB_C22; \
563 type CM_COMB_C23; \
564 type CM_COMB_C24; \
565 type CM_COMB_C31; \
566 type CM_COMB_C32; \
567 type CM_COMB_C33; \ 483 type CM_COMB_C33; \
568 type CM_COMB_C34; \ 484 type CM_COMB_C34; \
569 type CM_OCSC_MODE; \ 485 type CM_OCSC_MODE; \
570 type CM_OCSC_C11; \ 486 type CM_OCSC_C11; \
571 type CM_OCSC_C12; \ 487 type CM_OCSC_C12; \
572 type CM_OCSC_C13; \
573 type CM_OCSC_C14; \
574 type CM_OCSC_C21; \
575 type CM_OCSC_C22; \
576 type CM_OCSC_C23; \
577 type CM_OCSC_C24; \
578 type CM_OCSC_C31; \
579 type CM_OCSC_C32; \
580 type CM_OCSC_C33; \ 488 type CM_OCSC_C33; \
581 type CM_OCSC_C34; \ 489 type CM_OCSC_C34; \
582 type RGAM_MEM_PWR_FORCE; \ 490 type RGAM_MEM_PWR_FORCE; \
@@ -1008,14 +916,6 @@
1008 type CM_ICSC_MODE; \ 916 type CM_ICSC_MODE; \
1009 type CM_ICSC_C11; \ 917 type CM_ICSC_C11; \
1010 type CM_ICSC_C12; \ 918 type CM_ICSC_C12; \
1011 type CM_ICSC_C13; \
1012 type CM_ICSC_C14; \
1013 type CM_ICSC_C21; \
1014 type CM_ICSC_C22; \
1015 type CM_ICSC_C23; \
1016 type CM_ICSC_C24; \
1017 type CM_ICSC_C31; \
1018 type CM_ICSC_C32; \
1019 type CM_ICSC_C33; \ 919 type CM_ICSC_C33; \
1020 type CM_ICSC_C34; \ 920 type CM_ICSC_C34; \
1021 type CM_DGAM_RAMB_EXP_REGION_START_B; \ 921 type CM_DGAM_RAMB_EXP_REGION_START_B; \
@@ -1146,29 +1046,13 @@ struct dcn_dpp_registers {
1146 uint32_t RECOUT_SIZE; 1046 uint32_t RECOUT_SIZE;
1147 uint32_t CM_GAMUT_REMAP_CONTROL; 1047 uint32_t CM_GAMUT_REMAP_CONTROL;
1148 uint32_t CM_GAMUT_REMAP_C11_C12; 1048 uint32_t CM_GAMUT_REMAP_C11_C12;
1149 uint32_t CM_GAMUT_REMAP_C13_C14;
1150 uint32_t CM_GAMUT_REMAP_C21_C22;
1151 uint32_t CM_GAMUT_REMAP_C23_C24;
1152 uint32_t CM_GAMUT_REMAP_C31_C32;
1153 uint32_t CM_GAMUT_REMAP_C33_C34; 1049 uint32_t CM_GAMUT_REMAP_C33_C34;
1154 uint32_t CM_COMA_C11_C12; 1050 uint32_t CM_COMA_C11_C12;
1155 uint32_t CM_COMA_C13_C14;
1156 uint32_t CM_COMA_C21_C22;
1157 uint32_t CM_COMA_C23_C24;
1158 uint32_t CM_COMA_C31_C32;
1159 uint32_t CM_COMA_C33_C34; 1051 uint32_t CM_COMA_C33_C34;
1160 uint32_t CM_COMB_C11_C12; 1052 uint32_t CM_COMB_C11_C12;
1161 uint32_t CM_COMB_C13_C14;
1162 uint32_t CM_COMB_C21_C22;
1163 uint32_t CM_COMB_C23_C24;
1164 uint32_t CM_COMB_C31_C32;
1165 uint32_t CM_COMB_C33_C34; 1053 uint32_t CM_COMB_C33_C34;
1166 uint32_t CM_OCSC_CONTROL; 1054 uint32_t CM_OCSC_CONTROL;
1167 uint32_t CM_OCSC_C11_C12; 1055 uint32_t CM_OCSC_C11_C12;
1168 uint32_t CM_OCSC_C13_C14;
1169 uint32_t CM_OCSC_C21_C22;
1170 uint32_t CM_OCSC_C23_C24;
1171 uint32_t CM_OCSC_C31_C32;
1172 uint32_t CM_OCSC_C33_C34; 1056 uint32_t CM_OCSC_C33_C34;
1173 uint32_t CM_MEM_PWR_CTRL; 1057 uint32_t CM_MEM_PWR_CTRL;
1174 uint32_t CM_RGAM_LUT_DATA; 1058 uint32_t CM_RGAM_LUT_DATA;
@@ -1317,10 +1201,6 @@ struct dcn_dpp_registers {
1317 uint32_t CM_SHAPER_LUT_DATA; 1201 uint32_t CM_SHAPER_LUT_DATA;
1318 uint32_t CM_ICSC_CONTROL; 1202 uint32_t CM_ICSC_CONTROL;
1319 uint32_t CM_ICSC_C11_C12; 1203 uint32_t CM_ICSC_C11_C12;
1320 uint32_t CM_ICSC_C13_C14;
1321 uint32_t CM_ICSC_C21_C22;
1322 uint32_t CM_ICSC_C23_C24;
1323 uint32_t CM_ICSC_C31_C32;
1324 uint32_t CM_ICSC_C33_C34; 1204 uint32_t CM_ICSC_C33_C34;
1325 uint32_t CM_DGAM_RAMB_START_CNTL_B; 1205 uint32_t CM_DGAM_RAMB_START_CNTL_B;
1326 uint32_t CM_DGAM_RAMB_START_CNTL_G; 1206 uint32_t CM_DGAM_RAMB_START_CNTL_G;
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c
index 01b1c0ee0110..d698fccdef68 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c
@@ -50,7 +50,7 @@
50 50
51struct dcn10_input_csc_matrix { 51struct dcn10_input_csc_matrix {
52 enum dc_color_space color_space; 52 enum dc_color_space color_space;
53 uint32_t regval[12]; 53 uint16_t regval[12];
54}; 54};
55 55
56enum dcn10_coef_filter_type_sel { 56enum dcn10_coef_filter_type_sel {
@@ -116,6 +116,38 @@ static const struct dcn10_input_csc_matrix dcn10_input_csc_matrix[] = {
116 0x2568, 0x43ee, 0xdbb2} } 116 0x2568, 0x43ee, 0xdbb2} }
117}; 117};
118 118
119static void dpp_cm_program_color_registers(
120 struct dcn10_dpp *xfm,
121 const uint16_t *regval,
122 uint32_t cm_reg_start,
123 uint32_t cm_reg_end)
124{
125 uint32_t reg_region_cur;
126 unsigned int i = 0;
127
128#undef REG
129#define REG(reg) reg
130
131 for (reg_region_cur = cm_reg_start;
132 reg_region_cur <= cm_reg_end;
133 reg_region_cur++) {
134
135 const uint16_t *regval0 = &(regval[2 * i]);
136 const uint16_t *regval1 = &(regval[(2 * i) + 1]);
137
138 REG_SET_2(reg_region_cur, 0,
139 CM_GAMUT_REMAP_C11, *regval0,
140 CM_GAMUT_REMAP_C12, *regval1);
141
142 i++;
143 }
144
145#undef REG
146#define REG(reg)\
147 xfm->tf_regs->reg
148
149}
150
119static void program_gamut_remap( 151static void program_gamut_remap(
120 struct dcn10_dpp *xfm, 152 struct dcn10_dpp *xfm,
121 const uint16_t *regval, 153 const uint16_t *regval,
@@ -145,79 +177,27 @@ static void program_gamut_remap(
145 177
146 if (select == GAMUT_REMAP_COEFF) { 178 if (select == GAMUT_REMAP_COEFF) {
147 179
148 REG_SET_2(CM_GAMUT_REMAP_C11_C12, 0, 180 dpp_cm_program_color_registers(
149 CM_GAMUT_REMAP_C11, regval[0], 181 xfm,
150 CM_GAMUT_REMAP_C12, regval[1]); 182 regval,
151 regval += 2; 183 REG(CM_GAMUT_REMAP_C11_C12),
152 REG_SET_2(CM_GAMUT_REMAP_C13_C14, 0, 184 REG(CM_GAMUT_REMAP_C33_C34));
153 CM_GAMUT_REMAP_C13, regval[0],
154 CM_GAMUT_REMAP_C14, regval[1]);
155 regval += 2;
156 REG_SET_2(CM_GAMUT_REMAP_C21_C22, 0,
157 CM_GAMUT_REMAP_C21, regval[0],
158 CM_GAMUT_REMAP_C22, regval[1]);
159 regval += 2;
160 REG_SET_2(CM_GAMUT_REMAP_C23_C24, 0,
161 CM_GAMUT_REMAP_C23, regval[0],
162 CM_GAMUT_REMAP_C24, regval[1]);
163 regval += 2;
164 REG_SET_2(CM_GAMUT_REMAP_C31_C32, 0,
165 CM_GAMUT_REMAP_C31, regval[0],
166 CM_GAMUT_REMAP_C32, regval[1]);
167 regval += 2;
168 REG_SET_2(CM_GAMUT_REMAP_C33_C34, 0,
169 CM_GAMUT_REMAP_C33, regval[0],
170 CM_GAMUT_REMAP_C34, regval[1]);
171 185
172 } else if (select == GAMUT_REMAP_COMA_COEFF) { 186 } else if (select == GAMUT_REMAP_COMA_COEFF) {
173 REG_SET_2(CM_COMA_C11_C12, 0, 187
174 CM_COMA_C11, regval[0], 188 dpp_cm_program_color_registers(
175 CM_COMA_C12, regval[1]); 189 xfm,
176 regval += 2; 190 regval,
177 REG_SET_2(CM_COMA_C13_C14, 0, 191 REG(CM_COMA_C11_C12),
178 CM_COMA_C13, regval[0], 192 REG(CM_COMA_C33_C34));
179 CM_COMA_C14, regval[1]);
180 regval += 2;
181 REG_SET_2(CM_COMA_C21_C22, 0,
182 CM_COMA_C21, regval[0],
183 CM_COMA_C22, regval[1]);
184 regval += 2;
185 REG_SET_2(CM_COMA_C23_C24, 0,
186 CM_COMA_C23, regval[0],
187 CM_COMA_C24, regval[1]);
188 regval += 2;
189 REG_SET_2(CM_COMA_C31_C32, 0,
190 CM_COMA_C31, regval[0],
191 CM_COMA_C32, regval[1]);
192 regval += 2;
193 REG_SET_2(CM_COMA_C33_C34, 0,
194 CM_COMA_C33, regval[0],
195 CM_COMA_C34, regval[1]);
196 193
197 } else { 194 } else {
198 REG_SET_2(CM_COMB_C11_C12, 0, 195
199 CM_COMB_C11, regval[0], 196 dpp_cm_program_color_registers(
200 CM_COMB_C12, regval[1]); 197 xfm,
201 regval += 2; 198 regval,
202 REG_SET_2(CM_COMB_C13_C14, 0, 199 REG(CM_COMB_C11_C12),
203 CM_COMB_C13, regval[0], 200 REG(CM_COMB_C33_C34));
204 CM_COMB_C14, regval[1]);
205 regval += 2;
206 REG_SET_2(CM_COMB_C21_C22, 0,
207 CM_COMB_C21, regval[0],
208 CM_COMB_C22, regval[1]);
209 regval += 2;
210 REG_SET_2(CM_COMB_C23_C24, 0,
211 CM_COMB_C23, regval[0],
212 CM_COMB_C24, regval[1]);
213 regval += 2;
214 REG_SET_2(CM_COMB_C31_C32, 0,
215 CM_COMB_C31, regval[0],
216 CM_COMB_C32, regval[1]);
217 regval += 2;
218 REG_SET_2(CM_COMB_C33_C34, 0,
219 CM_COMB_C33, regval[0],
220 CM_COMB_C34, regval[1]);
221 } 201 }
222 202
223 REG_SET( 203 REG_SET(
@@ -312,59 +292,20 @@ static void dcn10_dpp_cm_program_color_matrix(
312 } 292 }
313 293
314 if (mode == 4) { 294 if (mode == 4) {
315 /*R*/ 295
316 REG_SET_2(CM_OCSC_C11_C12, 0, 296 dpp_cm_program_color_registers(
317 CM_OCSC_C11, tbl_entry->regval[0], 297 xfm,
318 CM_OCSC_C12, tbl_entry->regval[1]); 298 tbl_entry->regval,
319 299 REG(CM_OCSC_C11_C12),
320 REG_SET_2(CM_OCSC_C13_C14, 0, 300 REG(CM_OCSC_C33_C34));
321 CM_OCSC_C13, tbl_entry->regval[2], 301
322 CM_OCSC_C14, tbl_entry->regval[3]);
323
324 /*G*/
325 REG_SET_2(CM_OCSC_C21_C22, 0,
326 CM_OCSC_C21, tbl_entry->regval[4],
327 CM_OCSC_C22, tbl_entry->regval[5]);
328
329 REG_SET_2(CM_OCSC_C23_C24, 0,
330 CM_OCSC_C23, tbl_entry->regval[6],
331 CM_OCSC_C24, tbl_entry->regval[7]);
332
333 /*B*/
334 REG_SET_2(CM_OCSC_C31_C32, 0,
335 CM_OCSC_C31, tbl_entry->regval[8],
336 CM_OCSC_C32, tbl_entry->regval[9]);
337
338 REG_SET_2(CM_OCSC_C33_C34, 0,
339 CM_OCSC_C33, tbl_entry->regval[10],
340 CM_OCSC_C34, tbl_entry->regval[11]);
341 } else { 302 } else {
342 /*R*/ 303
343 REG_SET_2(CM_COMB_C11_C12, 0, 304 dpp_cm_program_color_registers(
344 CM_COMB_C11, tbl_entry->regval[0], 305 xfm,
345 CM_COMB_C12, tbl_entry->regval[1]); 306 tbl_entry->regval,
346 307 REG(CM_COMB_C11_C12),
347 REG_SET_2(CM_COMB_C13_C14, 0, 308 REG(CM_COMB_C33_C34));
348 CM_COMB_C13, tbl_entry->regval[2],
349 CM_COMB_C14, tbl_entry->regval[3]);
350
351 /*G*/
352 REG_SET_2(CM_COMB_C21_C22, 0,
353 CM_COMB_C21, tbl_entry->regval[4],
354 CM_COMB_C22, tbl_entry->regval[5]);
355
356 REG_SET_2(CM_COMB_C23_C24, 0,
357 CM_COMB_C23, tbl_entry->regval[6],
358 CM_COMB_C24, tbl_entry->regval[7]);
359
360 /*B*/
361 REG_SET_2(CM_COMB_C31_C32, 0,
362 CM_COMB_C31, tbl_entry->regval[8],
363 CM_COMB_C32, tbl_entry->regval[9]);
364
365 REG_SET_2(CM_COMB_C33_C34, 0,
366 CM_COMB_C33, tbl_entry->regval[10],
367 CM_COMB_C34, tbl_entry->regval[11]);
368 } 309 }
369} 310}
370 311
@@ -602,7 +543,7 @@ void ippn10_program_input_csc(
602 struct dcn10_dpp *xfm = TO_DCN10_DPP(xfm_base); 543 struct dcn10_dpp *xfm = TO_DCN10_DPP(xfm_base);
603 int i; 544 int i;
604 int arr_size = sizeof(dcn10_input_csc_matrix)/sizeof(struct dcn10_input_csc_matrix); 545 int arr_size = sizeof(dcn10_input_csc_matrix)/sizeof(struct dcn10_input_csc_matrix);
605 const uint32_t *regval = NULL; 546 const uint16_t *regval = NULL;
606 uint32_t selection = 1; 547 uint32_t selection = 1;
607 548
608 if (select == INPUT_CSC_SELECT_BYPASS) { 549 if (select == INPUT_CSC_SELECT_BYPASS) {
@@ -627,59 +568,19 @@ void ippn10_program_input_csc(
627 CM_ICSC_MODE, selection); 568 CM_ICSC_MODE, selection);
628 569
629 if (select == INPUT_CSC_SELECT_ICSC) { 570 if (select == INPUT_CSC_SELECT_ICSC) {
630 /*R*/ 571
631 REG_SET_2(CM_ICSC_C11_C12, 0, 572 dpp_cm_program_color_registers(
632 CM_ICSC_C11, regval[0], 573 xfm,
633 CM_ICSC_C12, regval[1]); 574 regval,
634 regval += 2; 575 REG(CM_ICSC_C11_C12),
635 REG_SET_2(CM_ICSC_C13_C14, 0, 576 REG(CM_ICSC_C33_C34));
636 CM_ICSC_C13, regval[0],
637 CM_ICSC_C14, regval[1]);
638 /*G*/
639 regval += 2;
640 REG_SET_2(CM_ICSC_C21_C22, 0,
641 CM_ICSC_C21, regval[0],
642 CM_ICSC_C22, regval[1]);
643 regval += 2;
644 REG_SET_2(CM_ICSC_C23_C24, 0,
645 CM_ICSC_C23, regval[0],
646 CM_ICSC_C24, regval[1]);
647 /*B*/
648 regval += 2;
649 REG_SET_2(CM_ICSC_C31_C32, 0,
650 CM_ICSC_C31, regval[0],
651 CM_ICSC_C32, regval[1]);
652 regval += 2;
653 REG_SET_2(CM_ICSC_C33_C34, 0,
654 CM_ICSC_C33, regval[0],
655 CM_ICSC_C34, regval[1]);
656 } else { 577 } else {
657 /*R*/ 578
658 REG_SET_2(CM_COMA_C11_C12, 0, 579 dpp_cm_program_color_registers(
659 CM_COMA_C11, regval[0], 580 xfm,
660 CM_COMA_C12, regval[1]); 581 regval,
661 regval += 2; 582 REG(CM_COMA_C11_C12),
662 REG_SET_2(CM_COMA_C13_C14, 0, 583 REG(CM_COMA_C33_C34));
663 CM_COMA_C13, regval[0],
664 CM_COMA_C14, regval[1]);
665 /*G*/
666 regval += 2;
667 REG_SET_2(CM_COMA_C21_C22, 0,
668 CM_COMA_C21, regval[0],
669 CM_COMA_C22, regval[1]);
670 regval += 2;
671 REG_SET_2(CM_COMA_C23_C24, 0,
672 CM_COMA_C23, regval[0],
673 CM_COMA_C24, regval[1]);
674 /*B*/
675 regval += 2;
676 REG_SET_2(CM_COMA_C31_C32, 0,
677 CM_COMA_C31, regval[0],
678 CM_COMA_C32, regval[1]);
679 regval += 2;
680 REG_SET_2(CM_COMA_C33_C34, 0,
681 CM_COMA_C33, regval[0],
682 CM_COMA_C34, regval[1]);
683 } 584 }
684} 585}
685 586