diff options
author | Animesh Kishore <ankishore@nvidia.com> | 2012-02-15 11:05:27 +0530 |
---|---|---|
committer | Rohan Somvanshi <rsomvanshi@nvidia.com> | 2012-02-16 07:07:30 -0800 |
commit | 55be8e2cc2517370f47a9d09efdeb463090018cf (patch) | |
tree | 73f7c0684d86f02d9a27050b03d4a91e3d96b7ef | |
parent | 0a9aa838415cfbf700fb6c49b7cc8ff2d868a145 (diff) |
video: tegra: dsi: Soft reset if dsi host busy
If dsi host is unexpectedly busy, soft resetting
will restore controller state.
Bug 930453
Change-Id: I1bbce55d0b27a2be80a66218978e73c616e9d894
Signed-off-by: Animesh Kishore <ankishore@nvidia.com>
Reviewed-on: http://git-master/r/83986
Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
-rw-r--r-- | drivers/video/tegra/dc/dsi.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/video/tegra/dc/dsi.c b/drivers/video/tegra/dc/dsi.c index 544703dc8a48..d8145f2d5363 100644 --- a/drivers/video/tegra/dc/dsi.c +++ b/drivers/video/tegra/dc/dsi.c @@ -1322,7 +1322,7 @@ static bool tegra_dsi_host_busy(struct tegra_dc_dsi_data *dsi) goto fail; } fail: - return err; + return (err < 0 ? true : false); } static void tegra_dsi_reset_underflow_overflow @@ -1438,9 +1438,12 @@ static struct dsi_status *tegra_dsi_prepare_host_transmission( } if (tegra_dsi_host_busy(dsi)) { - err = -EBUSY; - dev_err(&dc->ndev->dev, "DSI host busy\n"); - goto fail; + tegra_dsi_soft_reset(dsi); + if (tegra_dsi_host_busy(dsi)) { + err = -EBUSY; + dev_err(&dc->ndev->dev, "DSI host busy\n"); + goto fail; + } } tegra_dsi_reset_underflow_overflow(dsi); |