root/drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: MIT */
   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 #include <subdev/therm.h>
   7 struct nvkm_bios;
   8 
   9 struct nvkm_fb_func {
  10         void *(*dtor)(struct nvkm_fb *);
  11         u32 (*tags)(struct nvkm_fb *);
  12         int (*oneinit)(struct nvkm_fb *);
  13         void (*init)(struct nvkm_fb *);
  14         void (*init_remapper)(struct nvkm_fb *);
  15         int (*init_page)(struct nvkm_fb *);
  16         void (*init_unkn)(struct nvkm_fb *);
  17         void (*intr)(struct nvkm_fb *);
  18 
  19         struct {
  20                 int regions;
  21                 void (*init)(struct nvkm_fb *, int i, u32 addr, u32 size,
  22                              u32 pitch, u32 flags, struct nvkm_fb_tile *);
  23                 void (*comp)(struct nvkm_fb *, int i, u32 size, u32 flags,
  24                              struct nvkm_fb_tile *);
  25                 void (*fini)(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
  26                 void (*prog)(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
  27         } tile;
  28 
  29         int (*ram_new)(struct nvkm_fb *, struct nvkm_ram **);
  30 
  31         u8 default_bigpage;
  32         const struct nvkm_therm_clkgate_pack *clkgate_pack;
  33 };
  34 
  35 void nvkm_fb_ctor(const struct nvkm_fb_func *, struct nvkm_device *device,
  36                   int index, struct nvkm_fb *);
  37 int nvkm_fb_new_(const struct nvkm_fb_func *, struct nvkm_device *device,
  38                  int index, struct nvkm_fb **);
  39 int nvkm_fb_bios_memtype(struct nvkm_bios *);
  40 
  41 void nv10_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
  42                        u32 pitch, u32 flags, struct nvkm_fb_tile *);
  43 void nv10_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
  44 void nv10_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
  45 
  46 u32 nv20_fb_tags(struct nvkm_fb *);
  47 void nv20_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
  48                        u32 pitch, u32 flags, struct nvkm_fb_tile *);
  49 void nv20_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
  50 void nv20_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
  51 
  52 void nv30_fb_init(struct nvkm_fb *);
  53 void nv30_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
  54                        u32 pitch, u32 flags, struct nvkm_fb_tile *);
  55 
  56 void nv40_fb_tile_comp(struct nvkm_fb *, int i, u32 size, u32 flags,
  57                        struct nvkm_fb_tile *);
  58 
  59 void nv41_fb_init(struct nvkm_fb *);
  60 void nv41_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
  61 
  62 void nv44_fb_init(struct nvkm_fb *);
  63 void nv44_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
  64 
  65 void nv46_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
  66                        u32 pitch, u32 flags, struct nvkm_fb_tile *);
  67 
  68 int gf100_fb_oneinit(struct nvkm_fb *);
  69 int gf100_fb_init_page(struct nvkm_fb *);
  70 
  71 int gm200_fb_init_page(struct nvkm_fb *);
  72 
  73 void gp100_fb_init_remapper(struct nvkm_fb *);
  74 void gp100_fb_init_unkn(struct nvkm_fb *);
  75 #endif

/* [<][>][^][v][top][bottom][index][help] */