From ee930fffee469d076998274a2ca55e13dc1efb67 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 10 May 2024 08:50:54 +0000
Subject: [PATCH] enable tun/tap/iptables

---
 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