1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __NVKM_FB_PRIV_H__ 3 #define __NVKM_FB_PRIV_H__ 4 #define nvkm_fb(p) container_of((p), struct nvkm_fb, subdev) 5 #include <subdev/fb.h> 6 struct nvkm_bios; 7 8 struct nvkm_fb_func { 9 void *(*dtor)(struct nvkm_fb *); 10 int (*oneinit)(struct nvkm_fb *); 11 void (*init)(struct nvkm_fb *); 12 void (*init_page)(struct nvkm_fb *); 13 void (*init_unkn)(struct nvkm_fb *); 14 void (*intr)(struct nvkm_fb *); 15 16 struct { 17 int regions; 18 void (*init)(struct nvkm_fb *, int i, u32 addr, u32 size, 19 u32 pitch, u32 flags, struct nvkm_fb_tile *); 20 void (*comp)(struct nvkm_fb *, int i, u32 size, u32 flags, 21 struct nvkm_fb_tile *); 22 void (*fini)(struct nvkm_fb *, int i, struct nvkm_fb_tile *); 23 void (*prog)(struct nvkm_fb *, int i, struct nvkm_fb_tile *); 24 } tile; 25 26 int (*ram_new)(struct nvkm_fb *, struct nvkm_ram **); 27 28 bool (*memtype_valid)(struct nvkm_fb *, u32 memtype); 29 }; 30 31 void nvkm_fb_ctor(const struct nvkm_fb_func *, struct nvkm_device *device, 32 int index, struct nvkm_fb *); 33 int nvkm_fb_new_(const struct nvkm_fb_func *, struct nvkm_device *device, 34 int index, struct nvkm_fb **); 35 int nvkm_fb_bios_memtype(struct nvkm_bios *); 36 37 bool nv04_fb_memtype_valid(struct nvkm_fb *, u32 memtype); 38 39 void nv10_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size, 40 u32 pitch, u32 flags, struct nvkm_fb_tile *); 41 void nv10_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *); 42 void nv10_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *); 43 44 void nv20_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size, 45 u32 pitch, u32 flags, struct nvkm_fb_tile *); 46 void nv20_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *); 47 void nv20_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *); 48 49 void nv30_fb_init(struct nvkm_fb *); 50 void nv30_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size, 51 u32 pitch, u32 flags, struct nvkm_fb_tile *); 52 53 void nv40_fb_tile_comp(struct nvkm_fb *, int i, u32 size, u32 flags, 54 struct nvkm_fb_tile *); 55 56 void nv41_fb_init(struct nvkm_fb *); 57 void nv41_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *); 58 59 void nv44_fb_init(struct nvkm_fb *); 60 void nv44_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *); 61 62 void nv46_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size, 63 u32 pitch, u32 flags, struct nvkm_fb_tile *); 64 65 int gf100_fb_oneinit(struct nvkm_fb *); 66 void gf100_fb_init_page(struct nvkm_fb *); 67 bool gf100_fb_memtype_valid(struct nvkm_fb *, u32); 68 69 void gm200_fb_init_page(struct nvkm_fb *); 70 #endif 71