diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/gr_gm20b.c | 13 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | 16 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/mm_gm20b.c | 6 |
3 files changed, 35 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c index d40e9d52..8f056181 100644 --- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c | |||
@@ -748,6 +748,18 @@ static int gr_gm20b_load_ctxsw_ucode(struct gk20a *g) | |||
748 | 748 | ||
749 | #endif | 749 | #endif |
750 | 750 | ||
751 | static void gr_gm20b_detect_sm_arch(struct gk20a *g) | ||
752 | { | ||
753 | u32 v = gk20a_readl(g, gr_gpc0_tpc0_sm_arch_r()); | ||
754 | |||
755 | g->gpu_characteristics.sm_arch_spa_version = | ||
756 | gr_gpc0_tpc0_sm_arch_spa_version_v(v); | ||
757 | g->gpu_characteristics.sm_arch_sm_version = | ||
758 | gr_gpc0_tpc0_sm_arch_sm_version_v(v); | ||
759 | g->gpu_characteristics.sm_arch_warp_count = | ||
760 | gr_gpc0_tpc0_sm_arch_warp_count_v(v); | ||
761 | } | ||
762 | |||
751 | void gm20b_init_gr(struct gpu_ops *gops) | 763 | void gm20b_init_gr(struct gpu_ops *gops) |
752 | { | 764 | { |
753 | gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu; | 765 | gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu; |
@@ -781,4 +793,5 @@ void gm20b_init_gr(struct gpu_ops *gops) | |||
781 | gops->gr.get_zcull_info = gr_gk20a_get_zcull_info; | 793 | gops->gr.get_zcull_info = gr_gk20a_get_zcull_info; |
782 | gops->gr.is_tpc_addr = gr_gm20b_is_tpc_addr; | 794 | gops->gr.is_tpc_addr = gr_gm20b_is_tpc_addr; |
783 | gops->gr.get_tpc_num = gr_gm20b_get_tpc_num; | 795 | gops->gr.get_tpc_num = gr_gm20b_get_tpc_num; |
796 | gops->gr.detect_sm_arch = gr_gm20b_detect_sm_arch; | ||
784 | } | 797 | } |
diff --git a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h index 0dae5896..8e4308a3 100644 --- a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | |||
@@ -1878,6 +1878,22 @@ static inline u32 gr_gpc0_tpc0_sm_cfg_sm_id_f(u32 v) | |||
1878 | { | 1878 | { |
1879 | return (v & 0xffff) << 0; | 1879 | return (v & 0xffff) << 0; |
1880 | } | 1880 | } |
1881 | static inline u32 gr_gpc0_tpc0_sm_arch_r(void) | ||
1882 | { | ||
1883 | return 0x0050469c; | ||
1884 | } | ||
1885 | static inline u32 gr_gpc0_tpc0_sm_arch_warp_count_v(u32 r) | ||
1886 | { | ||
1887 | return (r >> 0) & 0xff; | ||
1888 | } | ||
1889 | static inline u32 gr_gpc0_tpc0_sm_arch_spa_version_v(u32 r) | ||
1890 | { | ||
1891 | return (r >> 8) & 0xfff; | ||
1892 | } | ||
1893 | static inline u32 gr_gpc0_tpc0_sm_arch_sm_version_v(u32 r) | ||
1894 | { | ||
1895 | return (r >> 20) & 0xfff; | ||
1896 | } | ||
1881 | static inline u32 gr_gpc0_ppc0_pes_vsc_strem_r(void) | 1897 | static inline u32 gr_gpc0_ppc0_pes_vsc_strem_r(void) |
1882 | { | 1898 | { |
1883 | return 0x00503018; | 1899 | return 0x00503018; |
diff --git a/drivers/gpu/nvgpu/gm20b/mm_gm20b.c b/drivers/gpu/nvgpu/gm20b/mm_gm20b.c index 030701b9..678ef4fd 100644 --- a/drivers/gpu/nvgpu/gm20b/mm_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/mm_gm20b.c | |||
@@ -280,6 +280,11 @@ static void gm20b_mm_set_big_page_size(struct gk20a *g, | |||
280 | gk20a_dbg_fn("done"); | 280 | gk20a_dbg_fn("done"); |
281 | } | 281 | } |
282 | 282 | ||
283 | u32 gm20b_mm_get_big_page_sizes(void) | ||
284 | { | ||
285 | return SZ_64K | SZ_128K; | ||
286 | } | ||
287 | |||
283 | void gm20b_init_mm(struct gpu_ops *gops) | 288 | void gm20b_init_mm(struct gpu_ops *gops) |
284 | { | 289 | { |
285 | gops->mm.set_sparse = gm20b_vm_put_sparse; | 290 | gops->mm.set_sparse = gm20b_vm_put_sparse; |
@@ -295,4 +300,5 @@ void gm20b_init_mm(struct gpu_ops *gops) | |||
295 | gops->mm.l2_flush = gk20a_mm_l2_flush; | 300 | gops->mm.l2_flush = gk20a_mm_l2_flush; |
296 | gops->mm.tlb_invalidate = gk20a_mm_tlb_invalidate; | 301 | gops->mm.tlb_invalidate = gk20a_mm_tlb_invalidate; |
297 | gops->mm.set_big_page_size = gm20b_mm_set_big_page_size; | 302 | gops->mm.set_big_page_size = gm20b_mm_set_big_page_size; |
303 | gops->mm.get_big_page_sizes = gm20b_mm_get_big_page_sizes; | ||
298 | } | 304 | } |