1118611Snjl/* $NetBSD: priv.h,v 1.3 2021/12/18 23:45:40 riastradh Exp $ */ 2118611Snjl 3118611Snjl/* SPDX-License-Identifier: MIT */ 4118611Snjl#ifndef __NVKM_INSTMEM_PRIV_H__ 5118611Snjl#define __NVKM_INSTMEM_PRIV_H__ 6118611Snjl#define nvkm_instmem(p) container_of((p), struct nvkm_instmem, subdev) 7118611Snjl#include <subdev/instmem.h> 8118611Snjl 9118611Snjlstruct nvkm_instmem_func { 10118611Snjl void *(*dtor)(struct nvkm_instmem *); 11118611Snjl int (*oneinit)(struct nvkm_instmem *); 12193529Sjkim void (*fini)(struct nvkm_instmem *); 13118611Snjl u32 (*rd32)(struct nvkm_instmem *, u32 addr); 14118611Snjl void (*wr32)(struct nvkm_instmem *, u32 addr, u32 data); 15118611Snjl int (*memory_new)(struct nvkm_instmem *, u32 size, u32 align, 16118611Snjl bool zero, struct nvkm_memory **); 17118611Snjl bool zero; 18118611Snjl}; 19118611Snjl 20118611Snjlvoid nvkm_instmem_ctor(const struct nvkm_instmem_func *, struct nvkm_device *, 21118611Snjl int index, struct nvkm_instmem *); 22118611Snjlvoid nvkm_instmem_boot(struct nvkm_instmem *); 23118611Snjl 24118611Snjl#include <core/memory.h> 25118611Snjl 26118611Snjlstruct nvkm_instobj { 27118611Snjl struct nvkm_memory memory; 28118611Snjl struct list_head head; 29118611Snjl u32 *suspend; 30118611Snjl}; 31118611Snjl 32118611Snjlvoid nvkm_instobj_ctor(const struct nvkm_memory_func *func, 33118611Snjl struct nvkm_instmem *, struct nvkm_instobj *); 34118611Snjlvoid nvkm_instobj_dtor(struct nvkm_instmem *, struct nvkm_instobj *); 35118611Snjl#endif 36118611Snjl