From 6778948f9de86c3cfaf36725a7c87dcff9ba247f Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 11 Dec 2023 08:20:59 +0000
Subject: [PATCH] kernel_5.10 no rt
---
u-boot/drivers/video/drm/rockchip_dw_hdmi_qp.c | 25 ++++++++++++++++---------
1 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/u-boot/drivers/video/drm/rockchip_dw_hdmi_qp.c b/u-boot/drivers/video/drm/rockchip_dw_hdmi_qp.c
index 13c8f47..32dc484 100644
--- a/u-boot/drivers/video/drm/rockchip_dw_hdmi_qp.c
+++ b/u-boot/drivers/video/drm/rockchip_dw_hdmi_qp.c
@@ -50,6 +50,7 @@
#define RK3588_GRF_VO1_CON3 0x000c
#define RK3588_COLOR_FORMAT_MASK 0xf
+#define RK3588_YUV422 0x1
#define RK3588_YUV444 0x2
#define RK3588_YUV420 0x3
#define RK3588_COMPRESSED_DATA 0xb
@@ -348,6 +349,9 @@
case MEDIA_BUS_FMT_UYVY8_1X16:
case MEDIA_BUS_FMT_UYVY10_1X20:
case MEDIA_BUS_FMT_UYVY12_1X24:
+ case MEDIA_BUS_FMT_YUYV8_1X16:
+ case MEDIA_BUS_FMT_YUYV10_1X20:
+ case MEDIA_BUS_FMT_YUYV12_1X24:
return true;
default:
@@ -375,18 +379,21 @@
case MEDIA_BUS_FMT_RGB888_1X24:
case MEDIA_BUS_FMT_YUV8_1X24:
case MEDIA_BUS_FMT_UYVY8_1X16:
+ case MEDIA_BUS_FMT_YUYV8_1X16:
case MEDIA_BUS_FMT_UYYVYY8_0_5X24:
return 8;
case MEDIA_BUS_FMT_RGB101010_1X30:
case MEDIA_BUS_FMT_YUV10_1X30:
case MEDIA_BUS_FMT_UYVY10_1X20:
+ case MEDIA_BUS_FMT_YUYV10_1X20:
case MEDIA_BUS_FMT_UYYVYY10_0_5X30:
return 10;
case MEDIA_BUS_FMT_RGB121212_1X36:
case MEDIA_BUS_FMT_YUV12_1X36:
case MEDIA_BUS_FMT_UYVY12_1X24:
+ case MEDIA_BUS_FMT_YUYV12_1X24:
case MEDIA_BUS_FMT_UYYVYY12_0_5X36:
return 12;
@@ -834,12 +841,8 @@
if (screen_info && screen_info->depth == 10)
color_depth = screen_info->depth;
- if (mode->clock >= 600000) {
+ if (mode->clock >= 600000)
color_format = DRM_HDMI_OUTPUT_YCBCR420;
- } else if (mode->clock >= 340000) {
- if (drm_mode_is_420(info, mode))
- color_format = DRM_HDMI_OUTPUT_YCBCR420;
- }
if (color_format == DRM_HDMI_OUTPUT_YCBCR422 || color_depth == 8)
tmdsclock = pixclock;
@@ -876,7 +879,7 @@
case DRM_HDMI_OUTPUT_YCBCR444:
return MEDIA_BUS_FMT_YUV10_1X30;
case DRM_HDMI_OUTPUT_YCBCR422:
- return MEDIA_BUS_FMT_UYVY10_1X20;
+ return MEDIA_BUS_FMT_YUYV10_1X20;
case DRM_HDMI_OUTPUT_YCBCR420:
return MEDIA_BUS_FMT_UYYVYY10_0_5X30;
default:
@@ -887,7 +890,7 @@
case DRM_HDMI_OUTPUT_YCBCR444:
return MEDIA_BUS_FMT_YUV8_1X24;
case DRM_HDMI_OUTPUT_YCBCR422:
- return MEDIA_BUS_FMT_UYVY8_1X16;
+ return MEDIA_BUS_FMT_YUYV8_1X16;
case DRM_HDMI_OUTPUT_YCBCR420:
return MEDIA_BUS_FMT_UYYVYY8_0_5X24;
default:
@@ -1081,7 +1084,7 @@
if (hdmi_bus_fmt_is_yuv420(*bus_format))
hdmi->bus_width /= 2;
- if (color_depth == 10)
+ if (color_depth == 10 && !hdmi_bus_fmt_is_yuv422(*bus_format))
hdmi->bus_width |= COLOR_DEPTH_10BIT;
}
@@ -1154,6 +1157,10 @@
case MEDIA_BUS_FMT_YUV10_1X30:
val = HIWORD_UPDATE(RK3588_YUV444, RK3588_COLOR_FORMAT_MASK);
break;
+ case MEDIA_BUS_FMT_YUYV10_1X20:
+ case MEDIA_BUS_FMT_YUYV8_1X16:
+ val = HIWORD_UPDATE(RK3588_YUV422, RK3588_COLOR_FORMAT_MASK);
+ break;
default:
dev_err(hdmi->dev, "can't set correct color format\n");
return;
@@ -1162,7 +1169,7 @@
if (hdmi->link_cfg.dsc_mode)
val = HIWORD_UPDATE(RK3588_COMPRESSED_DATA, RK3588_COLOR_FORMAT_MASK);
- if (depth == 8)
+ if (depth == 8 || bus_format == MEDIA_BUS_FMT_YUYV10_1X20)
val |= HIWORD_UPDATE(RK3588_8BPC, RK3588_COLOR_DEPTH_MASK);
else
val |= HIWORD_UPDATE(RK3588_10BPC, RK3588_COLOR_DEPTH_MASK);
--
Gitblit v1.6.2