linux/drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h
<<
>>
Prefs
   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>
   7struct nvkm_bios;
   8
   9struct 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
  35void nvkm_fb_ctor(const struct nvkm_fb_func *, struct nvkm_device *device,
  36                  int index, struct nvkm_fb *);
  37int nvkm_fb_new_(const struct nvkm_fb_func *, struct nvkm_device *device,
  38                 int index, struct nvkm_fb **);
  39int nvkm_fb_bios_memtype(struct nvkm_bios *);
  40
  41void nv10_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
  42                       u32 pitch, u32 flags, struct nvkm_fb_tile *);
  43void nv10_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
  44void nv10_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
  45
  46u32 nv20_fb_tags(struct nvkm_fb *);
  47void nv20_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
  48                       u32 pitch, u32 flags, struct nvkm_fb_tile *);
  49void nv20_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
  50void nv20_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
  51
  52void nv30_fb_init(struct nvkm_fb *);
  53void nv30_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
  54                       u32 pitch, u32 flags, struct nvkm_fb_tile *);
  55
  56void nv40_fb_tile_comp(struct nvkm_fb *, int i, u32 size, u32 flags,
  57                       struct nvkm_fb_tile *);
  58
  59void nv41_fb_init(struct nvkm_fb *);
  60void nv41_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
  61
  62void nv44_fb_init(struct nvkm_fb *);
  63void nv44_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
  64
  65void nv46_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
  66                       u32 pitch, u32 flags, struct nvkm_fb_tile *);
  67
  68int gf100_fb_oneinit(struct nvkm_fb *);
  69int gf100_fb_init_page(struct nvkm_fb *);
  70
  71int gm200_fb_init_page(struct nvkm_fb *);
  72
  73void gp100_fb_init_remapper(struct nvkm_fb *);
  74void gp100_fb_init_unkn(struct nvkm_fb *);
  75#endif
  76