summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm206/gr_gm206.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gm206/gr_gm206.c')
-rw-r--r--drivers/gpu/nvgpu/gm206/gr_gm206.c93
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
30static 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
64static 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
76static 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
87void 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}