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