| #ifndef __NVKM_INSTMEM_H__ |
| #define __NVKM_INSTMEM_H__ |
| static inline struct nvkm_instobj * |
| #if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA |
| if (unlikely(!nv_iclass(obj, NV_MEMOBJ_CLASS))) |
| nv_assert("BAD CAST -> NvMemObj, %08x", nv_hclass(obj)); |
| int (*alloc)(struct nvkm_instmem *, struct nvkm_object *, |
| u32 size, u32 align, struct nvkm_object **); |
| static inline struct nvkm_instmem * |
| /* nv04/nv40 impls need to create objects in their constructor, |
| * which is before the subdev pointer is valid |
| if (nv_iclass(obj, NV_SUBDEV_CLASS) && |
| nv_subidx(obj) == NVDEV_SUBDEV_INSTMEM) |
| return (void *)nvkm_subdev(obj, NVDEV_SUBDEV_INSTMEM); |
| extern struct nvkm_oclass *nv04_instmem_oclass; |
| extern struct nvkm_oclass *nv40_instmem_oclass; |
| extern struct nvkm_oclass *nv50_instmem_oclass; |
| extern struct nvkm_oclass *gk20a_instmem_oclass; |