diff options
author | Sunny He <suhe@nvidia.com> | 2017-06-28 20:41:55 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-07-24 02:35:04 -0400 |
commit | 2b582c5141752ff272c5d059b56433155bc3985a (patch) | |
tree | 1874c77484fb0bf0e927378940e1a6f140390182 /drivers/gpu/nvgpu/gp10b | |
parent | 907fcae63816b68e43e07e3d7abaad87954b8326 (diff) |
gpu: nvgpu: Reorg priv_ring HAL initialization
Reorganize HAL initialization to remove inheritance and construct
the gpu_ops struct at compile time. This patch only covers the
priv_ring sub-module of the gpu_ops struct.
Perform HAL function assignments in hal_gxxxx.c through the
population of a chip-specific copy of gpu_ops.
Jira NVGPU-74
Change-Id: I9ebf27619f771262e5dc398b1200d6c19d6aef16
Signed-off-by: Sunny He <suhe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1514102
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Alex Waterman <alexw@nvidia.com>
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b')
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/hal_gp10b.c | 6 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c | 7 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.h | 4 |
3 files changed, 8 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c index fab1c238..4479be42 100644 --- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c | |||
@@ -266,6 +266,9 @@ static const struct gpu_ops gp10b_ops = { | |||
266 | .falcon = { | 266 | .falcon = { |
267 | .falcon_hal_sw_init = gk20a_falcon_hal_sw_init, | 267 | .falcon_hal_sw_init = gk20a_falcon_hal_sw_init, |
268 | }, | 268 | }, |
269 | .priv_ring = { | ||
270 | .isr = gp10b_priv_ring_isr, | ||
271 | }, | ||
269 | .chip_init_gpu_characteristics = gp10b_init_gpu_characteristics, | 272 | .chip_init_gpu_characteristics = gp10b_init_gpu_characteristics, |
270 | .get_litter_value = gp10b_get_litter_value, | 273 | .get_litter_value = gp10b_get_litter_value, |
271 | }; | 274 | }; |
@@ -288,6 +291,8 @@ int gp10b_init_hal(struct gk20a *g) | |||
288 | #endif | 291 | #endif |
289 | gops->falcon = gp10b_ops.falcon; | 292 | gops->falcon = gp10b_ops.falcon; |
290 | 293 | ||
294 | gops->priv_ring = gp10b_ops.priv_ring; | ||
295 | |||
291 | /* Lone Functions */ | 296 | /* Lone Functions */ |
292 | gops->chip_init_gpu_characteristics = | 297 | gops->chip_init_gpu_characteristics = |
293 | gp10b_ops.chip_init_gpu_characteristics; | 298 | gp10b_ops.chip_init_gpu_characteristics; |
@@ -332,7 +337,6 @@ int gp10b_init_hal(struct gk20a *g) | |||
332 | #endif | 337 | #endif |
333 | 338 | ||
334 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; | 339 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; |
335 | gp10b_init_priv_ring(gops); | ||
336 | gp10b_init_gr(gops); | 340 | gp10b_init_gr(gops); |
337 | gp10b_init_fecs_trace_ops(gops); | 341 | gp10b_init_fecs_trace_ops(gops); |
338 | gp10b_init_fb(gops); | 342 | gp10b_init_fb(gops); |
diff --git a/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c b/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c index 8aaa7bff..0ca29809 100644 --- a/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include <nvgpu/hw/gp10b/hw_pri_ringstation_sys_gp10b.h> | 27 | #include <nvgpu/hw/gp10b/hw_pri_ringstation_sys_gp10b.h> |
28 | #include <nvgpu/hw/gp10b/hw_pri_ringstation_gpc_gp10b.h> | 28 | #include <nvgpu/hw/gp10b/hw_pri_ringstation_gpc_gp10b.h> |
29 | 29 | ||
30 | static void gp10b_priv_ring_isr(struct gk20a *g) | 30 | void gp10b_priv_ring_isr(struct gk20a *g) |
31 | { | 31 | { |
32 | u32 status0, status1; | 32 | u32 status0, status1; |
33 | u32 cmd; | 33 | u32 cmd; |
@@ -76,8 +76,3 @@ static void gp10b_priv_ring_isr(struct gk20a *g) | |||
76 | if (retry <= 0) | 76 | if (retry <= 0) |
77 | nvgpu_warn(g, "priv ringmaster cmd ack too many retries"); | 77 | nvgpu_warn(g, "priv ringmaster cmd ack too many retries"); |
78 | } | 78 | } |
79 | |||
80 | void gp10b_init_priv_ring(struct gpu_ops *gops) | ||
81 | { | ||
82 | gops->priv_ring.isr = gp10b_priv_ring_isr; | ||
83 | } | ||
diff --git a/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.h b/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.h index acd0857f..e12a2f27 100644 --- a/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.h +++ b/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.h | |||
@@ -15,8 +15,8 @@ | |||
15 | #ifndef __PRIV_RING_GP10B_H__ | 15 | #ifndef __PRIV_RING_GP10B_H__ |
16 | #define __PRIV_RING_GP10B_H__ | 16 | #define __PRIV_RING_GP10B_H__ |
17 | 17 | ||
18 | struct gpu_ops; | 18 | struct gk20a; |
19 | 19 | ||
20 | void gp10b_init_priv_ring(struct gpu_ops *gops); | 20 | void gp10b_priv_ring_isr(struct gk20a *g); |
21 | 21 | ||
22 | #endif /*__PRIV_RING_GP10B_H__*/ | 22 | #endif /*__PRIV_RING_GP10B_H__*/ |