1#ifndef __NV04_INSTMEM_H__
2#define __NV04_INSTMEM_H__
3
4#include <core/gpuobj.h>
5#include <core/ramht.h>
6#include <core/mm.h>
7
8#include "priv.h"
9
10extern struct nouveau_instobj_impl nv04_instobj_oclass;
11
12struct nv04_instmem_priv {
13 struct nouveau_instmem base;
14
15#ifdef __NetBSD__
16 bus_space_tag_t iomemt;
17 bus_space_handle_t iomemh;
18 bus_size_t iomemsz;
19#else
20 void __iomem *iomem;
21#endif
22 struct nouveau_mm heap;
23
24 struct nouveau_gpuobj *vbios;
25 struct nouveau_ramht *ramht;
26 struct nouveau_gpuobj *ramro;
27 struct nouveau_gpuobj *ramfc;
28};
29
30static inline struct nv04_instmem_priv *
31nv04_instmem(void *obj)
32{
33 return (void *)nouveau_instmem(obj);
34}
35
36struct nv04_instobj_priv {
37 struct nouveau_instobj base;
38 struct nouveau_mm_node *mem;
39};
40
41void nv04_instmem_dtor(struct nouveau_object *);
42
43int nv04_instmem_alloc(struct nouveau_instmem *, struct nouveau_object *,
44 u32 size, u32 align, struct nouveau_object **pobject);
45
46#endif
47