diff options
author | Yue Hin Lau <Yuehin.Lau@amd.com> | 2017-08-29 15:01:06 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-09-26 18:17:24 -0400 |
commit | 7ad124cc23172a7a70d642adf8f5c99f6c974539 (patch) | |
tree | 08f63efad9cb63b293cc4c9ab15c06542f66a8b7 | |
parent | fd96c1775a75c14bf15465af7040cc00855b1ec0 (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.h | 120 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_cm.c | 251 |
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 | ||
51 | struct dcn10_input_csc_matrix { | 51 | struct 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 | ||
56 | enum dcn10_coef_filter_type_sel { | 56 | enum 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 | ||
119 | static 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 | |||
119 | static void program_gamut_remap( | 151 | static 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 | ||