diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gm206/gr_gm206.c')
-rw-r--r-- | drivers/gpu/nvgpu/gm206/gr_gm206.c | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/drivers/gpu/nvgpu/gm206/gr_gm206.c b/drivers/gpu/nvgpu/gm206/gr_gm206.c deleted file mode 100644 index b7956eca..00000000 --- a/drivers/gpu/nvgpu/gm206/gr_gm206.c +++ /dev/null | |||
@@ -1,93 +0,0 @@ | |||
1 | /* | ||
2 | * gm206 GR | ||
3 | * | ||
4 | * Copyright (c) 2011-2016, NVIDIA CORPORATION. All rights reserved. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms and conditions of the GNU General Public License, | ||
8 | * version 2, as published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
11 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
12 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
13 | * more details. | ||
14 | */ | ||
15 | |||
16 | #include <linux/types.h> | ||
17 | #include <linux/delay.h> /* for mdelay */ | ||
18 | #include <linux/io.h> | ||
19 | #include <linux/vmalloc.h> | ||
20 | #include <soc/tegra/fuse.h> | ||
21 | |||
22 | #include "gk20a/gk20a.h" | ||
23 | |||
24 | #include "gm20b/gr_gm20b.h" | ||
25 | #include "gr_gm206.h" | ||
26 | |||
27 | #include <nvgpu/hw/gm206/hw_fb_gm206.h> | ||
28 | #include <nvgpu/hw/gm206/hw_gr_gm206.h> | ||
29 | |||
30 | static void gr_gm206_init_gpc_mmu(struct gk20a *g) | ||
31 | { | ||
32 | u32 temp; | ||
33 | |||
34 | gk20a_dbg_info("initialize gpc mmu"); | ||
35 | |||
36 | temp = gk20a_readl(g, fb_mmu_ctrl_r()); | ||
37 | temp &= gr_gpcs_pri_mmu_ctrl_vm_pg_size_m() | | ||
38 | gr_gpcs_pri_mmu_ctrl_use_pdb_big_page_size_m() | | ||
39 | gr_gpcs_pri_mmu_ctrl_use_full_comp_tag_line_m() | | ||
40 | gr_gpcs_pri_mmu_ctrl_vol_fault_m() | | ||
41 | gr_gpcs_pri_mmu_ctrl_comp_fault_m() | | ||
42 | gr_gpcs_pri_mmu_ctrl_miss_gran_m() | | ||
43 | gr_gpcs_pri_mmu_ctrl_cache_mode_m() | | ||
44 | gr_gpcs_pri_mmu_ctrl_mmu_aperture_m() | | ||
45 | gr_gpcs_pri_mmu_ctrl_mmu_vol_m() | | ||
46 | gr_gpcs_pri_mmu_ctrl_mmu_disable_m(); | ||
47 | gk20a_writel(g, gr_gpcs_pri_mmu_ctrl_r(), temp); | ||
48 | gk20a_writel(g, gr_gpcs_pri_mmu_pm_unit_mask_r(), 0); | ||
49 | gk20a_writel(g, gr_gpcs_pri_mmu_pm_req_mask_r(), 0); | ||
50 | |||
51 | gk20a_writel(g, gr_gpcs_pri_mmu_debug_ctrl_r(), | ||
52 | gk20a_readl(g, fb_mmu_debug_ctrl_r())); | ||
53 | gk20a_writel(g, gr_gpcs_pri_mmu_debug_wr_r(), | ||
54 | gk20a_readl(g, fb_mmu_debug_wr_r())); | ||
55 | gk20a_writel(g, gr_gpcs_pri_mmu_debug_rd_r(), | ||
56 | gk20a_readl(g, fb_mmu_debug_rd_r())); | ||
57 | |||
58 | gk20a_writel(g, gr_gpcs_mmu_num_active_ltcs_r(), | ||
59 | gk20a_readl(g, fb_fbhub_num_active_ltcs_r())); | ||
60 | /* TODO: num_active_ltcs2! */ | ||
61 | gk20a_writel(g, 0x50833c, gk20a_readl(g, 0x100804)); | ||
62 | } | ||
63 | |||
64 | static void gr_gm206_bundle_cb_defaults(struct gk20a *g) | ||
65 | { | ||
66 | struct gr_gk20a *gr = &g->gr; | ||
67 | |||
68 | gr->bundle_cb_default_size = | ||
69 | gr_scc_bundle_cb_size_div_256b__prod_v(); | ||
70 | gr->min_gpm_fifo_depth = | ||
71 | gr_pd_ab_dist_cfg2_state_limit_min_gpm_fifo_depths_v(); | ||
72 | gr->bundle_cb_token_limit = | ||
73 | gr_pd_ab_dist_cfg2_token_limit_init_v(); | ||
74 | } | ||
75 | |||
76 | static void gr_gm206_cb_size_default(struct gk20a *g) | ||
77 | { | ||
78 | struct gr_gk20a *gr = &g->gr; | ||
79 | |||
80 | if (!gr->attrib_cb_default_size) | ||
81 | gr->attrib_cb_default_size = | ||
82 | gr_gpc0_ppc0_cbm_beta_cb_size_v_default_v(); | ||
83 | gr->alpha_cb_default_size = | ||
84 | gr_gpc0_ppc0_cbm_alpha_cb_size_v_default_v(); | ||
85 | } | ||
86 | |||
87 | void gm206_init_gr(struct gpu_ops *gops) | ||
88 | { | ||
89 | gm20b_init_gr(gops); | ||
90 | gops->gr.init_gpc_mmu = gr_gm206_init_gpc_mmu; | ||
91 | gops->gr.bundle_cb_defaults = gr_gm206_bundle_cb_defaults; | ||
92 | gops->gr.cb_size_default = gr_gm206_cb_size_default; | ||
93 | } | ||