summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2016-09-06 06:28:16 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2016-09-15 15:24:31 -0400
commitd07c4b48cfd5bbd52e3ece9c0234d16c97b75228 (patch)
treeb638bcc9569f83b4cfde88089f738a71e371e201 /drivers
parent97512aecb60edf451914641231407a5e92559ac6 (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')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c8
-rw-r--r--drivers/gpu/nvgpu/gk20a/hw_gr_gk20a.h16
-rw-r--r--drivers/gpu/nvgpu/gm206/hw_gr_gm206.h16
-rw-r--r--drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h16
4 files changed, 54 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}
1213static inline u32 gr_fecs_new_ctx_target_vid_mem_f(void)
1214{
1215 return 0x0;
1216}
1217static inline u32 gr_fecs_new_ctx_target_sys_mem_ncoh_f(void)
1218{
1219 return 0x30000000;
1220}
1213static inline u32 gr_fecs_new_ctx_valid_s(void) 1221static 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}
1273static inline u32 gr_fecs_arb_ctx_ptr_target_vid_mem_f(void)
1274{
1275 return 0x0;
1276}
1277static inline u32 gr_fecs_arb_ctx_ptr_target_sys_mem_ncoh_f(void)
1278{
1279 return 0x30000000;
1280}
1265static inline u32 gr_fecs_arb_ctx_cmd_r(void) 1281static inline u32 gr_fecs_arb_ctx_cmd_r(void)
1266{ 1282{
1267 return 0x00409a10; 1283 return 0x00409a10;
diff --git a/drivers/gpu/nvgpu/gm206/hw_gr_gm206.h b/drivers/gpu/nvgpu/gm206/hw_gr_gm206.h
index 011e3142..ff677844 100644
--- a/drivers/gpu/nvgpu/gm206/hw_gr_gm206.h
+++ b/drivers/gpu/nvgpu/gm206/hw_gr_gm206.h
@@ -1206,6 +1206,14 @@ static inline u32 gr_fecs_new_ctx_target_v(u32 r)
1206{ 1206{
1207 return (r >> 28) & 0x3; 1207 return (r >> 28) & 0x3;
1208} 1208}
1209static inline u32 gr_fecs_new_ctx_target_vid_mem_f(void)
1210{
1211 return 0x0;
1212}
1213static inline u32 gr_fecs_new_ctx_target_sys_mem_ncoh_f(void)
1214{
1215 return 0x30000000;
1216}
1209static inline u32 gr_fecs_new_ctx_valid_s(void) 1217static inline u32 gr_fecs_new_ctx_valid_s(void)
1210{ 1218{
1211 return 1; 1219 return 1;
@@ -1258,6 +1266,14 @@ static inline u32 gr_fecs_arb_ctx_ptr_target_v(u32 r)
1258{ 1266{
1259 return (r >> 28) & 0x3; 1267 return (r >> 28) & 0x3;
1260} 1268}
1269static inline u32 gr_fecs_arb_ctx_ptr_target_vid_mem_f(void)
1270{
1271 return 0x0;
1272}
1273static inline u32 gr_fecs_arb_ctx_ptr_target_sys_mem_ncoh_f(void)
1274{
1275 return 0x30000000;
1276}
1261static inline u32 gr_fecs_arb_ctx_cmd_r(void) 1277static inline u32 gr_fecs_arb_ctx_cmd_r(void)
1262{ 1278{
1263 return 0x00409a10; 1279 return 0x00409a10;
diff --git a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h
index 45240e97..68b5a6d4 100644
--- a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h
+++ b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h
@@ -1226,6 +1226,14 @@ static inline u32 gr_fecs_new_ctx_target_v(u32 r)
1226{ 1226{
1227 return (r >> 28) & 0x3; 1227 return (r >> 28) & 0x3;
1228} 1228}
1229static inline u32 gr_fecs_new_ctx_target_vid_mem_f(void)
1230{
1231 return 0x0;
1232}
1233static inline u32 gr_fecs_new_ctx_target_sys_mem_ncoh_f(void)
1234{
1235 return 0x30000000;
1236}
1229static inline u32 gr_fecs_new_ctx_valid_s(void) 1237static inline u32 gr_fecs_new_ctx_valid_s(void)
1230{ 1238{
1231 return 1; 1239 return 1;
@@ -1278,6 +1286,14 @@ static inline u32 gr_fecs_arb_ctx_ptr_target_v(u32 r)
1278{ 1286{
1279 return (r >> 28) & 0x3; 1287 return (r >> 28) & 0x3;
1280} 1288}
1289static inline u32 gr_fecs_arb_ctx_ptr_target_vid_mem_f(void)
1290{
1291 return 0x0;
1292}
1293static inline u32 gr_fecs_arb_ctx_ptr_target_sys_mem_ncoh_f(void)
1294{
1295 return 0x30000000;
1296}
1281static inline u32 gr_fecs_arb_ctx_cmd_r(void) 1297static inline u32 gr_fecs_arb_ctx_cmd_r(void)
1282{ 1298{
1283 return 0x00409a10; 1299 return 0x00409a10;