forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-14 bedbef8ad3e75a304af6361af235302bcc61d06b
kernel/drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
....@@ -23,6 +23,8 @@
2323 *
2424 */
2525
26
+#include <linux/delay.h>
27
+
2628 #include "dm_services.h"
2729 #include "core_types.h"
2830 #include "timing_generator.h"
....@@ -45,8 +47,10 @@
4547 COLOR_SPACE_RGB_LIMITED_TYPE,
4648 COLOR_SPACE_YCBCR601_TYPE,
4749 COLOR_SPACE_YCBCR709_TYPE,
50
+ COLOR_SPACE_YCBCR2020_TYPE,
4851 COLOR_SPACE_YCBCR601_LIMITED_TYPE,
49
- COLOR_SPACE_YCBCR709_LIMITED_TYPE
52
+ COLOR_SPACE_YCBCR709_LIMITED_TYPE,
53
+ COLOR_SPACE_YCBCR709_BLACK_TYPE,
5054 };
5155
5256 static const struct tg_color black_color_format[] = {
....@@ -80,7 +84,6 @@
8084 { COLOR_SPACE_YCBCR709_TYPE,
8185 { 0xE04, 0xF345, 0xFEB7, 0x1004, 0x5D3, 0x1399, 0x1FA,
8286 0x201, 0xFCCA, 0xF533, 0xE04, 0x1004} },
83
-
8487 /* TODO: correct values below */
8588 { COLOR_SPACE_YCBCR601_LIMITED_TYPE,
8689 { 0xE00, 0xF447, 0xFDB9, 0x1000, 0x991,
....@@ -88,6 +91,12 @@
8891 { COLOR_SPACE_YCBCR709_LIMITED_TYPE,
8992 { 0xE00, 0xF349, 0xFEB7, 0x1000, 0x6CE, 0x16E3,
9093 0x24F, 0x200, 0xFCCB, 0xF535, 0xE00, 0x1000} },
94
+ { COLOR_SPACE_YCBCR2020_TYPE,
95
+ { 0x1000, 0xF149, 0xFEB7, 0x1004, 0x0868, 0x15B2,
96
+ 0x01E6, 0x201, 0xFB88, 0xF478, 0x1000, 0x1004} },
97
+ { COLOR_SPACE_YCBCR709_BLACK_TYPE,
98
+ { 0x0000, 0x0000, 0x0000, 0x1000, 0x0000, 0x0000,
99
+ 0x0000, 0x0200, 0x0000, 0x0000, 0x0000, 0x1000} },
91100 };
92101
93102 static bool is_rgb_type(
....@@ -149,6 +158,16 @@
149158 return ret;
150159 }
151160
161
+static bool is_ycbcr2020_type(
162
+ enum dc_color_space color_space)
163
+{
164
+ bool ret = false;
165
+
166
+ if (color_space == COLOR_SPACE_2020_YCBCR)
167
+ ret = true;
168
+ return ret;
169
+}
170
+
152171 static bool is_ycbcr709_limited_type(
153172 enum dc_color_space color_space)
154173 {
....@@ -158,7 +177,7 @@
158177 ret = true;
159178 return ret;
160179 }
161
-enum dc_color_space_type get_color_space_type(enum dc_color_space color_space)
180
+static enum dc_color_space_type get_color_space_type(enum dc_color_space color_space)
162181 {
163182 enum dc_color_space_type type = COLOR_SPACE_RGB_TYPE;
164183
....@@ -174,7 +193,12 @@
174193 type = COLOR_SPACE_YCBCR601_LIMITED_TYPE;
175194 else if (is_ycbcr709_limited_type(color_space))
176195 type = COLOR_SPACE_YCBCR709_LIMITED_TYPE;
177
-
196
+ else if (is_ycbcr2020_type(color_space))
197
+ type = COLOR_SPACE_YCBCR2020_TYPE;
198
+ else if (color_space == COLOR_SPACE_YCBCR709)
199
+ type = COLOR_SPACE_YCBCR709_BLACK_TYPE;
200
+ else if (color_space == COLOR_SPACE_YCBCR709_BLACK)
201
+ type = COLOR_SPACE_YCBCR709_BLACK_TYPE;
178202 return type;
179203 }
180204
....@@ -206,6 +230,7 @@
206230 switch (colorspace) {
207231 case COLOR_SPACE_YCBCR601:
208232 case COLOR_SPACE_YCBCR709:
233
+ case COLOR_SPACE_YCBCR709_BLACK:
209234 case COLOR_SPACE_YCBCR601_LIMITED:
210235 case COLOR_SPACE_YCBCR709_LIMITED:
211236 case COLOR_SPACE_2020_YCBCR: