[patch v2 09/10] drivers/video/rockchip/rk_edp.c: Add missing reset support

Arnaud Patard (Rtp) arnaud.patard at rtp-net.org
Tue Oct 27 14:21:40 CET 2020


In order to ensure that the eDP registers are in correct state,
add missing support for the eDP reset lines found in the device-tree.


Signed-off-by: Arnaud Patard <arnaud.patard at rtp-net.org>
Index: u-boot/drivers/video/rockchip/rk_edp.c
===================================================================
--- u-boot.orig/drivers/video/rockchip/rk_edp.c
+++ u-boot/drivers/video/rockchip/rk_edp.c
@@ -8,11 +8,13 @@
 #include <clk.h>
 #include <display.h>
 #include <dm.h>
+#include <dm/device_compat.h>
 #include <edid.h>
 #include <log.h>
 #include <malloc.h>
 #include <panel.h>
 #include <regmap.h>
+#include <reset.h>
 #include <syscon.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
@@ -1047,6 +1049,7 @@ static int rk_edp_probe(struct udevice *
 	struct rk_edp_priv *priv = dev_get_priv(dev);
 	struct rk3288_edp *regs = priv->regs;
 	struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev);
+	struct reset_ctl dp_rst;
 
 	struct clk clk;
 	int ret;
@@ -1059,6 +1062,25 @@ static int rk_edp_probe(struct udevice *
 		return ret;
 	}
 
+	ret = reset_get_by_name(dev, "dp", &dp_rst);
+	if (ret) {
+		dev_err(dev, "failed to get dp reset (ret=%d)\n", ret);
+		return ret;
+	}
+
+	ret = reset_assert(&dp_rst);
+	if (ret) {
+		dev_err(dev, "failed to assert dp reset (ret=%d)\n", ret);
+		return ret;
+	}
+	udelay(20);
+
+	ret = reset_deassert(&dp_rst);
+	if (ret) {
+		dev_err(dev, "failed to deassert dp reset (ret=%d)\n", ret);
+		return ret;
+	}
+
 	int vop_id = uc_plat->source_id;
 	debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id);
 




More information about the U-Boot mailing list