Home | History | Annotate | Line # | Download | only in bios
      1 /*	$NetBSD: dcb.h,v 1.3 2021/12/18 23:45:33 riastradh Exp $	*/
      2 
      3 /* SPDX-License-Identifier: MIT */
      4 #ifndef __NVBIOS_DCB_H__
      5 #define __NVBIOS_DCB_H__
      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_WFD		= 0x8,
     13 	DCB_OUTPUT_EOL		= 0xe,
     14 	DCB_OUTPUT_UNUSED	= 0xf,
     15 	DCB_OUTPUT_MERGED	= 100,
     16 	DCB_OUTPUT_ANY = -1,
     17 };
     18 
     19 struct dcb_output {
     20 	int index;	/* may not be raw dcb index if merging has happened */
     21 	u16 hasht;
     22 	u16 hashm;
     23 	enum dcb_output_type type;
     24 	uint8_t i2c_index;
     25 	uint8_t heads;
     26 	uint8_t connector;
     27 	uint8_t bus;
     28 	uint8_t location;
     29 	uint8_t or;
     30 	uint8_t link;
     31 	bool duallink_possible;
     32 	uint8_t extdev;
     33 	union {
     34 		struct sor_conf {
     35 			int link;
     36 		} sorconf;
     37 		struct {
     38 			int maxfreq;
     39 		} crtconf;
     40 		struct {
     41 			struct sor_conf sor;
     42 			bool use_straps_for_mode;
     43 			bool use_acpi_for_edid;
     44 			bool use_power_scripts;
     45 		} lvdsconf;
     46 		struct {
     47 			bool has_component_output;
     48 		} tvconf;
     49 		struct {
     50 			struct sor_conf sor;
     51 			int link_nr;
     52 			int link_bw;
     53 		} dpconf;
     54 		struct {
     55 			struct sor_conf sor;
     56 			int slave_addr;
     57 		} tmdsconf;
     58 	};
     59 	bool i2c_upper_default;
     60 };
     61 
     62 u16 dcb_table(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *ent, u8 *len);
     63 u16 dcb_outp(struct nvkm_bios *, u8 idx, u8 *ver, u8 *len);
     64 u16 dcb_outp_parse(struct nvkm_bios *, u8 idx, u8 *, u8 *,
     65 		   struct dcb_output *);
     66 u16 dcb_outp_match(struct nvkm_bios *, u16 type, u16 mask, u8 *, u8 *,
     67 		   struct dcb_output *);
     68 int dcb_outp_foreach(struct nvkm_bios *, void *data, int (*exec)
     69 		     (struct nvkm_bios *, void *, int index, u16 entry));
     70 #endif
     71