1 #ifndef __NVKM_FB_PRIV_H__
2 #define __NVKM_FB_PRIV_H__
3 #include <subdev/fb.h>
4 struct nvkm_bios;
5 
6 #define nvkm_fb_create(p,e,c,d)                                             \
7 	nvkm_fb_create_((p), (e), (c), sizeof(**d), (void **)d)
8 #define nvkm_fb_destroy(p) ({                                               \
9 	struct nvkm_fb *_fb = (p);                                          \
10 	_nvkm_fb_dtor(nv_object(_fb));                                      \
11 })
12 #define nvkm_fb_init(p) ({                                                  \
13 	struct nvkm_fb *_fb = (p);                                          \
14 	_nvkm_fb_init(nv_object(_fb));                                      \
15 })
16 #define nvkm_fb_fini(p,s) ({                                                \
17 	struct nvkm_fb *_fb = (p);                                          \
18 	_nvkm_fb_fini(nv_object(_fb), (s));                                 \
19 })
20 
21 int nvkm_fb_create_(struct nvkm_object *, struct nvkm_object *,
22 		       struct nvkm_oclass *, int, void **);
23 void _nvkm_fb_dtor(struct nvkm_object *);
24 int  _nvkm_fb_init(struct nvkm_object *);
25 int  _nvkm_fb_fini(struct nvkm_object *, bool);
26 
27 struct nvkm_fb_impl {
28 	struct nvkm_oclass base;
29 	int (*ram_new)(struct nvkm_fb *, struct nvkm_ram **);
30 	bool (*memtype)(struct nvkm_fb *, u32);
31 };
32 
33 bool nv04_fb_memtype_valid(struct nvkm_fb *, u32 memtype);
34 bool nv50_fb_memtype_valid(struct nvkm_fb *, u32 memtype);
35 
36 int  nvkm_fb_bios_memtype(struct nvkm_bios *);
37 #endif
38