cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

priv.h (3098B)


      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		bool (*scrub_required)(struct nvkm_fb *);
     21		int (*scrub)(struct nvkm_fb *);
     22	} vpr;
     23
     24	struct {
     25		int regions;
     26		void (*init)(struct nvkm_fb *, int i, u32 addr, u32 size,
     27			     u32 pitch, u32 flags, struct nvkm_fb_tile *);
     28		void (*comp)(struct nvkm_fb *, int i, u32 size, u32 flags,
     29			     struct nvkm_fb_tile *);
     30		void (*fini)(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
     31		void (*prog)(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
     32	} tile;
     33
     34	int (*ram_new)(struct nvkm_fb *, struct nvkm_ram **);
     35
     36	u8 default_bigpage;
     37	const struct nvkm_therm_clkgate_pack *clkgate_pack;
     38};
     39
     40void nvkm_fb_ctor(const struct nvkm_fb_func *, struct nvkm_device *device,
     41		  enum nvkm_subdev_type type, int inst, struct nvkm_fb *);
     42int nvkm_fb_new_(const struct nvkm_fb_func *, struct nvkm_device *device,
     43		 enum nvkm_subdev_type type, int inst, struct nvkm_fb **);
     44int nvkm_fb_bios_memtype(struct nvkm_bios *);
     45
     46void nv10_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
     47		       u32 pitch, u32 flags, struct nvkm_fb_tile *);
     48void nv10_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
     49void nv10_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
     50
     51u32 nv20_fb_tags(struct nvkm_fb *);
     52void nv20_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
     53		       u32 pitch, u32 flags, struct nvkm_fb_tile *);
     54void nv20_fb_tile_fini(struct nvkm_fb *, int i, struct nvkm_fb_tile *);
     55void nv20_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
     56
     57void nv30_fb_init(struct nvkm_fb *);
     58void nv30_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
     59		       u32 pitch, u32 flags, struct nvkm_fb_tile *);
     60
     61void nv40_fb_tile_comp(struct nvkm_fb *, int i, u32 size, u32 flags,
     62		       struct nvkm_fb_tile *);
     63
     64void nv41_fb_init(struct nvkm_fb *);
     65void nv41_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
     66
     67void nv44_fb_init(struct nvkm_fb *);
     68void nv44_fb_tile_prog(struct nvkm_fb *, int, struct nvkm_fb_tile *);
     69
     70void nv46_fb_tile_init(struct nvkm_fb *, int i, u32 addr, u32 size,
     71		       u32 pitch, u32 flags, struct nvkm_fb_tile *);
     72
     73int gf100_fb_oneinit(struct nvkm_fb *);
     74int gf100_fb_init_page(struct nvkm_fb *);
     75
     76int gm200_fb_init_page(struct nvkm_fb *);
     77
     78void gp100_fb_init_remapper(struct nvkm_fb *);
     79void gp100_fb_init_unkn(struct nvkm_fb *);
     80
     81int gp102_fb_new_(const struct nvkm_fb_func *, struct nvkm_device *, enum nvkm_subdev_type, int,
     82		  struct nvkm_fb **);
     83bool gp102_fb_vpr_scrub_required(struct nvkm_fb *);
     84int gp102_fb_vpr_scrub(struct nvkm_fb *);
     85
     86int gv100_fb_init_page(struct nvkm_fb *);
     87#endif