diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/fb/fb_gp106.c')
-rw-r--r-- | drivers/gpu/nvgpu/common/fb/fb_gp106.c | 15 |
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 | |||
56 | size_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 | } | ||