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

head.h (1861B)


      1/* SPDX-License-Identifier: MIT */
      2#ifndef __NVKM_DISP_HEAD_H__
      3#define __NVKM_DISP_HEAD_H__
      4#include "priv.h"
      5
      6struct nvkm_head {
      7	const struct nvkm_head_func *func;
      8	struct nvkm_disp *disp;
      9	int id;
     10
     11	struct list_head head;
     12
     13	struct nvkm_head_state {
     14		u16 htotal;
     15		u16 hsynce;
     16		u16 hblanke;
     17		u16 hblanks;
     18		u16 vtotal;
     19		u16 vsynce;
     20		u16 vblanke;
     21		u16 vblanks;
     22		u32 hz;
     23
     24		/* Prior to GF119, these are set by the OR. */
     25		struct {
     26			u8 depth;
     27		} or;
     28	} arm, asy;
     29};
     30
     31int nvkm_head_new_(const struct nvkm_head_func *, struct nvkm_disp *, int id);
     32void nvkm_head_del(struct nvkm_head **);
     33int nvkm_head_mthd_scanoutpos(struct nvkm_object *,
     34			      struct nvkm_head *, void *, u32);
     35struct nvkm_head *nvkm_head_find(struct nvkm_disp *, int id);
     36
     37struct nvkm_head_func {
     38	void (*state)(struct nvkm_head *, struct nvkm_head_state *);
     39	void (*rgpos)(struct nvkm_head *, u16 *hline, u16 *vline);
     40	void (*rgclk)(struct nvkm_head *, int div);
     41	void (*vblank_get)(struct nvkm_head *);
     42	void (*vblank_put)(struct nvkm_head *);
     43};
     44
     45void nv50_head_rgpos(struct nvkm_head *, u16 *, u16 *);
     46
     47#define HEAD_MSG(h,l,f,a...) do {                                              \
     48	struct nvkm_head *_h = (h);                                            \
     49	nvkm_##l(&_h->disp->engine.subdev, "head-%d: "f"\n", _h->id, ##a);     \
     50} while(0)
     51#define HEAD_WARN(h,f,a...) HEAD_MSG((h), warn, f, ##a)
     52#define HEAD_DBG(h,f,a...) HEAD_MSG((h), debug, f, ##a)
     53
     54int nv04_head_new(struct nvkm_disp *, int id);
     55
     56int nv50_head_cnt(struct nvkm_disp *, unsigned long *);
     57int nv50_head_new(struct nvkm_disp *, int id);
     58
     59int gf119_head_cnt(struct nvkm_disp *, unsigned long *);
     60int gf119_head_new(struct nvkm_disp *, int id);
     61void gf119_head_rgclk(struct nvkm_head *, int);
     62
     63int gv100_head_cnt(struct nvkm_disp *, unsigned long *);
     64int gv100_head_new(struct nvkm_disp *, int id);
     65#endif