From 4aef10c9507a19fb288936b88b0faeb62a520817 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Mon, 19 Jan 2015 14:50:57 -0800 Subject: gpu: nvgpu: Set compression page per SoC Compression page size varies depending on architecture. Make it 129kB on gk20a and gm20b. Also export some common functions from gm20b. Bug 1592495 Change-Id: Ifb1c5b15d25fa961dab097021080055fc385fecd Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/673790 --- drivers/gpu/nvgpu/gm20b/fb_gm20b.c | 6 ++++++ drivers/gpu/nvgpu/gm20b/ltc_gm20b.c | 14 +++++++------- drivers/gpu/nvgpu/gm20b/ltc_gm20b.h | 7 +++++++ 3 files changed, 20 insertions(+), 7 deletions(-) (limited to 'drivers/gpu/nvgpu/gm20b') diff --git a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c index 7cdd776e..deef7896 100644 --- a/drivers/gpu/nvgpu/gm20b/fb_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/fb_gm20b.c @@ -90,10 +90,16 @@ static void gm20b_fb_set_mmu_page_size(struct gk20a *g) gk20a_writel(g, fb_mmu_ctrl_r(), fb_mmu_ctrl); } +static int gm20b_fb_compression_page_size(struct gk20a *g) +{ + return SZ_128K; +} + void gm20b_init_fb(struct gpu_ops *gops) { gops->fb.init_fs_state = fb_gm20b_init_fs_state; gops->fb.set_mmu_page_size = gm20b_fb_set_mmu_page_size; + gops->fb.compression_page_size = gm20b_fb_compression_page_size; gm20b_init_uncompressed_kind_map(); gm20b_init_kind_attr(); } diff --git a/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c b/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c index fe2e06d5..0a0efe41 100644 --- a/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c @@ -101,8 +101,8 @@ static int gm20b_ltc_init_comptags(struct gk20a *g, struct gr_gk20a *gr) return 0; } -static int gm20b_ltc_cbc_ctrl(struct gk20a *g, enum gk20a_cbc_op op, - u32 min, u32 max) +int gm20b_ltc_cbc_ctrl(struct gk20a *g, enum gk20a_cbc_op op, + u32 min, u32 max) { int err = 0; struct gr_gk20a *gr = &g->gr; @@ -170,7 +170,7 @@ out: return 0; } -static void gm20b_ltc_init_fs_state(struct gk20a *g) +void gm20b_ltc_init_fs_state(struct gk20a *g) { u32 reg; @@ -196,7 +196,7 @@ static void gm20b_ltc_init_fs_state(struct gk20a *g) gk20a_writel(g, ltc_ltcs_ltss_intr_r(), reg); } -static void gm20b_ltc_isr(struct gk20a *g) +void gm20b_ltc_isr(struct gk20a *g) { u32 mc_intr, ltc_intr; int ltc, slice; @@ -221,7 +221,7 @@ static void gm20b_ltc_isr(struct gk20a *g) } } -static void gm20b_ltc_g_elpg_flush_locked(struct gk20a *g) +void gm20b_ltc_g_elpg_flush_locked(struct gk20a *g) { u32 data; bool done[g->ltc_count]; @@ -265,7 +265,7 @@ static void gm20b_ltc_g_elpg_flush_locked(struct gk20a *g) "g_elpg_flush too many retries"); } -static u32 gm20b_ltc_cbc_fix_config(struct gk20a *g, int base) +u32 gm20b_ltc_cbc_fix_config(struct gk20a *g, int base) { u32 val = gk20a_readl(g, ltc_ltcs_ltss_cbc_num_active_ltcs_r()); if (val == 2) { @@ -281,7 +281,7 @@ static u32 gm20b_ltc_cbc_fix_config(struct gk20a *g, int base) /* * Performs a full flush of the L2 cache. */ -static void gm20b_flush_ltc(struct gk20a *g) +void gm20b_flush_ltc(struct gk20a *g) { u32 op_pending; unsigned long now, timeout; diff --git a/drivers/gpu/nvgpu/gm20b/ltc_gm20b.h b/drivers/gpu/nvgpu/gm20b/ltc_gm20b.h index c7524264..288e193a 100644 --- a/drivers/gpu/nvgpu/gm20b/ltc_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/ltc_gm20b.h @@ -18,4 +18,11 @@ struct gpu_ops; void gm20b_init_ltc(struct gpu_ops *gops); +void gm20b_ltc_init_fs_state(struct gk20a *g); +int gm20b_ltc_cbc_ctrl(struct gk20a *g, enum gk20a_cbc_op op, + u32 min, u32 max); +void gm20b_ltc_g_elpg_flush_locked(struct gk20a *g); +void gm20b_ltc_isr(struct gk20a *g); +u32 gm20b_ltc_cbc_fix_config(struct gk20a *g, int base); +void gm20b_flush_ltc(struct gk20a *g); #endif -- cgit v1.2.2