diff options
author | tk <tk@nvidia.com> | 2016-11-03 06:06:24 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-11-17 20:24:39 -0500 |
commit | c1064c27dfa26847234153652cf2b88167b90adf (patch) | |
tree | c51c17a78fe7d9c89b5042eb345fe7a566b5b9b8 /drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |
parent | dd5b630e13d8ca97b38e81670ff45ef2ec0b810c (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.c | 14 |
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; |