summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
authortk <tk@nvidia.com>2016-11-03 06:06:24 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2016-11-17 20:24:39 -0500
commitc1064c27dfa26847234153652cf2b88167b90adf (patch)
treec51c17a78fe7d9c89b5042eb345fe7a566b5b9b8 /drivers/gpu/nvgpu/gk20a/gr_gk20a.c
parentdd5b630e13d8ca97b38e81670ff45ef2ec0b810c (diff)
gpu: nvgpu: FBPA broadcast support
Add FBPA broadcast support to hwpm regops Bug 200249125 Change-Id: Iaf413a162a8985bcce94ff96ec6318e129609c4c Signed-off-by: Tejaswi K <tk@nvidia.com> Reviewed-on: http://git-master/r/1247408 (cherry picked from commit 4e0a805f5a8762d1a90f3b5dd76902a04941d9ef) Reviewed-on: http://git-master/r/1252160 Tested-by: Peter Daifuku <pdaifuku@nvidia.com> Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index ee8b3b63..f5205d75 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -6567,6 +6567,13 @@ static int gr_gk20a_decode_priv_addr(struct gk20a *g, u32 addr,
6567 else if (g->ops.gr.is_ltcn_ltss_addr(g, addr)) 6567 else if (g->ops.gr.is_ltcn_ltss_addr(g, addr))
6568 *broadcast_flags |= PRI_BROADCAST_FLAGS_LTSS; 6568 *broadcast_flags |= PRI_BROADCAST_FLAGS_LTSS;
6569 return 0; 6569 return 0;
6570 } else if (pri_is_fbpa_addr(g, addr)) {
6571 *addr_type = CTXSW_ADDR_TYPE_FBPA;
6572 if (pri_is_fbpa_addr_shared(g, addr)) {
6573 *broadcast_flags |= PRI_BROADCAST_FLAGS_FBPA;
6574 return 0;
6575 }
6576 return 0;
6570 } else { 6577 } else {
6571 *addr_type = CTXSW_ADDR_TYPE_SYS; 6578 *addr_type = CTXSW_ADDR_TYPE_SYS;
6572 return 0; 6579 return 0;
@@ -6609,6 +6616,7 @@ static int gr_gk20a_create_priv_addr_table(struct gk20a *g,
6609 u32 broadcast_flags; 6616 u32 broadcast_flags;
6610 u32 t; 6617 u32 t;
6611 int err; 6618 int err;
6619 u32 fbpa_num;
6612 6620
6613 t = 0; 6621 t = 0;
6614 *num_registers = 0; 6622 *num_registers = 0;
@@ -6669,6 +6677,12 @@ static int gr_gk20a_create_priv_addr_table(struct gk20a *g,
6669 } else if (broadcast_flags & PRI_BROADCAST_FLAGS_LTCS) { 6677 } else if (broadcast_flags & PRI_BROADCAST_FLAGS_LTCS) {
6670 g->ops.gr.split_ltc_broadcast_addr(g, addr, 6678 g->ops.gr.split_ltc_broadcast_addr(g, addr,
6671 priv_addr_table, &t); 6679 priv_addr_table, &t);
6680 } else if (broadcast_flags & PRI_BROADCAST_FLAGS_FBPA) {
6681 for (fbpa_num = 0;
6682 fbpa_num < nvgpu_get_litter_value(g, GPU_LIT_NUM_FBPAS);
6683 fbpa_num++)
6684 priv_addr_table[t++] = pri_fbpa_addr(g,
6685 pri_fbpa_addr_mask(g, addr), fbpa_num);
6672 } else if (!(broadcast_flags & PRI_BROADCAST_FLAGS_GPC)) { 6686 } else if (!(broadcast_flags & PRI_BROADCAST_FLAGS_GPC)) {
6673 if (broadcast_flags & PRI_BROADCAST_FLAGS_TPC) 6687 if (broadcast_flags & PRI_BROADCAST_FLAGS_TPC)
6674 for (tpc_num = 0; 6688 for (tpc_num = 0;