diff mbox

[v2] drm/sun4i: tcon: Unconditionally reset the TCON

Message ID 20170908090016.32224-1-wens@csie.org (mailing list archive)
State New, archived
Headers show

Commit Message

Chen-Yu Tsai Sept. 8, 2017, 9 a.m. UTC
When binding the TCON, we were checking the reset control status and
asserting reset if it wasn't in reset. The check failed to account for
the reset control API returning error codes if the status callback was
not implemented.

Since we want the TCON to be reset in all cases, use reset_control_reset
to force a reset instead.

Fixes: 9026e0d122ac ("drm: Add Allwinner A10 Display Engine support")
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---

Changes since v1:

  - Replaced reset_control_assert / reset_control_deassert sequence
    with reset_control_reset, which conveys our intent more clearly

---
 drivers/gpu/drm/sun4i/sun4i_tcon.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

Comments

Maxime Ripard Sept. 8, 2017, 2:53 p.m. UTC | #1
On Fri, Sep 08, 2017 at 05:00:16PM +0800, Chen-Yu Tsai wrote:
> When binding the TCON, we were checking the reset control status and
> asserting reset if it wasn't in reset. The check failed to account for
> the reset control API returning error codes if the status callback was
> not implemented.
> 
> Since we want the TCON to be reset in all cases, use reset_control_reset
> to force a reset instead.
> 
> Fixes: 9026e0d122ac ("drm: Add Allwinner A10 Display Engine support")
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>

Applied, thanks!
Maxime
diff mbox

Patch

diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c
index d9791292553e..36cf1a0acc65 100644
--- a/drivers/gpu/drm/sun4i/sun4i_tcon.c
+++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c
@@ -530,10 +530,7 @@  static int sun4i_tcon_bind(struct device *dev, struct device *master,
 	}
 
 	/* Make sure our TCON is reset */
-	if (!reset_control_status(tcon->lcd_rst))
-		reset_control_assert(tcon->lcd_rst);
-
-	ret = reset_control_deassert(tcon->lcd_rst);
+	ret = reset_control_reset(tcon->lcd_rst);
 	if (ret) {
 		dev_err(dev, "Couldn't deassert our reset line\n");
 		return ret;