From 15ade055295d13f95d49e3d99b09f3bbfb4a43e7 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 06 Nov 2023 07:25:24 +0000
Subject: [PATCH] add at24 driver

---
 u-boot/drivers/video/drm/analogix_dp.c |   52 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/u-boot/drivers/video/drm/analogix_dp.c b/u-boot/drivers/video/drm/analogix_dp.c
index 52d5bf1..70cd620 100644
--- a/u-boot/drivers/video/drm/analogix_dp.c
+++ b/u-boot/drivers/video/drm/analogix_dp.c
@@ -943,6 +943,37 @@
 	.detect = analogix_dp_connector_detect,
 };
 
+static u32 analogix_dp_parse_link_frequencies(struct analogix_dp_device *dp)
+{
+	struct udevice *dev = dp->dev;
+	const struct device_node *endpoint;
+	u64 frequency = 0;
+
+	endpoint = rockchip_of_graph_get_endpoint_by_regs(dev->node, 1, 0);
+	if (!endpoint)
+		return 0;
+
+	if (of_property_read_u64(endpoint, "link-frequencies", &frequency) < 0)
+		return 0;
+
+	if (!frequency)
+		return 0;
+
+	do_div(frequency, 10 * 1000);	/* symbol rate kbytes */
+
+	switch (frequency) {
+	case 162000:
+	case 270000:
+	case 540000:
+		break;
+	default:
+		dev_err(dev, "invalid link frequency value: %llu\n", frequency);
+		return 0;
+	}
+
+	return frequency;
+}
+
 static int analogix_dp_parse_dt(struct analogix_dp_device *dp)
 {
 	struct udevice *dev = dp->dev;
@@ -956,21 +987,9 @@
 	dp->video_info.force_stream_valid =
 		dev_read_bool(dev, "analogix,force-stream-valid");
 
-	max_link_rate = dev_read_u32_default(dev, "max-link-rate", 0);
-	if (max_link_rate) {
-		switch (max_link_rate) {
-		case 1620:
-		case 2700:
-		case 5400:
-			dp->video_info.max_link_rate =
-				min_t(u8, dp->video_info.max_link_rate,
-				      drm_dp_link_rate_to_bw_code(max_link_rate * 100));
-			break;
-		default:
-			dev_err(dev, "invalid max-link-rate %d\n", max_link_rate);
-			break;
-		}
-	}
+	max_link_rate = analogix_dp_parse_link_frequencies(dp);
+	if (max_link_rate && max_link_rate < drm_dp_bw_code_to_link_rate(dp->video_info.max_link_rate))
+		dp->video_info.max_link_rate = drm_dp_link_rate_to_bw_code(max_link_rate);
 
 	if (dev_read_prop(dev, "data-lanes", &len)) {
 		num_lanes = len / sizeof(u32);
@@ -1075,8 +1094,9 @@
 	.lcdsel_big = 0 | BIT(21),
 	.lcdsel_lit = BIT(5) | BIT(21),
 	.chip_type = RK3399_EDP,
+	.ssc = true,
 
-	.max_link_rate = DP_LINK_BW_2_7,
+	.max_link_rate = DP_LINK_BW_5_4,
 	.max_lane_count = 4,
 };
 

--
Gitblit v1.6.2