summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c2
-rw-r--r--drivers/gpu/nvgpu/gk20a/platform_gk20a.h6
-rw-r--r--drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c6
3 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index 58108d97..ef0f6a8c 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -1659,7 +1659,7 @@ int __gk20a_do_idle(struct platform_device *pdev)
1659 */ 1659 */
1660 pm_runtime_put_sync(&pdev->dev); 1660 pm_runtime_put_sync(&pdev->dev);
1661 1661
1662 if (platform->can_railgate) { 1662 if (platform->can_railgate && !platform->force_reset_in_do_idle) {
1663 /* add sufficient delay to allow GPU to rail gate */ 1663 /* add sufficient delay to allow GPU to rail gate */
1664 msleep(platform->railgate_delay); 1664 msleep(platform->railgate_delay);
1665 1665
diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h
index 5f7285bf..7638cf15 100644
--- a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h
@@ -76,6 +76,12 @@ struct gk20a_platform {
76 /* Adaptative ELPG: true = enable flase = disable */ 76 /* Adaptative ELPG: true = enable flase = disable */
77 bool enable_aelpg; 77 bool enable_aelpg;
78 78
79 /*
80 * gk20a_do_idle() API can take GPU either into rail gate or CAR reset
81 * This flag can be used to force CAR reset case instead of rail gate
82 */
83 bool force_reset_in_do_idle;
84
79 /* Default big page size 64K or 128K */ 85 /* Default big page size 64K or 128K */
80 u32 default_big_page_size; 86 u32 default_big_page_size;
81 87
diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c b/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c
index b75420e6..30f7e79a 100644
--- a/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c
+++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c
@@ -485,6 +485,8 @@ static struct gk20a_platform t132_gk20a_tegra_platform = {
485 .enable_elpg = true, 485 .enable_elpg = true,
486 .enable_aelpg = true, 486 .enable_aelpg = true,
487 487
488 .force_reset_in_do_idle = false,
489
488 .default_big_page_size = SZ_128K, 490 .default_big_page_size = SZ_128K,
489 491
490 .probe = gk20a_tegra_probe, 492 .probe = gk20a_tegra_probe,
@@ -526,6 +528,8 @@ struct gk20a_platform gk20a_tegra_platform = {
526 .enable_elpg = true, 528 .enable_elpg = true,
527 .enable_aelpg = true, 529 .enable_aelpg = true,
528 530
531 .force_reset_in_do_idle = false,
532
529 .default_big_page_size = SZ_128K, 533 .default_big_page_size = SZ_128K,
530 534
531 .probe = gk20a_tegra_probe, 535 .probe = gk20a_tegra_probe,
@@ -568,6 +572,8 @@ struct gk20a_platform gm20b_tegra_platform = {
568 .enable_elpg = true, 572 .enable_elpg = true,
569 .enable_aelpg = true, 573 .enable_aelpg = true,
570 574
575 .force_reset_in_do_idle = true,
576
571 .default_big_page_size = SZ_128K, 577 .default_big_page_size = SZ_128K,
572 578
573 .probe = gk20a_tegra_probe, 579 .probe = gk20a_tegra_probe,