| .. | .. |
|---|
| 1 | | -/* SPDX-License-Identifier: GPL-2.0 */ |
|---|
| 1 | +/* SPDX-License-Identifier: MIT */ |
|---|
| 2 | 2 | #ifndef __NVKM_MEMORY_H__ |
|---|
| 3 | 3 | #define __NVKM_MEMORY_H__ |
|---|
| 4 | 4 | #include <core/os.h> |
|---|
| .. | .. |
|---|
| 29 | 29 | void *(*dtor)(struct nvkm_memory *); |
|---|
| 30 | 30 | enum nvkm_memory_target (*target)(struct nvkm_memory *); |
|---|
| 31 | 31 | u8 (*page)(struct nvkm_memory *); |
|---|
| 32 | + u64 (*bar2)(struct nvkm_memory *); |
|---|
| 32 | 33 | u64 (*addr)(struct nvkm_memory *); |
|---|
| 33 | 34 | u64 (*size)(struct nvkm_memory *); |
|---|
| 34 | 35 | void (*boot)(struct nvkm_memory *, struct nvkm_vmm *); |
|---|
| .. | .. |
|---|
| 56 | 57 | |
|---|
| 57 | 58 | #define nvkm_memory_target(p) (p)->func->target(p) |
|---|
| 58 | 59 | #define nvkm_memory_page(p) (p)->func->page(p) |
|---|
| 60 | +#define nvkm_memory_bar2(p) (p)->func->bar2(p) |
|---|
| 59 | 61 | #define nvkm_memory_addr(p) (p)->func->addr(p) |
|---|
| 60 | 62 | #define nvkm_memory_size(p) (p)->func->size(p) |
|---|
| 61 | 63 | #define nvkm_memory_boot(p,v) (p)->func->boot((p),(v)) |
|---|
| .. | .. |
|---|
| 82 | 84 | nvkm_wo32((o), __a + 4, upper_32_bits(__d)); \ |
|---|
| 83 | 85 | } while(0) |
|---|
| 84 | 86 | |
|---|
| 87 | +#define nvkm_robj(o,a,p,s) do { \ |
|---|
| 88 | + u32 _addr = (a), _size = (s) >> 2, *_data = (void *)(p); \ |
|---|
| 89 | + while (_size--) { \ |
|---|
| 90 | + *(_data++) = nvkm_ro32((o), _addr); \ |
|---|
| 91 | + _addr += 4; \ |
|---|
| 92 | + } \ |
|---|
| 93 | +} while(0) |
|---|
| 94 | + |
|---|
| 95 | +#define nvkm_wobj(o,a,p,s) do { \ |
|---|
| 96 | + u32 _addr = (a), _size = (s) >> 2, *_data = (void *)(p); \ |
|---|
| 97 | + while (_size--) { \ |
|---|
| 98 | + nvkm_wo32((o), _addr, *(_data++)); \ |
|---|
| 99 | + _addr += 4; \ |
|---|
| 100 | + } \ |
|---|
| 101 | +} while(0) |
|---|
| 102 | + |
|---|
| 85 | 103 | #define nvkm_fill(t,s,o,a,d,c) do { \ |
|---|
| 86 | 104 | u64 _a = (a), _c = (c), _d = (d), _o = _a >> s, _s = _c << s; \ |
|---|
| 87 | 105 | u##t __iomem *_m = nvkm_kmap(o); \ |
|---|