diff options
author | Thierry Reding <treding@nvidia.com> | 2017-08-30 11:41:00 -0400 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2017-10-20 08:19:54 -0400 |
commit | a2f2f7403e1ea192ce79584d7050c46e455409dd (patch) | |
tree | b303ec55ecd6a5cae2f5b1fa11fa2e8a8cd9fedb | |
parent | 39e08affecf0998be1b01f4752016e33fa98eb9a (diff) |
drm/tegra: dc: Perform a complete reset sequence
In order for the reset to be applied properly, the module clock must be
enabled during the assertion.
Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r-- | drivers/gpu/drm/tegra/dc.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index d5a63230e509..24a5ef4f5bb8 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c | |||
@@ -1997,8 +1997,22 @@ static int tegra_dc_probe(struct platform_device *pdev) | |||
1997 | return PTR_ERR(dc->rst); | 1997 | return PTR_ERR(dc->rst); |
1998 | } | 1998 | } |
1999 | 1999 | ||
2000 | if (!dc->soc->broken_reset) | 2000 | /* assert reset and disable clock */ |
2001 | reset_control_assert(dc->rst); | 2001 | if (!dc->soc->broken_reset) { |
2002 | err = clk_prepare_enable(dc->clk); | ||
2003 | if (err < 0) | ||
2004 | return err; | ||
2005 | |||
2006 | usleep_range(2000, 4000); | ||
2007 | |||
2008 | err = reset_control_assert(dc->rst); | ||
2009 | if (err < 0) | ||
2010 | return err; | ||
2011 | |||
2012 | usleep_range(2000, 4000); | ||
2013 | |||
2014 | clk_disable_unprepare(dc->clk); | ||
2015 | } | ||
2002 | 2016 | ||
2003 | if (dc->soc->has_powergate) { | 2017 | if (dc->soc->has_powergate) { |
2004 | if (dc->pipe == 0) | 2018 | if (dc->pipe == 0) |