diff options
author | Svyatoslav Ryhel <clamor95@gmail.com> | 2024-01-23 19:16:30 +0200 |
---|---|---|
committer | Anatolij Gustschin <agust@denx.de> | 2024-04-21 09:07:01 +0200 |
commit | 6c4dc8965959c17c314c4b1519aa999ae0651467 (patch) | |
tree | d1154ea56d49526e675f4bf46e7ffedf153568d1 /drivers/video | |
parent | f1b1f5e61d2d9bba2e721e877b33fb7d6ff16344 (diff) | |
download | u-boot-6c4dc8965959c17c314c4b1519aa999ae0651467.zip u-boot-6c4dc8965959c17c314c4b1519aa999ae0651467.tar.gz u-boot-6c4dc8965959c17c314c4b1519aa999ae0651467.tar.bz2 |
video: tegra20: dsi: add reset support
Implement reset use to discard any changes which could have been
applied to DSI before and can interfere with current configuration.
Tested-by: Ion Agorria <ion@agorria.com> # HTC One X
Tested-by: Svyatoslav Ryhel <clamor95@gmail.com> # Nvidia Tegratab T114
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/tegra20/tegra-dsi.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/video/tegra20/tegra-dsi.c b/drivers/video/tegra20/tegra-dsi.c index 25a6295..fc9ca13 100644 --- a/drivers/video/tegra20/tegra-dsi.c +++ b/drivers/video/tegra20/tegra-dsi.c @@ -12,6 +12,7 @@ #include <mipi_dsi.h> #include <backlight.h> #include <panel.h> +#include <reset.h> #include <linux/delay.h> #include <linux/err.h> #include <linux/time.h> @@ -863,6 +864,7 @@ static int tegra_dsi_bridge_probe(struct udevice *dev) struct tegra_dsi_priv *priv = dev_get_priv(dev); struct mipi_dsi_device *device = &priv->device; struct mipi_dsi_panel_plat *mipi_plat; + struct reset_ctl reset_ctl; int ret; priv->version = dev_get_driver_data(dev); @@ -876,6 +878,13 @@ static int tegra_dsi_bridge_probe(struct udevice *dev) priv->video_fifo_depth = 480; priv->host_fifo_depth = 64; + ret = reset_get_by_name(dev, "dsi", &reset_ctl); + if (ret) { + log_debug("%s: reset_get_by_name() failed: %d\n", + __func__, ret); + return ret; + } + ret = uclass_get_device_by_phandle(UCLASS_REGULATOR, dev, "avdd-dsi-csi-supply", &priv->avdd); if (ret) @@ -914,12 +923,17 @@ static int tegra_dsi_bridge_probe(struct udevice *dev) tegra_dsi_get_format(device->format, &priv->format); + reset_assert(&reset_ctl); + ret = regulator_set_enable_if_allowed(priv->avdd, true); if (ret && ret != -ENOSYS) return ret; tegra_dsi_init_clocks(dev); + mdelay(2); + reset_deassert(&reset_ctl); + return 0; } |