diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2018-08-13 15:58:18 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-08-16 13:14:40 -0400 |
commit | 974d541623929fa2622d27d5d338a5b63596794b (patch) | |
tree | f47a540bf07efd7f6cda68f49d3675c2462d731a /drivers/gpu/nvgpu/gk20a | |
parent | 1e7f229e5d92078f772d4f81893b23504cd847a8 (diff) |
gpu: nvgpu: Move ltc HAL to common
Move implementation of ltc HAL to common/ltc.
JIRA NVGPU-956
Change-Id: Id78d74e8612d7dacfb8d322d491abecd798e42b5
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1798461
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 18 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 11 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h | 10 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 1 |
4 files changed, 14 insertions, 26 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 5bb91f62..f802cd56 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -194,6 +194,15 @@ struct gpu_ops { | |||
194 | u32 (*cbc_fix_config)(struct gk20a *g, int base); | 194 | u32 (*cbc_fix_config)(struct gk20a *g, int base); |
195 | void (*flush)(struct gk20a *g); | 195 | void (*flush)(struct gk20a *g); |
196 | void (*intr_en_illegal_compstat)(struct gk20a *g, bool enable); | 196 | void (*intr_en_illegal_compstat)(struct gk20a *g, bool enable); |
197 | bool (*pri_is_ltc_addr)(struct gk20a *g, u32 addr); | ||
198 | bool (*is_ltcs_ltss_addr)(struct gk20a *g, u32 addr); | ||
199 | bool (*is_ltcn_ltss_addr)(struct gk20a *g, u32 addr); | ||
200 | void (*split_lts_broadcast_addr)(struct gk20a *g, u32 addr, | ||
201 | u32 *priv_addr_table, | ||
202 | u32 *priv_addr_table_index); | ||
203 | void (*split_ltc_broadcast_addr)(struct gk20a *g, u32 addr, | ||
204 | u32 *priv_addr_table, | ||
205 | u32 *priv_addr_table_index); | ||
197 | } ltc; | 206 | } ltc; |
198 | struct { | 207 | struct { |
199 | void (*isr_stall)(struct gk20a *g, u32 inst_id, u32 pri_base); | 208 | void (*isr_stall)(struct gk20a *g, u32 inst_id, u32 pri_base); |
@@ -274,15 +283,6 @@ struct gpu_ops { | |||
274 | u32 *gpc_num, u32 *tpc_num); | 283 | u32 *gpc_num, u32 *tpc_num); |
275 | u32 (*get_tpc_num)(struct gk20a *g, u32 addr); | 284 | u32 (*get_tpc_num)(struct gk20a *g, u32 addr); |
276 | u32 (*get_egpc_base)(struct gk20a *g); | 285 | u32 (*get_egpc_base)(struct gk20a *g); |
277 | bool (*is_ltcs_ltss_addr)(struct gk20a *g, u32 addr); | ||
278 | bool (*is_ltcn_ltss_addr)(struct gk20a *g, u32 addr); | ||
279 | bool (*get_lts_in_ltc_shared_base)(void); | ||
280 | void (*split_lts_broadcast_addr)(struct gk20a *g, u32 addr, | ||
281 | u32 *priv_addr_table, | ||
282 | u32 *priv_addr_table_index); | ||
283 | void (*split_ltc_broadcast_addr)(struct gk20a *g, u32 addr, | ||
284 | u32 *priv_addr_table, | ||
285 | u32 *priv_addr_table_index); | ||
286 | void (*detect_sm_arch)(struct gk20a *g); | 286 | void (*detect_sm_arch)(struct gk20a *g); |
287 | int (*add_zbc_color)(struct gk20a *g, struct gr_gk20a *gr, | 287 | int (*add_zbc_color)(struct gk20a *g, struct gr_gk20a *gr, |
288 | struct zbc_entry *color_val, u32 index); | 288 | struct zbc_entry *color_val, u32 index); |
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index bb54e00e..fbba02ca 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -59,7 +59,6 @@ | |||
59 | #include <nvgpu/hw/gk20a/hw_ram_gk20a.h> | 59 | #include <nvgpu/hw/gk20a/hw_ram_gk20a.h> |
60 | #include <nvgpu/hw/gk20a/hw_pri_ringmaster_gk20a.h> | 60 | #include <nvgpu/hw/gk20a/hw_pri_ringmaster_gk20a.h> |
61 | #include <nvgpu/hw/gk20a/hw_top_gk20a.h> | 61 | #include <nvgpu/hw/gk20a/hw_top_gk20a.h> |
62 | #include <nvgpu/hw/gk20a/hw_ltc_gk20a.h> | ||
63 | #include <nvgpu/hw/gk20a/hw_fb_gk20a.h> | 62 | #include <nvgpu/hw/gk20a/hw_fb_gk20a.h> |
64 | #include <nvgpu/hw/gk20a/hw_pbdma_gk20a.h> | 63 | #include <nvgpu/hw/gk20a/hw_pbdma_gk20a.h> |
65 | 64 | ||
@@ -6256,11 +6255,11 @@ int gr_gk20a_decode_priv_addr(struct gk20a *g, u32 addr, | |||
6256 | } | 6255 | } |
6257 | *be_num = pri_get_be_num(g, addr); | 6256 | *be_num = pri_get_be_num(g, addr); |
6258 | return 0; | 6257 | return 0; |
6259 | } else if (pri_is_ltc_addr(addr)) { | 6258 | } else if (g->ops.ltc.pri_is_ltc_addr(g, addr)) { |
6260 | *addr_type = CTXSW_ADDR_TYPE_LTCS; | 6259 | *addr_type = CTXSW_ADDR_TYPE_LTCS; |
6261 | if (g->ops.gr.is_ltcs_ltss_addr(g, addr)) | 6260 | if (g->ops.ltc.is_ltcs_ltss_addr(g, addr)) |
6262 | *broadcast_flags |= PRI_BROADCAST_FLAGS_LTCS; | 6261 | *broadcast_flags |= PRI_BROADCAST_FLAGS_LTCS; |
6263 | else if (g->ops.gr.is_ltcn_ltss_addr(g, addr)) | 6262 | else if (g->ops.ltc.is_ltcn_ltss_addr(g, addr)) |
6264 | *broadcast_flags |= PRI_BROADCAST_FLAGS_LTSS; | 6263 | *broadcast_flags |= PRI_BROADCAST_FLAGS_LTSS; |
6265 | return 0; | 6264 | return 0; |
6266 | } else if (pri_is_fbpa_addr(g, addr)) { | 6265 | } else if (pri_is_fbpa_addr(g, addr)) { |
@@ -6398,10 +6397,10 @@ int gr_gk20a_create_priv_addr_table(struct gk20a *g, | |||
6398 | g->ops.gr.egpc_etpc_priv_addr_table(g, addr, gpc_num, tpc_num, | 6397 | g->ops.gr.egpc_etpc_priv_addr_table(g, addr, gpc_num, tpc_num, |
6399 | broadcast_flags, priv_addr_table, &t); | 6398 | broadcast_flags, priv_addr_table, &t); |
6400 | } else if (broadcast_flags & PRI_BROADCAST_FLAGS_LTSS) { | 6399 | } else if (broadcast_flags & PRI_BROADCAST_FLAGS_LTSS) { |
6401 | g->ops.gr.split_lts_broadcast_addr(g, addr, | 6400 | g->ops.ltc.split_lts_broadcast_addr(g, addr, |
6402 | priv_addr_table, &t); | 6401 | priv_addr_table, &t); |
6403 | } else if (broadcast_flags & PRI_BROADCAST_FLAGS_LTCS) { | 6402 | } else if (broadcast_flags & PRI_BROADCAST_FLAGS_LTCS) { |
6404 | g->ops.gr.split_ltc_broadcast_addr(g, addr, | 6403 | g->ops.ltc.split_ltc_broadcast_addr(g, addr, |
6405 | priv_addr_table, &t); | 6404 | priv_addr_table, &t); |
6406 | } else if (broadcast_flags & PRI_BROADCAST_FLAGS_FBPA) { | 6405 | } else if (broadcast_flags & PRI_BROADCAST_FLAGS_FBPA) { |
6407 | g->ops.gr.split_fbpa_broadcast_addr(g, addr, | 6406 | g->ops.gr.split_fbpa_broadcast_addr(g, addr, |
diff --git a/drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h b/drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h index af390833..32a30d78 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gr_pri_gk20a.h | |||
@@ -29,8 +29,6 @@ | |||
29 | * of the context state store for gr/compute contexts. | 29 | * of the context state store for gr/compute contexts. |
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include <nvgpu/hw/gk20a/hw_ltc_gk20a.h> | ||
33 | |||
34 | /* | 32 | /* |
35 | * GPC pri addressing | 33 | * GPC pri addressing |
36 | */ | 34 | */ |
@@ -227,14 +225,6 @@ static inline u32 pri_ppc_addr(struct gk20a *g, u32 addr, u32 gpc, u32 ppc) | |||
227 | ppc_in_gpc_base + (ppc * ppc_in_gpc_stride) + addr; | 225 | ppc_in_gpc_base + (ppc * ppc_in_gpc_stride) + addr; |
228 | } | 226 | } |
229 | 227 | ||
230 | /* | ||
231 | * LTC pri addressing | ||
232 | */ | ||
233 | static inline bool pri_is_ltc_addr(u32 addr) | ||
234 | { | ||
235 | return ((addr >= ltc_pltcg_base_v()) && (addr < ltc_pltcg_extent_v())); | ||
236 | } | ||
237 | |||
238 | enum ctxsw_addr_type { | 228 | enum ctxsw_addr_type { |
239 | CTXSW_ADDR_TYPE_SYS = 0, | 229 | CTXSW_ADDR_TYPE_SYS = 0, |
240 | CTXSW_ADDR_TYPE_GPC = 1, | 230 | CTXSW_ADDR_TYPE_GPC = 1, |
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 5bba5d9c..ee63489e 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -52,7 +52,6 @@ | |||
52 | #include <nvgpu/hw/gk20a/hw_pram_gk20a.h> | 52 | #include <nvgpu/hw/gk20a/hw_pram_gk20a.h> |
53 | #include <nvgpu/hw/gk20a/hw_mc_gk20a.h> | 53 | #include <nvgpu/hw/gk20a/hw_mc_gk20a.h> |
54 | #include <nvgpu/hw/gk20a/hw_flush_gk20a.h> | 54 | #include <nvgpu/hw/gk20a/hw_flush_gk20a.h> |
55 | #include <nvgpu/hw/gk20a/hw_ltc_gk20a.h> | ||
56 | 55 | ||
57 | /* | 56 | /* |
58 | * GPU mapping life cycle | 57 | * GPU mapping life cycle |