diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | 8 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/mm_gm20b.c | 9 |
2 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h index eb6cf4ad..21a46d33 100644 --- a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | |||
@@ -3210,6 +3210,14 @@ static inline u32 gr_gpcs_pri_mmu_debug_ctrl_r(void) | |||
3210 | { | 3210 | { |
3211 | return 0x004188b0; | 3211 | return 0x004188b0; |
3212 | } | 3212 | } |
3213 | static inline u32 gr_gpcs_pri_mmu_debug_ctrl_debug_v(u32 r) | ||
3214 | { | ||
3215 | return (r >> 16) & 0x1; | ||
3216 | } | ||
3217 | static inline u32 gr_gpcs_pri_mmu_debug_ctrl_debug_enabled_v(void) | ||
3218 | { | ||
3219 | return 0x00000001; | ||
3220 | } | ||
3213 | static inline u32 gr_gpcs_pri_mmu_debug_wr_r(void) | 3221 | static inline u32 gr_gpcs_pri_mmu_debug_wr_r(void) |
3214 | { | 3222 | { |
3215 | return 0x004188b4; | 3223 | return 0x004188b4; |
diff --git a/drivers/gpu/nvgpu/gm20b/mm_gm20b.c b/drivers/gpu/nvgpu/gm20b/mm_gm20b.c index a16f4adf..ac82d56a 100644 --- a/drivers/gpu/nvgpu/gm20b/mm_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/mm_gm20b.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include "mm_gm20b.h" | 18 | #include "mm_gm20b.h" |
19 | #include "hw_gmmu_gm20b.h" | 19 | #include "hw_gmmu_gm20b.h" |
20 | #include "hw_fb_gm20b.h" | 20 | #include "hw_fb_gm20b.h" |
21 | #include "hw_gr_gm20b.h" | ||
21 | 22 | ||
22 | static const u32 gmmu_page_sizes[gmmu_nr_page_sizes] = { SZ_4K, SZ_128K }; | 23 | static const u32 gmmu_page_sizes[gmmu_nr_page_sizes] = { SZ_4K, SZ_128K }; |
23 | static const u32 gmmu_page_shifts[gmmu_nr_page_sizes] = { 12, 17 }; | 24 | static const u32 gmmu_page_shifts[gmmu_nr_page_sizes] = { 12, 17 }; |
@@ -314,8 +315,16 @@ void gm20b_vm_clear_sparse(struct vm_gk20a *vm, u64 vaddr, | |||
314 | return; | 315 | return; |
315 | } | 316 | } |
316 | 317 | ||
318 | bool gm20b_mm_mmu_debug_mode_enabled(struct gk20a *g) | ||
319 | { | ||
320 | u32 debug_ctrl = gk20a_readl(g, gr_gpcs_pri_mmu_debug_ctrl_r()); | ||
321 | return gr_gpcs_pri_mmu_debug_ctrl_debug_v(debug_ctrl) == | ||
322 | gr_gpcs_pri_mmu_debug_ctrl_debug_enabled_v(); | ||
323 | } | ||
324 | |||
317 | void gm20b_init_mm(struct gpu_ops *gops) | 325 | void gm20b_init_mm(struct gpu_ops *gops) |
318 | { | 326 | { |
319 | gops->mm.set_sparse = gm20b_vm_put_sparse; | 327 | gops->mm.set_sparse = gm20b_vm_put_sparse; |
320 | gops->mm.clear_sparse = gm20b_vm_clear_sparse; | 328 | gops->mm.clear_sparse = gm20b_vm_clear_sparse; |
329 | gops->mm.is_debug_mode_enabled = gm20b_mm_mmu_debug_mode_enabled; | ||
321 | } | 330 | } |