summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2014-08-15 10:44:51 +0300
committerWinnie Hsu <whsu@nvidia.com>2014-09-26 13:39:18 -0700
commit1b4758b8ac42f65ad59ddfdd124bb0d750962fc1 (patch)
tree8107599895bd6f7dc7ab2f2a509d3dc351949191
parent746183c0038fa0338ad2ac3fb3ec1b9ebe909af8 (diff)
gpu: nvgpu: Increase PBDMA timeout
PBDMA timeout can cause stale data in FIFO. Default value equals 1ms. Increase it to max. Bug 1537636 Change-Id: I1c6c6b10abaece3a64b77b9b3ef77ff726ff67cf Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/457047 (cherry picked from commit f516652f567a44e2e1c6313dccd3dc80172a980f) Reviewed-on: http://git-master/r/457067 (cherry picked from commit f5219cf5888502de3f6cabb2db3e8968b6d20b7c) Reviewed-on: http://git-master/r/504534 Reviewed-by: Automatic_Commit_Validation_User
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.c7
-rw-r--r--drivers/gpu/nvgpu/gk20a/hw_pbdma_gk20a.h16
2 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
index a5174b4a30bc..c1a04ce4f078 100644
--- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
@@ -417,6 +417,13 @@ int gk20a_init_fifo_reset_enable_hw(struct gk20a *g)
fifo_fb_timeout_period_max_f());
gk20a_writel(g, fifo_fb_timeout_r(), timeout);
+ for (i = 0; i < pbdma_timeout__size_1_v(); i++) {
+ timeout = gk20a_readl(g, pbdma_timeout_r(i));
+ timeout = set_field(timeout, pbdma_timeout_period_m(),
+ pbdma_timeout_period_max_f());
+ gk20a_writel(g, pbdma_timeout_r(i), timeout);
+ }
+
if (tegra_platform_is_silicon()) {
timeout = gk20a_readl(g, fifo_pb_timeout_r());
timeout &= ~fifo_pb_timeout_detection_enabled_f();
diff --git a/drivers/gpu/nvgpu/gk20a/hw_pbdma_gk20a.h b/drivers/gpu/nvgpu/gk20a/hw_pbdma_gk20a.h
index 6b353a0f3dd6..79d8cf2a8936 100644
--- a/drivers/gpu/nvgpu/gk20a/hw_pbdma_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/hw_pbdma_gk20a.h
@@ -106,6 +106,22 @@ static inline u32 pbdma_gp_put_r(u32 i)
{
return 0x00040000 + i*8192;
}
+static inline u32 pbdma_timeout_r(u32 i)
+{
+ return 0x0004012c + i*8192;
+}
+static inline u32 pbdma_timeout__size_1_v(void)
+{
+ return 0x00000001;
+}
+static inline u32 pbdma_timeout_period_m(void)
+{
+ return 0xffffffff << 0;
+}
+static inline u32 pbdma_timeout_period_max_f(void)
+{
+ return 0xffffffff;
+}
static inline u32 pbdma_pb_fetch_r(u32 i)
{
return 0x00040054 + i*8192;