diff options
author | seshendra Gadagottu <sgadagottu@nvidia.com> | 2017-06-02 21:08:27 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-06-07 16:35:33 -0400 |
commit | c37a7a577a5cf4732a32c7747f244aab19bdeaec (patch) | |
tree | 1e6febdd56d77ebc50e1997610bbd29ed866574b | |
parent | 3bf38954c2cd794485ed1bac50df8e61ad1100eb (diff) |
gpu: nvgpu: gv11b: ltc reset seqeunce change
Access ltc registers only after bringing ltc
out reset. Earlier ltc bought out of reset in
fb_reset which is later than accessing ltc registers.
GPUT19X-70
Change-Id: Id3b0ac4ed8787a994b7a5848598e4989154a0940
Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: http://git-master/r/1495167
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fb_gv11b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/ltc_gv11b.c | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fb_gv11b.c b/drivers/gpu/nvgpu/gv11b/fb_gv11b.c index 3b3d775e..7698d968 100644 --- a/drivers/gpu/nvgpu/gv11b/fb_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/fb_gv11b.c | |||
@@ -135,14 +135,12 @@ static void gv11b_fb_reset(struct gk20a *g) | |||
135 | nvgpu_info(g, "reset gv11b fb"); | 135 | nvgpu_info(g, "reset gv11b fb"); |
136 | 136 | ||
137 | g->ops.mc.reset(g, mc_enable_pfb_enabled_f() | | 137 | g->ops.mc.reset(g, mc_enable_pfb_enabled_f() | |
138 | mc_enable_l2_enabled_f() | | ||
139 | mc_enable_xbar_enabled_f() | | 138 | mc_enable_xbar_enabled_f() | |
140 | mc_enable_hub_enabled_f()); | 139 | mc_enable_hub_enabled_f()); |
141 | 140 | ||
142 | val = gk20a_readl(g, mc_elpg_enable_r()); | 141 | val = gk20a_readl(g, mc_elpg_enable_r()); |
143 | val |= mc_elpg_enable_xbar_enabled_f() | | 142 | val |= mc_elpg_enable_xbar_enabled_f() | |
144 | mc_elpg_enable_pfb_enabled_f() | | 143 | mc_elpg_enable_pfb_enabled_f() | |
145 | mc_elpg_enable_l2_enabled_f() | | ||
146 | mc_elpg_enable_hub_enabled_f(); | 144 | mc_elpg_enable_hub_enabled_f(); |
147 | gk20a_writel(g, mc_elpg_enable_r(), val); | 145 | gk20a_writel(g, mc_elpg_enable_r(), val); |
148 | 146 | ||
diff --git a/drivers/gpu/nvgpu/gv11b/ltc_gv11b.c b/drivers/gpu/nvgpu/gv11b/ltc_gv11b.c index 5b98b0aa..38986382 100644 --- a/drivers/gpu/nvgpu/gv11b/ltc_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/ltc_gv11b.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <nvgpu/hw/gv11b/hw_ltc_gv11b.h> | 22 | #include <nvgpu/hw/gv11b/hw_ltc_gv11b.h> |
23 | #include <nvgpu/hw/gv11b/hw_mc_gv11b.h> | 23 | #include <nvgpu/hw/gv11b/hw_mc_gv11b.h> |
24 | #include <nvgpu/hw/gv11b/hw_top_gv11b.h> | 24 | #include <nvgpu/hw/gv11b/hw_top_gv11b.h> |
25 | #include <nvgpu/hw/gv11b/hw_mc_gv11b.h> | ||
25 | #include <nvgpu/hw/gv11b/hw_pri_ringmaster_gv11b.h> | 26 | #include <nvgpu/hw/gv11b/hw_pri_ringmaster_gv11b.h> |
26 | 27 | ||
27 | /* | 28 | /* |
@@ -49,6 +50,13 @@ static void gv11b_ltc_init_fs_state(struct gk20a *g) | |||
49 | 50 | ||
50 | gk20a_dbg_info("initialize gv11b l2"); | 51 | gk20a_dbg_info("initialize gv11b l2"); |
51 | 52 | ||
53 | g->ops.mc.reset(g, mc_enable_pfb_enabled_f() | | ||
54 | mc_enable_l2_enabled_f()); | ||
55 | |||
56 | reg = gk20a_readl(g, mc_elpg_enable_r()); | ||
57 | reg |= mc_elpg_enable_l2_enabled_f(); | ||
58 | gk20a_writel(g, mc_elpg_enable_r(), reg); | ||
59 | |||
52 | g->max_ltc_count = gk20a_readl(g, top_num_ltcs_r()); | 60 | g->max_ltc_count = gk20a_readl(g, top_num_ltcs_r()); |
53 | g->ltc_count = gk20a_readl(g, pri_ringmaster_enum_ltc_r()); | 61 | g->ltc_count = gk20a_readl(g, pri_ringmaster_enum_ltc_r()); |
54 | gk20a_dbg_info("%u ltcs out of %u", g->ltc_count, g->max_ltc_count); | 62 | gk20a_dbg_info("%u ltcs out of %u", g->ltc_count, g->max_ltc_count); |