From 1543e317f1da31b75942316931e8f491a8920811 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Thu, 04 Jan 2024 10:08:02 +0000
Subject: [PATCH] disable FB

---
 kernel/drivers/gpu/drm/rockchip/rk628/rk628_lvds.c |   28 ++++++++++------------------
 1 files changed, 10 insertions(+), 18 deletions(-)

diff --git a/kernel/drivers/gpu/drm/rockchip/rk628/rk628_lvds.c b/kernel/drivers/gpu/drm/rockchip/rk628/rk628_lvds.c
index ce8f0c5..61326b1 100644
--- a/kernel/drivers/gpu/drm/rockchip/rk628/rk628_lvds.c
+++ b/kernel/drivers/gpu/drm/rockchip/rk628/rk628_lvds.c
@@ -13,10 +13,9 @@
 #include <linux/mfd/rk628.h>
 #include <linux/phy/phy.h>
 
-#include <drm/drmP.h>
 #include <drm/drm_of.h>
 #include <drm/drm_atomic.h>
-#include <drm/drm_crtc_helper.h>
+#include <drm/drm_probe_helper.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_panel.h>
 
@@ -64,8 +63,6 @@
 static enum lvds_format rk628_lvds_get_format(u32 bus_format)
 {
 	switch (bus_format) {
-	case MEDIA_BUS_FMT_RGB666_1X7X3_JEIDA:
-		return LVDS_FORMAT_JEIDA_18BIT;
 	case MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA:
 		return LVDS_FORMAT_JEIDA_24BIT;
 	case MEDIA_BUS_FMT_RGB666_1X7X3_SPWG:
@@ -112,7 +109,7 @@
 	struct drm_display_info *info = &connector->display_info;
 	int num_modes = 0;
 
-	num_modes = drm_panel_get_modes(lvds->panel);
+	num_modes = drm_panel_get_modes(lvds->panel, connector);
 
 	if (info->num_bus_formats)
 		lvds->format = rk628_lvds_get_format(info->bus_formats[0]);
@@ -130,9 +127,6 @@
 
 static void rk628_lvds_connector_destroy(struct drm_connector *connector)
 {
-	struct rk628_lvds *lvds = connector_to_lvds(connector);
-
-	drm_panel_detach(lvds->panel);
 	drm_connector_cleanup(connector);
 }
 
@@ -195,7 +189,7 @@
 	bus_width |= (mode->clock / 1000) << 8;
 	phy_set_bus_width(lvds->phy, bus_width);
 
-	ret = phy_set_mode(lvds->phy, PHY_MODE_VIDEO_LVDS);
+	ret = phy_set_mode(lvds->phy, PHY_MODE_LVDS);
 	if (ret) {
 		dev_err(lvds->dev, "failed to set phy mode: %d\n", ret);
 		return;
@@ -216,12 +210,16 @@
 	phy_power_off(lvds->phy);
 }
 
-static int rk628_lvds_bridge_attach(struct drm_bridge *bridge)
+static int rk628_lvds_bridge_attach(struct drm_bridge *bridge,
+				    enum drm_bridge_attach_flags flags)
 {
 	struct rk628_lvds *lvds = bridge_to_lvds(bridge);
 	struct drm_connector *connector = &lvds->connector;
 	struct drm_device *drm = bridge->dev;
 	int ret;
+
+	if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)
+		return 0;
 
 	ret = drm_connector_init(drm, connector, &rk628_lvds_connector_funcs,
 				 DRM_MODE_CONNECTOR_LVDS);
@@ -233,18 +231,12 @@
 	drm_connector_helper_add(connector, &rk628_lvds_connector_helper_funcs);
 	drm_connector_attach_encoder(connector, bridge->encoder);
 
-	ret = drm_panel_attach(lvds->panel, connector);
-	if (ret) {
-		dev_err(lvds->dev, "Failed to attach panel\n");
-		return ret;
-	}
-
 	return 0;
 }
 
 static void rk628_lvds_bridge_mode_set(struct drm_bridge *bridge,
-				       struct drm_display_mode *mode,
-				       struct drm_display_mode *adj)
+				       const struct drm_display_mode *mode,
+				       const struct drm_display_mode *adj)
 {
 	struct rk628_lvds *lvds = bridge_to_lvds(bridge);
 

--
Gitblit v1.6.2