diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/platform_gk20a.h | 6 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c | 6 |
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, |