hc
2023-11-06 9df731a176aab8e03b984b681b1bea01ccff6644
u-boot/drivers/video/drm/rockchip_dw_hdmi_qp.c
....@@ -50,6 +50,7 @@
5050
5151 #define RK3588_GRF_VO1_CON3 0x000c
5252 #define RK3588_COLOR_FORMAT_MASK 0xf
53
+#define RK3588_YUV422 0x1
5354 #define RK3588_YUV444 0x2
5455 #define RK3588_YUV420 0x3
5556 #define RK3588_COMPRESSED_DATA 0xb
....@@ -348,6 +349,9 @@
348349 case MEDIA_BUS_FMT_UYVY8_1X16:
349350 case MEDIA_BUS_FMT_UYVY10_1X20:
350351 case MEDIA_BUS_FMT_UYVY12_1X24:
352
+ case MEDIA_BUS_FMT_YUYV8_1X16:
353
+ case MEDIA_BUS_FMT_YUYV10_1X20:
354
+ case MEDIA_BUS_FMT_YUYV12_1X24:
351355 return true;
352356
353357 default:
....@@ -375,18 +379,21 @@
375379 case MEDIA_BUS_FMT_RGB888_1X24:
376380 case MEDIA_BUS_FMT_YUV8_1X24:
377381 case MEDIA_BUS_FMT_UYVY8_1X16:
382
+ case MEDIA_BUS_FMT_YUYV8_1X16:
378383 case MEDIA_BUS_FMT_UYYVYY8_0_5X24:
379384 return 8;
380385
381386 case MEDIA_BUS_FMT_RGB101010_1X30:
382387 case MEDIA_BUS_FMT_YUV10_1X30:
383388 case MEDIA_BUS_FMT_UYVY10_1X20:
389
+ case MEDIA_BUS_FMT_YUYV10_1X20:
384390 case MEDIA_BUS_FMT_UYYVYY10_0_5X30:
385391 return 10;
386392
387393 case MEDIA_BUS_FMT_RGB121212_1X36:
388394 case MEDIA_BUS_FMT_YUV12_1X36:
389395 case MEDIA_BUS_FMT_UYVY12_1X24:
396
+ case MEDIA_BUS_FMT_YUYV12_1X24:
390397 case MEDIA_BUS_FMT_UYYVYY12_0_5X36:
391398 return 12;
392399
....@@ -834,12 +841,8 @@
834841 if (screen_info && screen_info->depth == 10)
835842 color_depth = screen_info->depth;
836843
837
- if (mode->clock >= 600000) {
844
+ if (mode->clock >= 600000)
838845 color_format = DRM_HDMI_OUTPUT_YCBCR420;
839
- } else if (mode->clock >= 340000) {
840
- if (drm_mode_is_420(info, mode))
841
- color_format = DRM_HDMI_OUTPUT_YCBCR420;
842
- }
843846
844847 if (color_format == DRM_HDMI_OUTPUT_YCBCR422 || color_depth == 8)
845848 tmdsclock = pixclock;
....@@ -876,7 +879,7 @@
876879 case DRM_HDMI_OUTPUT_YCBCR444:
877880 return MEDIA_BUS_FMT_YUV10_1X30;
878881 case DRM_HDMI_OUTPUT_YCBCR422:
879
- return MEDIA_BUS_FMT_UYVY10_1X20;
882
+ return MEDIA_BUS_FMT_YUYV10_1X20;
880883 case DRM_HDMI_OUTPUT_YCBCR420:
881884 return MEDIA_BUS_FMT_UYYVYY10_0_5X30;
882885 default:
....@@ -887,7 +890,7 @@
887890 case DRM_HDMI_OUTPUT_YCBCR444:
888891 return MEDIA_BUS_FMT_YUV8_1X24;
889892 case DRM_HDMI_OUTPUT_YCBCR422:
890
- return MEDIA_BUS_FMT_UYVY8_1X16;
893
+ return MEDIA_BUS_FMT_YUYV8_1X16;
891894 case DRM_HDMI_OUTPUT_YCBCR420:
892895 return MEDIA_BUS_FMT_UYYVYY8_0_5X24;
893896 default:
....@@ -1081,7 +1084,7 @@
10811084 if (hdmi_bus_fmt_is_yuv420(*bus_format))
10821085 hdmi->bus_width /= 2;
10831086
1084
- if (color_depth == 10)
1087
+ if (color_depth == 10 && !hdmi_bus_fmt_is_yuv422(*bus_format))
10851088 hdmi->bus_width |= COLOR_DEPTH_10BIT;
10861089 }
10871090
....@@ -1154,6 +1157,10 @@
11541157 case MEDIA_BUS_FMT_YUV10_1X30:
11551158 val = HIWORD_UPDATE(RK3588_YUV444, RK3588_COLOR_FORMAT_MASK);
11561159 break;
1160
+ case MEDIA_BUS_FMT_YUYV10_1X20:
1161
+ case MEDIA_BUS_FMT_YUYV8_1X16:
1162
+ val = HIWORD_UPDATE(RK3588_YUV422, RK3588_COLOR_FORMAT_MASK);
1163
+ break;
11571164 default:
11581165 dev_err(hdmi->dev, "can't set correct color format\n");
11591166 return;
....@@ -1162,7 +1169,7 @@
11621169 if (hdmi->link_cfg.dsc_mode)
11631170 val = HIWORD_UPDATE(RK3588_COMPRESSED_DATA, RK3588_COLOR_FORMAT_MASK);
11641171
1165
- if (depth == 8)
1172
+ if (depth == 8 || bus_format == MEDIA_BUS_FMT_YUYV10_1X20)
11661173 val |= HIWORD_UPDATE(RK3588_8BPC, RK3588_COLOR_DEPTH_MASK);
11671174 else
11681175 val |= HIWORD_UPDATE(RK3588_10BPC, RK3588_COLOR_DEPTH_MASK);