summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r--drivers/gpu/nvgpu/common/falcon/falcon.c28
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/falcon.h8
2 files changed, 36 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/common/falcon/falcon.c b/drivers/gpu/nvgpu/common/falcon/falcon.c
index a0f88de3..b1d6558a 100644
--- a/drivers/gpu/nvgpu/common/falcon/falcon.c
+++ b/drivers/gpu/nvgpu/common/falcon/falcon.c
@@ -219,6 +219,34 @@ bool nvgpu_flcn_get_idle_status(struct nvgpu_falcon *flcn)
219 return status; 219 return status;
220} 220}
221 221
222int nvgpu_flcn_copy_from_emem(struct nvgpu_falcon *flcn,
223 u32 src, u8 *dst, u32 size, u8 port)
224{
225 struct nvgpu_falcon_engine_dependency_ops *flcn_dops =
226 &flcn->flcn_engine_dep_ops;
227 int status = -EINVAL;
228
229 if (flcn_dops->copy_from_emem != NULL) {
230 status = flcn_dops->copy_from_emem(flcn, src, dst, size, port);
231 }
232
233 return status;
234}
235
236int nvgpu_flcn_copy_to_emem(struct nvgpu_falcon *flcn,
237 u32 dst, u8 *src, u32 size, u8 port)
238{
239 struct nvgpu_falcon_engine_dependency_ops *flcn_dops =
240 &flcn->flcn_engine_dep_ops;
241 int status = -EINVAL;
242
243 if (flcn_dops->copy_to_emem != NULL) {
244 status = flcn_dops->copy_to_emem(flcn, dst, src, size, port);
245 }
246
247 return status;
248}
249
222int nvgpu_flcn_copy_from_dmem(struct nvgpu_falcon *flcn, 250int nvgpu_flcn_copy_from_dmem(struct nvgpu_falcon *flcn,
223 u32 src, u8 *dst, u32 size, u8 port) 251 u32 src, u8 *dst, u32 size, u8 port)
224{ 252{
diff --git a/drivers/gpu/nvgpu/include/nvgpu/falcon.h b/drivers/gpu/nvgpu/include/nvgpu/falcon.h
index 9f8c97ea..cf15061d 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/falcon.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/falcon.h
@@ -219,6 +219,10 @@ struct nvgpu_falcon_engine_dependency_ops {
219 int (*queue_tail)(struct gk20a *g, struct nvgpu_falcon_queue *queue, 219 int (*queue_tail)(struct gk20a *g, struct nvgpu_falcon_queue *queue,
220 u32 *tail, bool set); 220 u32 *tail, bool set);
221 void (*msgq_tail)(struct gk20a *g, u32 *tail, bool set); 221 void (*msgq_tail)(struct gk20a *g, u32 *tail, bool set);
222 int (*copy_from_emem)(struct nvgpu_falcon *flcn, u32 src, u8 *dst,
223 u32 size, u8 port);
224 int (*copy_to_emem)(struct nvgpu_falcon *flcn, u32 dst, u8 *src,
225 u32 size, u8 port);
222}; 226};
223 227
224struct nvgpu_falcon_ops { 228struct nvgpu_falcon_ops {
@@ -283,6 +287,10 @@ bool nvgpu_flcn_get_mem_scrubbing_status(struct nvgpu_falcon *flcn);
283int nvgpu_flcn_mem_scrub_wait(struct nvgpu_falcon *flcn); 287int nvgpu_flcn_mem_scrub_wait(struct nvgpu_falcon *flcn);
284bool nvgpu_flcn_get_cpu_halted_status(struct nvgpu_falcon *flcn); 288bool nvgpu_flcn_get_cpu_halted_status(struct nvgpu_falcon *flcn);
285bool nvgpu_flcn_get_idle_status(struct nvgpu_falcon *flcn); 289bool nvgpu_flcn_get_idle_status(struct nvgpu_falcon *flcn);
290int nvgpu_flcn_copy_from_emem(struct nvgpu_falcon *flcn,
291 u32 src, u8 *dst, u32 size, u8 port);
292int nvgpu_flcn_copy_to_emem(struct nvgpu_falcon *flcn,
293 u32 dst, u8 *src, u32 size, u8 port);
286int nvgpu_flcn_copy_from_dmem(struct nvgpu_falcon *flcn, 294int nvgpu_flcn_copy_from_dmem(struct nvgpu_falcon *flcn,
287 u32 src, u8 *dst, u32 size, u8 port); 295 u32 src, u8 *dst, u32 size, u8 port);
288int nvgpu_flcn_copy_to_dmem(struct nvgpu_falcon *flcn, 296int nvgpu_flcn_copy_to_dmem(struct nvgpu_falcon *flcn,