]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/nouveau/core/memory: add macros to read/write blocks from objects
authorBen Skeggs <bskeggs@redhat.com>
Tue, 14 Jan 2020 20:34:22 +0000 (06:34 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 15 Jan 2020 00:50:29 +0000 (10:50 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/include/nvkm/core/memory.h

index b23bf6109f2d28a634df13382707e1bcb9813492..74d3f1a809d7ca9c4d6364ea470107120583e2be 100644 (file)
@@ -84,6 +84,22 @@ void nvkm_memory_tags_put(struct nvkm_memory *, struct nvkm_device *,
        nvkm_wo32((o), __a + 4, upper_32_bits(__d));                           \
 } while(0)
 
+#define nvkm_robj(o,a,p,s) do {                                                \
+       u32 _addr = (a), _size = (s) >> 2, *_data = (void *)(p);               \
+       while (_size--) {                                                      \
+               *(_data++) = nvkm_ro32((o), _addr);                            \
+               _addr += 4;                                                    \
+       }                                                                      \
+} while(0)
+
+#define nvkm_wobj(o,a,p,s) do {                                                \
+       u32 _addr = (a), _size = (s) >> 2, *_data = (void *)(p);               \
+       while (_size--) {                                                      \
+               nvkm_wo32((o), _addr, *(_data++));                             \
+               _addr += 4;                                                    \
+       }                                                                      \
+} while(0)
+
 #define nvkm_fill(t,s,o,a,d,c) do {                                            \
        u64 _a = (a), _c = (c), _d = (d), _o = _a >> s, _s = _c << s;          \
        u##t __iomem *_m = nvkm_kmap(o);                                       \