Add nvkm_falcon_read_dmem() to read part of a falcon's DMEM into a CPU-accessible buffer.
Signed-off-by: Alexandre Courbot <acour...@nvidia.com> --- drm/nouveau/include/nvkm/core/falcon.h | 1 + drm/nouveau/nvkm/core/falcon.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 0 deletions(-) diff --git a/drm/nouveau/include/nvkm/core/falcon.h b/drm/nouveau/include/nvkm/core/falcon.h index 530119847163..954296f0085b 100644 --- a/drm/nouveau/include/nvkm/core/falcon.h +++ b/drm/nouveau/include/nvkm/core/falcon.h @@ -46,5 +46,6 @@ extern const char *nvkm_falcon_name[]; void nvkm_falcon_load_imem(struct nvkm_device *, u32, void *, u32, u32, u32); void nvkm_falcon_load_dmem(struct nvkm_device *, u32, void *, u32, u32); +void nvkm_falcon_read_dmem(struct nvkm_device *, u32, u32, u32, void *); #endif diff --git a/drm/nouveau/nvkm/core/falcon.c b/drm/nouveau/nvkm/core/falcon.c index 806de4088a29..cc6c2808b53b 100644 --- a/drm/nouveau/nvkm/core/falcon.c +++ b/drm/nouveau/nvkm/core/falcon.c @@ -60,3 +60,13 @@ nvkm_falcon_load_dmem(struct nvkm_device *device, u32 base, void *data, nvkm_wr32(device, base + 0x1c4, ((u32 *)data)[i]); } +void +nvkm_falcon_read_dmem(struct nvkm_device *device, u32 base, u32 start, u32 size, + void *data) +{ + int i; + + nvkm_wr32(device, base + 0x1c0, start | (0x1 << 25)); + for (i = 0; i < size / 4; i++) + ((u32 *)data)[i] = nvkm_rd32(device, base + 0x1c4); +} -- git-series 0.8.10 _______________________________________________ Nouveau mailing list Nouveau@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/nouveau