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_pri_gk20a.h | |
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_pri_gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h b/drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h index 411430c7..c3ced432 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h | |||
@@ -109,6 +109,10 @@ static inline u32 pri_tpccs_addr_mask(u32 addr) | |||
109 | { | 109 | { |
110 | return addr & ((1 << pri_tpccs_addr_width()) - 1); | 110 | return addr & ((1 << pri_tpccs_addr_width()) - 1); |
111 | } | 111 | } |
112 | static inline u32 pri_fbpa_addr_mask(struct gk20a *g, u32 addr) | ||
113 | { | ||
114 | return addr & (nvgpu_get_litter_value(g, GPU_LIT_FBPA_STRIDE) - 1); | ||
115 | } | ||
112 | static inline u32 pri_tpc_addr(struct gk20a *g, u32 addr, u32 gpc, u32 tpc) | 116 | static inline u32 pri_tpc_addr(struct gk20a *g, u32 addr, u32 gpc, u32 tpc) |
113 | { | 117 | { |
114 | u32 gpc_base = nvgpu_get_litter_value(g, GPU_LIT_GPC_BASE); | 118 | u32 gpc_base = nvgpu_get_litter_value(g, GPU_LIT_GPC_BASE); |
@@ -127,7 +131,27 @@ static inline bool pri_is_tpc_addr_shared(struct gk20a *g, u32 addr) | |||
127 | (addr < (tpc_in_gpc_shared_base + | 131 | (addr < (tpc_in_gpc_shared_base + |
128 | tpc_in_gpc_stride)); | 132 | tpc_in_gpc_stride)); |
129 | } | 133 | } |
130 | 134 | static inline u32 pri_fbpa_addr(struct gk20a *g, u32 addr, u32 fbpa) | |
135 | { | ||
136 | return (nvgpu_get_litter_value(g, GPU_LIT_FBPA_BASE) + addr + | ||
137 | (fbpa * nvgpu_get_litter_value(g, GPU_LIT_FBPA_STRIDE))); | ||
138 | } | ||
139 | static inline bool pri_is_fbpa_addr_shared(struct gk20a *g, u32 addr) | ||
140 | { | ||
141 | u32 fbpa_shared_base = nvgpu_get_litter_value(g, GPU_LIT_FBPA_SHARED_BASE); | ||
142 | u32 fbpa_stride = nvgpu_get_litter_value(g, GPU_LIT_FBPA_STRIDE); | ||
143 | return ((addr >= fbpa_shared_base) && | ||
144 | (addr < (fbpa_shared_base + fbpa_stride))); | ||
145 | } | ||
146 | static inline bool pri_is_fbpa_addr(struct gk20a *g, u32 addr) | ||
147 | { | ||
148 | u32 fbpa_base = nvgpu_get_litter_value(g, GPU_LIT_FBPA_BASE); | ||
149 | u32 fbpa_stride = nvgpu_get_litter_value(g, GPU_LIT_FBPA_STRIDE); | ||
150 | u32 num_fbpas = nvgpu_get_litter_value(g, GPU_LIT_NUM_FBPAS); | ||
151 | return (((addr >= fbpa_base) && | ||
152 | (addr < (fbpa_base + num_fbpas * fbpa_stride))) | ||
153 | || pri_is_fbpa_addr_shared(g, addr)); | ||
154 | } | ||
131 | /* | 155 | /* |
132 | * BE pri addressing | 156 | * BE pri addressing |
133 | */ | 157 | */ |
@@ -209,7 +233,8 @@ enum ctxsw_addr_type { | |||
209 | CTXSW_ADDR_TYPE_TPC = 2, | 233 | CTXSW_ADDR_TYPE_TPC = 2, |
210 | CTXSW_ADDR_TYPE_BE = 3, | 234 | CTXSW_ADDR_TYPE_BE = 3, |
211 | CTXSW_ADDR_TYPE_PPC = 4, | 235 | CTXSW_ADDR_TYPE_PPC = 4, |
212 | CTXSW_ADDR_TYPE_LTCS = 5 | 236 | CTXSW_ADDR_TYPE_LTCS = 5, |
237 | CTXSW_ADDR_TYPE_FBPA = 6, | ||
213 | }; | 238 | }; |
214 | 239 | ||
215 | #define PRI_BROADCAST_FLAGS_NONE 0 | 240 | #define PRI_BROADCAST_FLAGS_NONE 0 |
@@ -219,5 +244,6 @@ enum ctxsw_addr_type { | |||
219 | #define PRI_BROADCAST_FLAGS_PPC BIT(3) | 244 | #define PRI_BROADCAST_FLAGS_PPC BIT(3) |
220 | #define PRI_BROADCAST_FLAGS_LTCS BIT(4) | 245 | #define PRI_BROADCAST_FLAGS_LTCS BIT(4) |
221 | #define PRI_BROADCAST_FLAGS_LTSS BIT(5) | 246 | #define PRI_BROADCAST_FLAGS_LTSS BIT(5) |
247 | #define PRI_BROADCAST_FLAGS_FBPA BIT(6) | ||
222 | 248 | ||
223 | #endif /* GR_PRI_GK20A_H */ | 249 | #endif /* GR_PRI_GK20A_H */ |