summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/flcn_gk20a.c
diff options
context:
space:
mode:
authorMahantesh Kumbar <mkumbar@nvidia.com>2017-06-15 12:40:43 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-06-23 04:14:23 -0400
commit94cb4b635fba4c01b58f36a6d3384db729e4c9f6 (patch)
treefaa4d026519d04005204c172f1b708e5c1188ab2 /drivers/gpu/nvgpu/gk20a/flcn_gk20a.c
parentbe04b9b1b56d6dd478fe521277c079367c03f39d (diff)
gpu: nvgpu: use nvgpu_flcn_* interfaces
- set nvgpu_flcn_reset() to point to gk20a_pmu_reset() - set PMU interrupt using nvgpu_flcn_enable_irq() - replace pmu_idle with nvgpu_flcn_wait_idle() JIRA NVGPU-57 Change-Id: I50d0310ae78ad266da3c1e662f1598d61ff7abb6 Signed-off-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-on: http://git-master/r/1469478 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/flcn_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/flcn_gk20a.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/flcn_gk20a.c b/drivers/gpu/nvgpu/gk20a/flcn_gk20a.c
index 9568b979..0b140802 100644
--- a/drivers/gpu/nvgpu/gk20a/flcn_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/flcn_gk20a.c
@@ -107,6 +107,25 @@ static bool gk20a_is_falcon_scrubbing_done(struct nvgpu_falcon *flcn)
107 return status; 107 return status;
108} 108}
109 109
110static void gk20a_falcon_engine_dependency_ops(struct nvgpu_falcon *flcn)
111{
112 struct nvgpu_falcon_engine_dependency_ops *flcn_eng_dep_ops =
113 &flcn->flcn_engine_dep_ops;
114
115 switch (flcn->flcn_id) {
116 case FALCON_ID_PMU:
117 flcn_eng_dep_ops->reset_eng = gk20a_pmu_reset;
118 break;
119 default:
120 /* NULL assignment make sure
121 * CPU hard reset in gk20a_flcn_reset() gets execute
122 * if falcon doesn't need specific reset implementation
123 */
124 flcn_eng_dep_ops->reset_eng = NULL;
125 break;
126 }
127}
128
110static void gk20a_falcon_ops(struct nvgpu_falcon *flcn) 129static void gk20a_falcon_ops(struct nvgpu_falcon *flcn)
111{ 130{
112 struct nvgpu_falcon_ops *flcn_ops = &flcn->flcn_ops; 131 struct nvgpu_falcon_ops *flcn_ops = &flcn->flcn_ops;
@@ -116,6 +135,8 @@ static void gk20a_falcon_ops(struct nvgpu_falcon *flcn)
116 flcn_ops->is_falcon_cpu_halted = gk20a_is_falcon_cpu_halted; 135 flcn_ops->is_falcon_cpu_halted = gk20a_is_falcon_cpu_halted;
117 flcn_ops->is_falcon_idle = gk20a_is_falcon_idle; 136 flcn_ops->is_falcon_idle = gk20a_is_falcon_idle;
118 flcn_ops->is_falcon_scrubbing_done = gk20a_is_falcon_scrubbing_done; 137 flcn_ops->is_falcon_scrubbing_done = gk20a_is_falcon_scrubbing_done;
138
139 gk20a_falcon_engine_dependency_ops(flcn);
119} 140}
120 141
121static void gk20a_falcon_hal_sw_init(struct nvgpu_falcon *flcn) 142static void gk20a_falcon_hal_sw_init(struct nvgpu_falcon *flcn)