linux/drivers/gpu/drm/nouveau/core/engine/disp/outpdp.h
<<
>>
Prefs
   1#ifndef __NVKM_DISP_OUTP_DP_H__
   2#define __NVKM_DISP_OUTP_DP_H__
   3
   4#include <subdev/bios.h>
   5#include <subdev/bios/dp.h>
   6
   7#include "outp.h"
   8
   9struct nvkm_output_dp {
  10        struct nvkm_output base;
  11
  12        struct nvbios_dpout info;
  13        u8 version;
  14
  15        struct nvkm_notify irq;
  16        bool present;
  17        u8 dpcd[16];
  18
  19        struct {
  20                struct work_struct work;
  21                wait_queue_head_t wait;
  22                atomic_t done;
  23        } lt;
  24};
  25
  26#define nvkm_output_dp_create(p,e,c,b,i,d)                                     \
  27        nvkm_output_dp_create_((p), (e), (c), (b), (i), sizeof(**d), (void **)d)
  28#define nvkm_output_dp_destroy(d) ({                                           \
  29        struct nvkm_output_dp *_outp = (d);                                    \
  30        _nvkm_output_dp_dtor(nv_object(_outp));                                \
  31})
  32#define nvkm_output_dp_init(d) ({                                              \
  33        struct nvkm_output_dp *_outp = (d);                                    \
  34        _nvkm_output_dp_init(nv_object(_outp));                                \
  35})
  36#define nvkm_output_dp_fini(d,s) ({                                            \
  37        struct nvkm_output_dp *_outp = (d);                                    \
  38        _nvkm_output_dp_fini(nv_object(_outp), (s));                           \
  39})
  40
  41int nvkm_output_dp_create_(struct nouveau_object *, struct nouveau_object *,
  42                           struct nouveau_oclass *, struct dcb_output *,
  43                           int, int, void **);
  44
  45int  _nvkm_output_dp_ctor(struct nouveau_object *, struct nouveau_object *,
  46                          struct nouveau_oclass *, void *, u32,
  47                          struct nouveau_object **);
  48void _nvkm_output_dp_dtor(struct nouveau_object *);
  49int  _nvkm_output_dp_init(struct nouveau_object *);
  50int  _nvkm_output_dp_fini(struct nouveau_object *, bool);
  51
  52struct nvkm_output_dp_impl {
  53        struct nvkm_output_impl base;
  54        int (*pattern)(struct nvkm_output_dp *, int);
  55        int (*lnk_pwr)(struct nvkm_output_dp *, int nr);
  56        int (*lnk_ctl)(struct nvkm_output_dp *, int nr, int bw, bool ef);
  57        int (*drv_ctl)(struct nvkm_output_dp *, int ln, int vs, int pe, int pc);
  58};
  59
  60int nvkm_output_dp_train(struct nvkm_output *, u32 rate, bool wait);
  61
  62#endif
  63