[Nouveau] [PATCH v4 22/33] core: add falcon DMEM read function

Alexandre Courbot acourbot at nvidia.com
Mon Nov 21 08:29:19 UTC 2016


Add nvkm_falcon_read_dmem() to read part of a falcon's DMEM into a
CPU-accessible buffer.

Signed-off-by: Alexandre Courbot <acourbot at 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


More information about the Nouveau mailing list