From d215bc1107a8a032d18e515e55d5e29c7192f15e Mon Sep 17 00:00:00 2001 From: Konsta Holtta Date: Fri, 20 May 2016 09:12:23 +0300 Subject: gpu: nvgpu: detect vidmem configuration from HW Read video memory size from hardware during initialization for devices that support it. JIRA DNVGPU-14 Change-Id: If190f2d89f7148520ee274ca674f972987c8056d Signed-off-by: Konsta Holtta Reviewed-on: http://git-master/r/1157215 Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/gk20a.h | 1 + drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 15 +++++++++++++++ drivers/gpu/nvgpu/gk20a/mm_gk20a.h | 2 ++ 3 files changed, 18 insertions(+) (limited to 'drivers/gpu/nvgpu/gk20a') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index c7d12f86..6622dad0 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -524,6 +524,7 @@ struct gpu_ops { u64 (*get_iova_addr)(struct gk20a *g, struct scatterlist *sgl, u32 flags); int (*bar1_bind)(struct gk20a *g, u64 bar1_iova); + size_t (*get_vidmem_size)(struct gk20a *g); } mm; struct { int (*init_therm_setup_hw)(struct gk20a *g); diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 6505015f..60c1b7ea 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c @@ -613,6 +613,20 @@ static void gk20a_init_pramin(struct mm_gk20a *mm) mm->force_pramin = GK20A_FORCE_PRAMIN_DEFAULT; } +static int gk20a_init_vidmem(struct mm_gk20a *mm) +{ + struct gk20a *g = mm->g; + size_t size = g->ops.mm.get_vidmem_size ? + g->ops.mm.get_vidmem_size(g) : 0; + + if (!size) + return 0; + + mm->vidmem_size = size; + + return 0; +} + int gk20a_init_mm_setup_sw(struct gk20a *g) { struct mm_gk20a *mm = &g->mm; @@ -637,6 +651,7 @@ int gk20a_init_mm_setup_sw(struct gk20a *g) (int)(mm->channel.kernel_size >> 20)); gk20a_init_pramin(mm); + gk20a_init_vidmem(mm); err = gk20a_alloc_sysmem_flush(g); if (err) diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h index e83e1111..590ede71 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.h @@ -372,6 +372,8 @@ struct mm_gk20a { #else bool force_pramin; /* via debugfs */ #endif + + size_t vidmem_size; }; int gk20a_mm_init(struct mm_gk20a *mm); -- cgit v1.2.2