summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 96bc72af..121f264a 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -6323,6 +6323,17 @@ int gr_gk20a_decode_priv_addr(struct gk20a *g, u32 addr,
6323 return -EINVAL; 6323 return -EINVAL;
6324} 6324}
6325 6325
6326void gr_gk20a_split_fbpa_broadcast_addr(struct gk20a *g, u32 addr,
6327 u32 num_fbpas,
6328 u32 *priv_addr_table, u32 *t)
6329{
6330 u32 fbpa_id;
6331
6332 for (fbpa_id = 0; fbpa_id < num_fbpas; fbpa_id++)
6333 priv_addr_table[(*t)++] = pri_fbpa_addr(g,
6334 pri_fbpa_addr_mask(g, addr), fbpa_id);
6335}
6336
6326int gr_gk20a_split_ppc_broadcast_addr(struct gk20a *g, u32 addr, 6337int gr_gk20a_split_ppc_broadcast_addr(struct gk20a *g, u32 addr,
6327 u32 gpc_num, 6338 u32 gpc_num,
6328 u32 *priv_addr_table, u32 *t) 6339 u32 *priv_addr_table, u32 *t)
@@ -6356,7 +6367,6 @@ int gr_gk20a_create_priv_addr_table(struct gk20a *g,
6356 u32 broadcast_flags; 6367 u32 broadcast_flags;
6357 u32 t; 6368 u32 t;
6358 int err; 6369 int err;
6359 int fbpa_num;
6360 6370
6361 t = 0; 6371 t = 0;
6362 *num_registers = 0; 6372 *num_registers = 0;
@@ -6430,11 +6440,9 @@ int gr_gk20a_create_priv_addr_table(struct gk20a *g,
6430 g->ops.gr.split_ltc_broadcast_addr(g, addr, 6440 g->ops.gr.split_ltc_broadcast_addr(g, addr,
6431 priv_addr_table, &t); 6441 priv_addr_table, &t);
6432 } else if (broadcast_flags & PRI_BROADCAST_FLAGS_FBPA) { 6442 } else if (broadcast_flags & PRI_BROADCAST_FLAGS_FBPA) {
6433 for (fbpa_num = 0; 6443 g->ops.gr.split_fbpa_broadcast_addr(g, addr,
6434 fbpa_num < nvgpu_get_litter_value(g, GPU_LIT_NUM_FBPAS); 6444 nvgpu_get_litter_value(g, GPU_LIT_NUM_FBPAS),
6435 fbpa_num++) 6445 priv_addr_table, &t);
6436 priv_addr_table[t++] = pri_fbpa_addr(g,
6437 pri_fbpa_addr_mask(g, addr), fbpa_num);
6438 } else if (!(broadcast_flags & PRI_BROADCAST_FLAGS_GPC)) { 6446 } else if (!(broadcast_flags & PRI_BROADCAST_FLAGS_GPC)) {
6439 if (broadcast_flags & PRI_BROADCAST_FLAGS_TPC) 6447 if (broadcast_flags & PRI_BROADCAST_FLAGS_TPC)
6440 for (tpc_num = 0; 6448 for (tpc_num = 0;