diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2016-09-06 06:28:16 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-09-15 15:24:31 -0400 |
commit | d07c4b48cfd5bbd52e3ece9c0234d16c97b75228 (patch) | |
tree | b638bcc9569f83b4cfde88089f738a71e371e201 /drivers/gpu/nvgpu/gk20a | |
parent | 97512aecb60edf451914641231407a5e92559ac6 (diff) |
gpu: nvgpu: select target based on aperture
While programming ucode's inst block in API
gr_gk20a_load_falcon_bind_instblk(), use gk20a_aperture_mask()
to select target address (i.e. if address is in sysmem or
vidmem) based on aperture
Also add target accessors for gr_fecs_new_ctx and
gr_fecs_arb_ctx_ptr
Jira DNVGPU-22
Change-Id: I88198080f188b349a4448a229dff8416a6a18073
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/1216139
(cherry picked from commit 42bc14110df17400dd655bc994dc9e61c73048b1)
Reviewed-on: http://git-master/r/1219703
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 8 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h | 16 |
2 files changed, 22 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 4c650520..35e4f0b8 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -2219,12 +2219,16 @@ void gr_gk20a_load_falcon_bind_instblk(struct gk20a *g) | |||
2219 | inst_ptr = gk20a_mm_inst_block_addr(g, &ucode_info->inst_blk_desc); | 2219 | inst_ptr = gk20a_mm_inst_block_addr(g, &ucode_info->inst_blk_desc); |
2220 | gk20a_writel(g, gr_fecs_new_ctx_r(), | 2220 | gk20a_writel(g, gr_fecs_new_ctx_r(), |
2221 | gr_fecs_new_ctx_ptr_f(inst_ptr >> 12) | | 2221 | gr_fecs_new_ctx_ptr_f(inst_ptr >> 12) | |
2222 | gr_fecs_new_ctx_target_m() | | 2222 | gk20a_aperture_mask(g, &ucode_info->inst_blk_desc, |
2223 | gr_fecs_new_ctx_target_sys_mem_ncoh_f(), | ||
2224 | gr_fecs_new_ctx_target_vid_mem_f()) | | ||
2223 | gr_fecs_new_ctx_valid_m()); | 2225 | gr_fecs_new_ctx_valid_m()); |
2224 | 2226 | ||
2225 | gk20a_writel(g, gr_fecs_arb_ctx_ptr_r(), | 2227 | gk20a_writel(g, gr_fecs_arb_ctx_ptr_r(), |
2226 | gr_fecs_arb_ctx_ptr_ptr_f(inst_ptr >> 12) | | 2228 | gr_fecs_arb_ctx_ptr_ptr_f(inst_ptr >> 12) | |
2227 | gr_fecs_arb_ctx_ptr_target_m()); | 2229 | gk20a_aperture_mask(g, &ucode_info->inst_blk_desc, |
2230 | gr_fecs_arb_ctx_ptr_target_sys_mem_ncoh_f(), | ||
2231 | gr_fecs_arb_ctx_ptr_target_vid_mem_f())); | ||
2228 | 2232 | ||
2229 | gk20a_writel(g, gr_fecs_arb_ctx_cmd_r(), 0x7); | 2233 | gk20a_writel(g, gr_fecs_arb_ctx_cmd_r(), 0x7); |
2230 | 2234 | ||
diff --git a/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h b/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h index 11cbe10c..1a888b53 100644 --- a/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h | |||
@@ -1210,6 +1210,14 @@ static inline u32 gr_fecs_new_ctx_target_v(u32 r) | |||
1210 | { | 1210 | { |
1211 | return (r >> 28) & 0x3; | 1211 | return (r >> 28) & 0x3; |
1212 | } | 1212 | } |
1213 | static inline u32 gr_fecs_new_ctx_target_vid_mem_f(void) | ||
1214 | { | ||
1215 | return 0x0; | ||
1216 | } | ||
1217 | static inline u32 gr_fecs_new_ctx_target_sys_mem_ncoh_f(void) | ||
1218 | { | ||
1219 | return 0x30000000; | ||
1220 | } | ||
1213 | static inline u32 gr_fecs_new_ctx_valid_s(void) | 1221 | static inline u32 gr_fecs_new_ctx_valid_s(void) |
1214 | { | 1222 | { |
1215 | return 1; | 1223 | return 1; |
@@ -1262,6 +1270,14 @@ static inline u32 gr_fecs_arb_ctx_ptr_target_v(u32 r) | |||
1262 | { | 1270 | { |
1263 | return (r >> 28) & 0x3; | 1271 | return (r >> 28) & 0x3; |
1264 | } | 1272 | } |
1273 | static inline u32 gr_fecs_arb_ctx_ptr_target_vid_mem_f(void) | ||
1274 | { | ||
1275 | return 0x0; | ||
1276 | } | ||
1277 | static inline u32 gr_fecs_arb_ctx_ptr_target_sys_mem_ncoh_f(void) | ||
1278 | { | ||
1279 | return 0x30000000; | ||
1280 | } | ||
1265 | static inline u32 gr_fecs_arb_ctx_cmd_r(void) | 1281 | static inline u32 gr_fecs_arb_ctx_cmd_r(void) |
1266 | { | 1282 | { |
1267 | return 0x00409a10; | 1283 | return 0x00409a10; |