Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / gpu / drm / nouveau / include / nvkm / subdev / bios / dcb.h
1 #ifndef __NVBIOS_DCB_H__
2 #define __NVBIOS_DCB_H__
3 enum dcb_output_type {
4         DCB_OUTPUT_ANALOG       = 0x0,
5         DCB_OUTPUT_TV           = 0x1,
6         DCB_OUTPUT_TMDS         = 0x2,
7         DCB_OUTPUT_LVDS         = 0x3,
8         DCB_OUTPUT_DP           = 0x6,
9         DCB_OUTPUT_EOL          = 0xe,
10         DCB_OUTPUT_UNUSED       = 0xf,
11         DCB_OUTPUT_ANY = -1,
12 };
13
14 struct dcb_output {
15         int index;      /* may not be raw dcb index if merging has happened */
16         u16 hasht;
17         u16 hashm;
18         enum dcb_output_type type;
19         uint8_t i2c_index;
20         uint8_t heads;
21         uint8_t connector;
22         uint8_t bus;
23         uint8_t location;
24         uint8_t or;
25         uint8_t link;
26         bool duallink_possible;
27         uint8_t extdev;
28         union {
29                 struct sor_conf {
30                         int link;
31                 } sorconf;
32                 struct {
33                         int maxfreq;
34                 } crtconf;
35                 struct {
36                         struct sor_conf sor;
37                         bool use_straps_for_mode;
38                         bool use_acpi_for_edid;
39                         bool use_power_scripts;
40                 } lvdsconf;
41                 struct {
42                         bool has_component_output;
43                 } tvconf;
44                 struct {
45                         struct sor_conf sor;
46                         int link_nr;
47                         int link_bw;
48                 } dpconf;
49                 struct {
50                         struct sor_conf sor;
51                         int slave_addr;
52                 } tmdsconf;
53         };
54         bool i2c_upper_default;
55 };
56
57 u16 dcb_table(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *ent, u8 *len);
58 u16 dcb_outp(struct nvkm_bios *, u8 idx, u8 *ver, u8 *len);
59 u16 dcb_outp_parse(struct nvkm_bios *, u8 idx, u8 *, u8 *,
60                    struct dcb_output *);
61 u16 dcb_outp_match(struct nvkm_bios *, u16 type, u16 mask, u8 *, u8 *,
62                    struct dcb_output *);
63 int dcb_outp_foreach(struct nvkm_bios *, void *data, int (*exec)
64                      (struct nvkm_bios *, void *, int index, u16 entry));
65 #endif