From 04dd17822334871b23ea2862f7798fb0e0007777 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 11 May 2024 08:53:19 +0000
Subject: [PATCH] change otg to host mode
---
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