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