From e3e12f52b214121840b44c91de5b3e5af5d3eb84 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 06 Nov 2023 03:04:41 +0000
Subject: [PATCH] rk3568 rt init

---
 kernel/drivers/gpu/drm/rockchip/rockchip_rgb.c |   23 ++++++++++++++++-------
 1 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/kernel/drivers/gpu/drm/rockchip/rockchip_rgb.c b/kernel/drivers/gpu/drm/rockchip/rockchip_rgb.c
index 9ff3186..9a7b1a7 100644
--- a/kernel/drivers/gpu/drm/rockchip/rockchip_rgb.c
+++ b/kernel/drivers/gpu/drm/rockchip/rockchip_rgb.c
@@ -173,6 +173,8 @@
 static void rockchip_rgb_encoder_disable(struct drm_encoder *encoder)
 {
 	struct rockchip_rgb *rgb = encoder_to_rgb(encoder);
+	struct drm_crtc *crtc = encoder->crtc;
+	struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc->state);
 
 	if (rgb->panel) {
 		drm_panel_disable(rgb->panel);
@@ -186,6 +188,13 @@
 		rgb->funcs->disable(rgb);
 
 	pinctrl_pm_select_sleep_state(rgb->dev);
+
+	if (s->output_if & VOP_OUTPUT_IF_RGB)
+		s->output_if &= ~VOP_OUTPUT_IF_RGB;
+	else if (s->output_if & VOP_OUTPUT_IF_BT656)
+		s->output_if &= ~VOP_OUTPUT_IF_BT656;
+	else if (s->output_if & VOP_OUTPUT_IF_BT1120)
+		s->output_if &= ~VOP_OUTPUT_IF_BT1120;
 }
 
 static int
@@ -205,39 +214,39 @@
 	switch (s->bus_format) {
 	case MEDIA_BUS_FMT_RGB666_1X18:
 		s->output_mode = ROCKCHIP_OUT_MODE_P666;
-		s->output_if = VOP_OUTPUT_IF_RGB;
+		s->output_if |= VOP_OUTPUT_IF_RGB;
 		break;
 	case MEDIA_BUS_FMT_RGB565_1X16:
 		s->output_mode = ROCKCHIP_OUT_MODE_P565;
-		s->output_if = VOP_OUTPUT_IF_RGB;
+		s->output_if |= VOP_OUTPUT_IF_RGB;
 		break;
 	case MEDIA_BUS_FMT_SRGB888_3X8:
 		s->output_mode = ROCKCHIP_OUT_MODE_S888;
-		s->output_if = VOP_OUTPUT_IF_RGB;
+		s->output_if |= VOP_OUTPUT_IF_RGB;
 		break;
 	case MEDIA_BUS_FMT_SRGB888_DUMMY_4X8:
 		s->output_mode = ROCKCHIP_OUT_MODE_S888_DUMMY;
-		s->output_if = VOP_OUTPUT_IF_RGB;
+		s->output_if |= VOP_OUTPUT_IF_RGB;
 		break;
 	case MEDIA_BUS_FMT_YUYV8_2X8:
 	case MEDIA_BUS_FMT_YVYU8_2X8:
 	case MEDIA_BUS_FMT_UYVY8_2X8:
 	case MEDIA_BUS_FMT_VYUY8_2X8:
 		s->output_mode = ROCKCHIP_OUT_MODE_BT656;
-		s->output_if = VOP_OUTPUT_IF_BT656;
+		s->output_if |= VOP_OUTPUT_IF_BT656;
 		break;
 	case MEDIA_BUS_FMT_YUYV8_1X16:
 	case MEDIA_BUS_FMT_YVYU8_1X16:
 	case MEDIA_BUS_FMT_UYVY8_1X16:
 	case MEDIA_BUS_FMT_VYUY8_1X16:
 		s->output_mode = ROCKCHIP_OUT_MODE_BT1120;
-		s->output_if = VOP_OUTPUT_IF_BT1120;
+		s->output_if |= VOP_OUTPUT_IF_BT1120;
 		break;
 	case MEDIA_BUS_FMT_RGB888_1X24:
 	case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
 	default:
 		s->output_mode = ROCKCHIP_OUT_MODE_P888;
-		s->output_if = VOP_OUTPUT_IF_RGB;
+		s->output_if |= VOP_OUTPUT_IF_RGB;
 		break;
 	}
 

--
Gitblit v1.6.2