mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: Move FB size query to FB
Vidmem size query was in mm_xxx.c. It involves reading a register from FB, so move the query to FB HAL. JIRA NVGPU-1063 Change-Id: I30dfd2c4fdcdd6c841f85aaab7431d52473759bd Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1801425 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
a02e1c1f0b
commit
83efad7adb
@@ -52,3 +52,18 @@ void gp106_fb_reset(struct gk20a *g)
|
||||
val &= ~fb_mmu_priv_level_mask_write_violation_m();
|
||||
gk20a_writel(g, fb_mmu_priv_level_mask_r(), val);
|
||||
}
|
||||
|
||||
size_t gp106_fb_get_vidmem_size(struct gk20a *g)
|
||||
{
|
||||
u32 range = gk20a_readl(g, fb_mmu_local_memory_range_r());
|
||||
u32 mag = fb_mmu_local_memory_range_lower_mag_v(range);
|
||||
u32 scale = fb_mmu_local_memory_range_lower_scale_v(range);
|
||||
u32 ecc = fb_mmu_local_memory_range_ecc_mode_v(range);
|
||||
size_t bytes = ((size_t)mag << scale) * SZ_1M;
|
||||
|
||||
if (ecc) {
|
||||
bytes = bytes / 16U * 15U;
|
||||
}
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
@@ -25,4 +25,6 @@
|
||||
struct gpu_ops;
|
||||
|
||||
void gp106_fb_reset(struct gk20a *g);
|
||||
size_t gp106_fb_get_vidmem_size(struct gk20a *g);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -281,3 +281,18 @@ int gv100_fb_enable_nvlink(struct gk20a *g)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t gv100_fb_get_vidmem_size(struct gk20a *g)
|
||||
{
|
||||
u32 range = gk20a_readl(g, fb_mmu_local_memory_range_r());
|
||||
u32 mag = fb_mmu_local_memory_range_lower_mag_v(range);
|
||||
u32 scale = fb_mmu_local_memory_range_lower_scale_v(range);
|
||||
u32 ecc = fb_mmu_local_memory_range_ecc_mode_v(range);
|
||||
size_t bytes = ((size_t)mag << scale) * SZ_1M;
|
||||
|
||||
if (ecc) {
|
||||
bytes = bytes / 16U * 15U;
|
||||
}
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
@@ -33,4 +33,6 @@ void gv100_fb_disable_hub_intr(struct gk20a *g);
|
||||
int gv100_fb_memory_unlock(struct gk20a *g);
|
||||
int gv100_fb_init_nvlink(struct gk20a *g);
|
||||
int gv100_fb_enable_nvlink(struct gk20a *g);
|
||||
size_t gv100_fb_get_vidmem_size(struct gk20a *g);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user