summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/fb/fb_gp106.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/fb/fb_gp106.c')
-rw-r--r--drivers/gpu/nvgpu/common/fb/fb_gp106.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/common/fb/fb_gp106.c b/drivers/gpu/nvgpu/common/fb/fb_gp106.c
index c8a32cd2..6dacceb5 100644
--- a/drivers/gpu/nvgpu/common/fb/fb_gp106.c
+++ b/drivers/gpu/nvgpu/common/fb/fb_gp106.c
@@ -52,3 +52,18 @@ void gp106_fb_reset(struct gk20a *g)
52 val &= ~fb_mmu_priv_level_mask_write_violation_m(); 52 val &= ~fb_mmu_priv_level_mask_write_violation_m();
53 gk20a_writel(g, fb_mmu_priv_level_mask_r(), val); 53 gk20a_writel(g, fb_mmu_priv_level_mask_r(), val);
54} 54}
55
56size_t gp106_fb_get_vidmem_size(struct gk20a *g)
57{
58 u32 range = gk20a_readl(g, fb_mmu_local_memory_range_r());
59 u32 mag = fb_mmu_local_memory_range_lower_mag_v(range);
60 u32 scale = fb_mmu_local_memory_range_lower_scale_v(range);
61 u32 ecc = fb_mmu_local_memory_range_ecc_mode_v(range);
62 size_t bytes = ((size_t)mag << scale) * SZ_1M;
63
64 if (ecc) {
65 bytes = bytes / 16U * 15U;
66 }
67
68 return bytes;
69}