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