diff options
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 14 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 45 |
2 files changed, 0 insertions, 59 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 12c36d33..8e142e6e 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c | |||
@@ -1738,20 +1738,6 @@ int gk20a_init_gpu_characteristics(struct gk20a *g) | |||
1738 | return 0; | 1738 | return 0; |
1739 | } | 1739 | } |
1740 | 1740 | ||
1741 | int nvhost_vpr_info_fetch(void) | ||
1742 | { | ||
1743 | struct gk20a *g = get_gk20a(to_platform_device( | ||
1744 | bus_find_device_by_name(&platform_bus_type, | ||
1745 | NULL, "gk20a.0"))); | ||
1746 | |||
1747 | if (!g) { | ||
1748 | pr_info("gk20a ins't ready yet\n"); | ||
1749 | return 0; | ||
1750 | } | ||
1751 | |||
1752 | return gk20a_mm_mmu_vpr_info_fetch(g); | ||
1753 | } | ||
1754 | |||
1755 | static const struct firmware * | 1741 | static const struct firmware * |
1756 | do_request_firmware(struct device *dev, const char *prefix, const char *fw_name) | 1742 | do_request_firmware(struct device *dev, const char *prefix, const char *fw_name) |
1757 | { | 1743 | { |
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 3b0b020d..6f62e1cb 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -3020,51 +3020,6 @@ bool gk20a_mm_mmu_debug_mode_enabled(struct gk20a *g) | |||
3020 | fb_mmu_debug_ctrl_debug_enabled_v(); | 3020 | fb_mmu_debug_ctrl_debug_enabled_v(); |
3021 | } | 3021 | } |
3022 | 3022 | ||
3023 | static int gk20a_mm_mmu_vpr_info_fetch_wait(struct gk20a *g, | ||
3024 | const unsigned int msec) | ||
3025 | { | ||
3026 | unsigned long timeout; | ||
3027 | |||
3028 | timeout = jiffies + msecs_to_jiffies(msec); | ||
3029 | while (1) { | ||
3030 | u32 val; | ||
3031 | |||
3032 | val = gk20a_readl(g, fb_mmu_vpr_info_r()); | ||
3033 | if (fb_mmu_vpr_info_fetch_v(val) == | ||
3034 | fb_mmu_vpr_info_fetch_false_v()) | ||
3035 | break; | ||
3036 | |||
3037 | if (tegra_platform_is_silicon() && | ||
3038 | WARN_ON(time_after(jiffies, timeout))) | ||
3039 | return -ETIME; | ||
3040 | } | ||
3041 | |||
3042 | return 0; | ||
3043 | } | ||
3044 | |||
3045 | int gk20a_mm_mmu_vpr_info_fetch(struct gk20a *g) | ||
3046 | { | ||
3047 | int ret = 0; | ||
3048 | |||
3049 | gk20a_busy_noresume(g->dev); | ||
3050 | if (!pm_runtime_active(&g->dev->dev)) | ||
3051 | goto fail; | ||
3052 | |||
3053 | if (gk20a_mm_mmu_vpr_info_fetch_wait(g, 5)) { | ||
3054 | ret = -ETIME; | ||
3055 | goto fail; | ||
3056 | } | ||
3057 | |||
3058 | gk20a_writel(g, fb_mmu_vpr_info_r(), | ||
3059 | fb_mmu_vpr_info_fetch_true_v()); | ||
3060 | |||
3061 | ret = gk20a_mm_mmu_vpr_info_fetch_wait(g, 5); | ||
3062 | |||
3063 | fail: | ||
3064 | gk20a_idle(g->dev); | ||
3065 | return ret; | ||
3066 | } | ||
3067 | |||
3068 | void gk20a_init_mm(struct gpu_ops *gops) | 3023 | void gk20a_init_mm(struct gpu_ops *gops) |
3069 | { | 3024 | { |
3070 | gops->mm.set_sparse = gk20a_vm_put_empty; | 3025 | gops->mm.set_sparse = gk20a_vm_put_empty; |