From 2d454db04fcc0c03e05b4665831e5780240d79b8 Mon Sep 17 00:00:00 2001 From: Mahantesh Kumbar Date: Wed, 11 Jul 2018 15:00:45 +0530 Subject: 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 Reviewed-on: https://git-master.nvidia.com/r/1776070 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/pmu_gk20a.c') 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) return 0; } -int gk20a_pmu_queue_head(struct nvgpu_pmu *pmu, struct pmu_queue *queue, +int gk20a_pmu_queue_head(struct gk20a *g, struct nvgpu_falcon_queue *queue, u32 *head, bool set) { - struct gk20a *g = gk20a_from_pmu(pmu); u32 queue_head_size = 0; 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, return 0; } -int gk20a_pmu_queue_tail(struct nvgpu_pmu *pmu, struct pmu_queue *queue, +int gk20a_pmu_queue_tail(struct gk20a *g, struct nvgpu_falcon_queue *queue, u32 *tail, bool set) { - struct gk20a *g = gk20a_from_pmu(pmu); u32 queue_tail_size = 0; if (g->ops.pmu.pmu_get_queue_tail_size) @@ -692,7 +690,7 @@ bool gk20a_pmu_is_interrupted(struct nvgpu_pmu *pmu) void gk20a_pmu_isr(struct gk20a *g) { struct nvgpu_pmu *pmu = &g->pmu; - struct pmu_queue *queue; + struct nvgpu_falcon_queue *queue; u32 intr, mask; bool recheck = false; @@ -749,9 +747,10 @@ void gk20a_pmu_isr(struct gk20a *g) if (recheck) { queue = &pmu->queue[PMU_MESSAGE_QUEUE]; - if (!nvgpu_pmu_queue_is_empty(pmu, queue)) + if (!nvgpu_flcn_queue_is_empty(pmu->flcn, queue)) { gk20a_writel(g, pwr_falcon_irqsset_r(), pwr_falcon_irqsset_swgen0_set_f()); + } } nvgpu_mutex_release(&pmu->isr_mutex); -- cgit v1.2.2