• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
70