Linux Audio

Check our new training course

Loading...
  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
  9int r535_fb_new(const struct nvkm_fb_func *,
 10		struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fb **);
 11
 12struct nvkm_fb_func {
 13	void *(*dtor)(struct nvkm_fb *);
 14	u32 (*tags)(struct nvkm_fb *);
 15	int (*oneinit)(struct nvkm_fb *);
 16	void (*init)(struct nvkm_fb *);
 17	void (*init_remapper)(struct nvkm_fb *);
 18	int (*init_page)(struct nvkm_fb *);
 19	void (*init_unkn)(struct nvkm_fb *);
 20	void (*intr)(struct nvkm_fb *);
 21
 22	struct nvkm_fb_func_sysmem {
 23		void (*flush_page_init)(struct nvkm_fb *);
 24	} sysmem;
 25
 26	struct nvkm_fb_func_vidmem {
 27		u64 (*size)(struct nvkm_fb *);
 28	} vidmem;
 29
 30	struct {
 31		bool (*scrub_required)(struct nvkm_fb *);
 32		int (*scrub)(struct nvkm_fb *);
 33	} vpr;
 34
 35	struct {
 36		int regions;
 37		void (*init)(struct nvkm_fb *, int i, u32 addr, u32 size,
 38			     u32 pitch, u32 flags, struct nvkm_fb_tile *);
 39		void (*comp)(struct nvkm_fb *, int i, u32 size, u32 flags,
 40			     struct nvkm_fb_tile *);
 41		void (*fini)(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
 42		void (*prog)(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
 43	} tile;
 44
 45	int (*ram_new)(struct nvkm_fb *, struct nvkm_ram **);
 46
 47	u8 default_bigpage;
 48	const struct nvkm_therm_clkgate_pack *clkgate_pack;
 49};
 50
 51int nvkm_fb_ctor(const struct nvkm_fb_func *, struct nvkm_device *device,
 52		 enum nvkm_subdev_type type, int inst, struct nvkm_fb *);
 53int nvkm_fb_new_(const struct nvkm_fb_func *, struct nvkm_device *device,
 54		 enum nvkm_subdev_type type, int inst, struct nvkm_fb **);
 55int nvkm_fb_bios_memtype(struct nvkm_bios *);
 56
 57void nv10_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
 58		       u32 pitch, u32 flags, struct nvkm_fb_tile *);
 59void nv10_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
 60void nv10_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
 61
 62u32 nv20_fb_tags(struct nvkm_fb *);
 63void nv20_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
 64		       u32 pitch, u32 flags, struct nvkm_fb_tile *);
 65void nv20_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
 66void nv20_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
 67
 68void nv30_fb_init(struct nvkm_fb *);
 69void nv30_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
 70		       u32 pitch, u32 flags, struct nvkm_fb_tile *);
 71
 72void nv40_fb_tile_comp(struct nvkm_fb *, int i, u32 size, u32 flags,
 73		       struct nvkm_fb_tile *);
 74
 75void nv41_fb_init(struct nvkm_fb *);
 76void nv41_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
 77
 78void nv44_fb_init(struct nvkm_fb *);
 79void nv44_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
 80
 81void nv46_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
 82		       u32 pitch, u32 flags, struct nvkm_fb_tile *);
 83
 84int gf100_fb_oneinit(struct nvkm_fb *);
 85int gf100_fb_init_page(struct nvkm_fb *);
 86void gf100_fb_sysmem_flush_page_init(struct nvkm_fb *);
 87
 88int gm200_fb_init_page(struct nvkm_fb *);
 89
 90void gp100_fb_init_remapper(struct nvkm_fb *);
 91void gp100_fb_init_unkn(struct nvkm_fb *);
 92
 93int gp102_fb_oneinit(struct nvkm_fb *);
 94u64 gp102_fb_vidmem_size(struct nvkm_fb *);
 95bool gp102_fb_vpr_scrub_required(struct nvkm_fb *);
 96int gp102_fb_vpr_scrub(struct nvkm_fb *);
 97
 98int gv100_fb_init_page(struct nvkm_fb *);
 99
100bool tu102_fb_vpr_scrub_required(struct nvkm_fb *);
101#endif