aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu.vizoso@collabora.com>2015-03-30 04:33:03 -0400
committerThierry Reding <treding@nvidia.com>2015-04-02 12:49:24 -0400
commit535a65db484ff4e4654a037f2ea7e1ff21431b77 (patch)
tree5dcab872d151dbd0c89208e96022c6ea3e7396cc
parentbdf765071a8b573f7b1ba14c02881fa3e623825e (diff)
drm/tegra: sor: Reset during initialization
As there isn't a way for the firmware on the Nyan Chromebooks to hand over the display to the kernel, and the kernel isn't redoing the whole configuration at present. With this patch, the SOR is brought to a known state and we get correct display on every boot. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--drivers/gpu/drm/tegra/sor.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c
index 41c5a6ed2c36..7591d8901f9a 100644
--- a/drivers/gpu/drm/tegra/sor.c
+++ b/drivers/gpu/drm/tegra/sor.c
@@ -1512,12 +1512,30 @@ static int tegra_sor_init(struct host1x_client *client)
1512 } 1512 }
1513 } 1513 }
1514 1514
1515 /*
1516 * XXX: Remove this reset once proper hand-over from firmware to
1517 * kernel is possible.
1518 */
1519 err = reset_control_assert(sor->rst);
1520 if (err < 0) {
1521 dev_err(sor->dev, "failed to assert SOR reset: %d\n", err);
1522 return err;
1523 }
1524
1515 err = clk_prepare_enable(sor->clk); 1525 err = clk_prepare_enable(sor->clk);
1516 if (err < 0) { 1526 if (err < 0) {
1517 dev_err(sor->dev, "failed to enable clock: %d\n", err); 1527 dev_err(sor->dev, "failed to enable clock: %d\n", err);
1518 return err; 1528 return err;
1519 } 1529 }
1520 1530
1531 usleep_range(1000, 3000);
1532
1533 err = reset_control_deassert(sor->rst);
1534 if (err < 0) {
1535 dev_err(sor->dev, "failed to deassert SOR reset: %d\n", err);
1536 return err;
1537 }
1538
1521 err = clk_prepare_enable(sor->clk_safe); 1539 err = clk_prepare_enable(sor->clk_safe);
1522 if (err < 0) 1540 if (err < 0)
1523 return err; 1541 return err;