diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/common/falcon/falcon.c | 28 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/falcon.h | 8 |
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 | ||
222 | int 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 | |||
236 | int 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 | |||
222 | int nvgpu_flcn_copy_from_dmem(struct nvgpu_falcon *flcn, | 250 | int 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 | ||
224 | struct nvgpu_falcon_ops { | 228 | struct nvgpu_falcon_ops { |
@@ -283,6 +287,10 @@ bool nvgpu_flcn_get_mem_scrubbing_status(struct nvgpu_falcon *flcn); | |||
283 | int nvgpu_flcn_mem_scrub_wait(struct nvgpu_falcon *flcn); | 287 | int nvgpu_flcn_mem_scrub_wait(struct nvgpu_falcon *flcn); |
284 | bool nvgpu_flcn_get_cpu_halted_status(struct nvgpu_falcon *flcn); | 288 | bool nvgpu_flcn_get_cpu_halted_status(struct nvgpu_falcon *flcn); |
285 | bool nvgpu_flcn_get_idle_status(struct nvgpu_falcon *flcn); | 289 | bool nvgpu_flcn_get_idle_status(struct nvgpu_falcon *flcn); |
290 | int nvgpu_flcn_copy_from_emem(struct nvgpu_falcon *flcn, | ||
291 | u32 src, u8 *dst, u32 size, u8 port); | ||
292 | int nvgpu_flcn_copy_to_emem(struct nvgpu_falcon *flcn, | ||
293 | u32 dst, u8 *src, u32 size, u8 port); | ||
286 | int nvgpu_flcn_copy_from_dmem(struct nvgpu_falcon *flcn, | 294 | int 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); |
288 | int nvgpu_flcn_copy_to_dmem(struct nvgpu_falcon *flcn, | 296 | int nvgpu_flcn_copy_to_dmem(struct nvgpu_falcon *flcn, |