1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */ 2c39f472eSBen Skeggs #ifndef __NVKM_INSTMEM_PRIV_H__ 3c39f472eSBen Skeggs #define __NVKM_INSTMEM_PRIV_H__ 4b7a2bc18SBen Skeggs #define nvkm_instmem(p) container_of((p), struct nvkm_instmem, subdev) 5c39f472eSBen Skeggs #include <subdev/instmem.h> 6c39f472eSBen Skeggs 7b7a2bc18SBen Skeggs struct nvkm_instmem_func { 8b7a2bc18SBen Skeggs void *(*dtor)(struct nvkm_instmem *); 9b7a2bc18SBen Skeggs int (*oneinit)(struct nvkm_instmem *); 10b7a2bc18SBen Skeggs void (*fini)(struct nvkm_instmem *); 11b7a2bc18SBen Skeggs u32 (*rd32)(struct nvkm_instmem *, u32 addr); 12b7a2bc18SBen Skeggs void (*wr32)(struct nvkm_instmem *, u32 addr, u32 data); 13d8e83994SBen Skeggs int (*memory_new)(struct nvkm_instmem *, u32 size, u32 align, 14d8e83994SBen Skeggs bool zero, struct nvkm_memory **); 15*973b3244SBen Skeggs int (*memory_wrap)(struct nvkm_instmem *, struct nvkm_memory *, struct nvkm_memory **); 16d8e83994SBen Skeggs bool zero; 17c39f472eSBen Skeggs }; 18c39f472eSBen Skeggs 19b7a2bc18SBen Skeggs void nvkm_instmem_ctor(const struct nvkm_instmem_func *, struct nvkm_device *, 20d9691a22SBen Skeggs enum nvkm_subdev_type, int, struct nvkm_instmem *); 21b00b8430SBen Skeggs void nvkm_instmem_boot(struct nvkm_instmem *); 2249814f62SBen Skeggs 2349814f62SBen Skeggs #include <core/memory.h> 2449814f62SBen Skeggs 2549814f62SBen Skeggs struct nvkm_instobj { 2649814f62SBen Skeggs struct nvkm_memory memory; 2749814f62SBen Skeggs struct list_head head; 2849814f62SBen Skeggs u32 *suspend; 2949814f62SBen Skeggs }; 3049814f62SBen Skeggs 3149814f62SBen Skeggs void nvkm_instobj_ctor(const struct nvkm_memory_func *func, 3249814f62SBen Skeggs struct nvkm_instmem *, struct nvkm_instobj *); 3349814f62SBen Skeggs void nvkm_instobj_dtor(struct nvkm_instmem *, struct nvkm_instobj *); 34c39f472eSBen Skeggs #endif 35