Blame view

kernel/linux-rt-4.4.41/drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h 2.04 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  #ifndef __NVKM_DISP_OUTP_DP_H__
  #define __NVKM_DISP_OUTP_DP_H__
  #define nvkm_output_dp(p) container_of((p), struct nvkm_output_dp, base)
  #ifndef MSG
  #define MSG(l,f,a...)                                                          \
  	nvkm_##l(&outp->base.disp->engine.subdev, "%02x:%04x:%04x: "f,         \
  		 outp->base.index, outp->base.info.hasht,                      \
  		 outp->base.info.hashm, ##a)
  #define DBG(f,a...) MSG(debug, f, ##a)
  #define ERR(f,a...) MSG(error, f, ##a)
  #endif
  #include "outp.h"
  
  #include <core/notify.h>
  #include <subdev/bios.h>
  #include <subdev/bios/dp.h>
  
  struct nvkm_output_dp {
  	const struct nvkm_output_dp_func *func;
  	struct nvkm_output base;
  
  	struct nvbios_dpout info;
  	u8 version;
  
  	struct nvkm_i2c_aux *aux;
  
  	struct nvkm_notify irq;
  	struct nvkm_notify hpd;
  	bool present;
  	u8 dpcd[16];
  
  	struct {
  		struct work_struct work;
  		wait_queue_head_t wait;
  		atomic_t done;
  	} lt;
  };
  
  struct nvkm_output_dp_func {
  	int (*pattern)(struct nvkm_output_dp *, int);
  	int (*lnk_pwr)(struct nvkm_output_dp *, int nr);
  	int (*lnk_ctl)(struct nvkm_output_dp *, int nr, int bw, bool ef);
  	int (*drv_ctl)(struct nvkm_output_dp *, int ln, int vs, int pe, int pc);
  };
  
  int nvkm_output_dp_train(struct nvkm_output *, u32 rate, bool wait);
  
  int nvkm_output_dp_ctor(const struct nvkm_output_dp_func *, struct nvkm_disp *,
  			int index, struct dcb_output *, struct nvkm_i2c_aux *,
  			struct nvkm_output_dp *);
  int nvkm_output_dp_new_(const struct nvkm_output_dp_func *, struct nvkm_disp *,
  			int index, struct dcb_output *,
  			struct nvkm_output **);
  
  int nv50_pior_dp_new(struct nvkm_disp *, int, struct dcb_output *,
  		     struct nvkm_output **);
  
  int g94_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
  		   struct nvkm_output **);
  int g94_sor_dp_lnk_pwr(struct nvkm_output_dp *, int);
  
  int gf119_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
  		     struct nvkm_output **);
  int gf119_sor_dp_lnk_ctl(struct nvkm_output_dp *, int, int, bool);
  
  int  gm204_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
  		      struct nvkm_output **);
  #endif