diff options
author | Mahantesh Kumbar <mkumbar@nvidia.com> | 2018-07-11 05:30:45 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-07-31 04:25:41 -0400 |
commit | 2d454db04fcc0c03e05b4665831e5780240d79b8 (patch) | |
tree | c18fd4bc302ea68e57e1e1d95c0f253e800bc043 /drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |
parent | d32692ae2427693daf85b3c7b4e24cd36471dec6 (diff) |
gpu: nvgpu: falcon queue support
-Renamed "struct pmu_queue" to "struct
nvgpu_falcon_queue" & moved to falcon.h
-Renamed pmu_queue_* functions to flcn_queue_* &
moved to new file falcon_queue.c
-Created ops for queue functions in struct
nvgpu_falcon_queue to support different queue
types like DMEM/FB-Q.
-Created ops in nvgpu_falcon_engine_dependency_ops
to add engine specific queue functionality & assigned
correct HAL functions in hal*.c file.
-Made changes in dependent functions as needed to replace
struct pmu_queue & calling queue functions using
nvgpu_falcon_queue data structure.
-Replaced input param "struct nvgpu_pmu *pmu" with
"struct gk20a *g" for pmu ops pmu_queue_head/pmu_queue_tail
& also for functions gk20a_pmu_queue_head()/
gk20a_pmu_queue_tail().
-Made changes in nvgpu_pmu_queue_init() to use nvgpu_falcon_queue
for PMU queue.
-Modified Makefile to include falcon_queue.o
-Modified Makefile.sources to include falcon_queue.c
Change-Id: I956328f6631b7154267fd5a29eaa1826190d99d1
Signed-off-by: Mahantesh Kumbar <mkumbar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1776070
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/pmu_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c index 11db5b23..bf4673bf 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |||
@@ -377,10 +377,9 @@ int gk20a_pmu_mutex_release(struct nvgpu_pmu *pmu, u32 id, u32 *token) | |||
377 | return 0; | 377 | return 0; |
378 | } | 378 | } |
379 | 379 | ||
380 | int gk20a_pmu_queue_head(struct nvgpu_pmu *pmu, struct pmu_queue *queue, | 380 | int gk20a_pmu_queue_head(struct gk20a *g, struct nvgpu_falcon_queue *queue, |
381 | u32 *head, bool set) | 381 | u32 *head, bool set) |
382 | { | 382 | { |
383 | struct gk20a *g = gk20a_from_pmu(pmu); | ||
384 | u32 queue_head_size = 0; | 383 | u32 queue_head_size = 0; |
385 | 384 | ||
386 | if (g->ops.pmu.pmu_get_queue_head_size) | 385 | if (g->ops.pmu.pmu_get_queue_head_size) |
@@ -414,10 +413,9 @@ int gk20a_pmu_queue_head(struct nvgpu_pmu *pmu, struct pmu_queue *queue, | |||
414 | return 0; | 413 | return 0; |
415 | } | 414 | } |
416 | 415 | ||
417 | int gk20a_pmu_queue_tail(struct nvgpu_pmu *pmu, struct pmu_queue *queue, | 416 | int gk20a_pmu_queue_tail(struct gk20a *g, struct nvgpu_falcon_queue *queue, |
418 | u32 *tail, bool set) | 417 | u32 *tail, bool set) |
419 | { | 418 | { |
420 | struct gk20a *g = gk20a_from_pmu(pmu); | ||
421 | u32 queue_tail_size = 0; | 419 | u32 queue_tail_size = 0; |
422 | 420 | ||
423 | if (g->ops.pmu.pmu_get_queue_tail_size) | 421 | if (g->ops.pmu.pmu_get_queue_tail_size) |
@@ -692,7 +690,7 @@ bool gk20a_pmu_is_interrupted(struct nvgpu_pmu *pmu) | |||
692 | void gk20a_pmu_isr(struct gk20a *g) | 690 | void gk20a_pmu_isr(struct gk20a *g) |
693 | { | 691 | { |
694 | struct nvgpu_pmu *pmu = &g->pmu; | 692 | struct nvgpu_pmu *pmu = &g->pmu; |
695 | struct pmu_queue *queue; | 693 | struct nvgpu_falcon_queue *queue; |
696 | u32 intr, mask; | 694 | u32 intr, mask; |
697 | bool recheck = false; | 695 | bool recheck = false; |
698 | 696 | ||
@@ -749,9 +747,10 @@ void gk20a_pmu_isr(struct gk20a *g) | |||
749 | 747 | ||
750 | if (recheck) { | 748 | if (recheck) { |
751 | queue = &pmu->queue[PMU_MESSAGE_QUEUE]; | 749 | queue = &pmu->queue[PMU_MESSAGE_QUEUE]; |
752 | if (!nvgpu_pmu_queue_is_empty(pmu, queue)) | 750 | if (!nvgpu_flcn_queue_is_empty(pmu->flcn, queue)) { |
753 | gk20a_writel(g, pwr_falcon_irqsset_r(), | 751 | gk20a_writel(g, pwr_falcon_irqsset_r(), |
754 | pwr_falcon_irqsset_swgen0_set_f()); | 752 | pwr_falcon_irqsset_swgen0_set_f()); |
753 | } | ||
755 | } | 754 | } |
756 | 755 | ||
757 | nvgpu_mutex_release(&pmu->isr_mutex); | 756 | nvgpu_mutex_release(&pmu->isr_mutex); |