295 lines
5.5 KiB
C
295 lines
5.5 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
#ifndef __NVIF_IF0012_H__
|
|
#define __NVIF_IF0012_H__
|
|
|
|
#include <drm/display/drm_dp.h>
|
|
|
|
union nvif_outp_args {
|
|
struct nvif_outp_v0 {
|
|
__u8 version;
|
|
__u8 id; /* DCB device index. */
|
|
#define NVIF_OUTP_V0_TYPE_DAC 0x00
|
|
#define NVIF_OUTP_V0_TYPE_SOR 0x01
|
|
#define NVIF_OUTP_V0_TYPE_PIOR 0x02
|
|
__u8 type;
|
|
#define NVIF_OUTP_V0_PROTO_RGB_CRT 0x00
|
|
#define NVIF_OUTP_V0_PROTO_TMDS 0x01
|
|
#define NVIF_OUTP_V0_PROTO_LVDS 0x02
|
|
#define NVIF_OUTP_V0_PROTO_DP 0x03
|
|
__u8 proto;
|
|
__u8 heads;
|
|
__u8 ddc;
|
|
__u8 conn;
|
|
union {
|
|
struct {
|
|
__u32 freq_max;
|
|
} rgb_crt;
|
|
struct {
|
|
__u8 dual;
|
|
} tmds;
|
|
struct {
|
|
__u8 acpi_edid;
|
|
} lvds;
|
|
struct {
|
|
__u8 aux;
|
|
__u8 mst;
|
|
__u8 increased_wm;
|
|
__u8 link_nr;
|
|
__u32 link_bw;
|
|
} dp;
|
|
};
|
|
} v0;
|
|
};
|
|
|
|
#define NVIF_OUTP_V0_DETECT 0x00
|
|
#define NVIF_OUTP_V0_EDID_GET 0x01
|
|
|
|
#define NVIF_OUTP_V0_INHERIT 0x10
|
|
#define NVIF_OUTP_V0_ACQUIRE 0x11
|
|
#define NVIF_OUTP_V0_RELEASE 0x12
|
|
|
|
#define NVIF_OUTP_V0_LOAD_DETECT 0x20
|
|
|
|
#define NVIF_OUTP_V0_BL_GET 0x30
|
|
#define NVIF_OUTP_V0_BL_SET 0x31
|
|
|
|
#define NVIF_OUTP_V0_LVDS 0x40
|
|
|
|
#define NVIF_OUTP_V0_HDMI 0x50
|
|
|
|
#define NVIF_OUTP_V0_INFOFRAME 0x60
|
|
#define NVIF_OUTP_V0_HDA_ELD 0x61
|
|
|
|
#define NVIF_OUTP_V0_DP_AUX_PWR 0x70
|
|
#define NVIF_OUTP_V0_DP_AUX_XFER 0x71
|
|
#define NVIF_OUTP_V0_DP_RATES 0x72
|
|
#define NVIF_OUTP_V0_DP_TRAIN 0x73
|
|
#define NVIF_OUTP_V0_DP_DRIVE 0x74
|
|
#define NVIF_OUTP_V0_DP_SST 0x75
|
|
#define NVIF_OUTP_V0_DP_MST_ID_GET 0x76
|
|
#define NVIF_OUTP_V0_DP_MST_ID_PUT 0x77
|
|
#define NVIF_OUTP_V0_DP_MST_VCPI 0x78
|
|
|
|
union nvif_outp_detect_args {
|
|
struct nvif_outp_detect_v0 {
|
|
__u8 version;
|
|
#define NVIF_OUTP_DETECT_V0_NOT_PRESENT 0x00
|
|
#define NVIF_OUTP_DETECT_V0_PRESENT 0x01
|
|
#define NVIF_OUTP_DETECT_V0_UNKNOWN 0x02
|
|
__u8 status;
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_edid_get_args {
|
|
struct nvif_outp_edid_get_v0 {
|
|
__u8 version;
|
|
__u8 pad01;
|
|
__u16 size;
|
|
__u8 data[2048];
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_load_detect_args {
|
|
struct nvif_outp_load_detect_v0 {
|
|
__u8 version;
|
|
__u8 load;
|
|
__u8 pad02[2];
|
|
__u32 data; /*TODO: move vbios loadval parsing into nvkm */
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_acquire_args {
|
|
struct nvif_outp_acquire_v0 {
|
|
__u8 version;
|
|
#define NVIF_OUTP_ACQUIRE_V0_DAC 0x00
|
|
#define NVIF_OUTP_ACQUIRE_V0_SOR 0x01
|
|
#define NVIF_OUTP_ACQUIRE_V0_PIOR 0x02
|
|
__u8 type;
|
|
__u8 or;
|
|
__u8 link;
|
|
__u8 pad04[4];
|
|
union {
|
|
struct {
|
|
__u8 hda;
|
|
} sor;
|
|
};
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_inherit_args {
|
|
struct nvif_outp_inherit_v0 {
|
|
__u8 version;
|
|
#define NVIF_OUTP_INHERIT_V0_RGB_CRT 0x00
|
|
#define NVIF_OUTP_INHERIT_V0_TV 0x01
|
|
#define NVIF_OUTP_INHERIT_V0_TMDS 0x02
|
|
#define NVIF_OUTP_INHERIT_V0_LVDS 0x03
|
|
#define NVIF_OUTP_INHERIT_V0_DP 0x04
|
|
// In/out. Input is one of the above values, output is the actual hw protocol
|
|
__u8 proto;
|
|
__u8 or;
|
|
__u8 link;
|
|
__u8 head;
|
|
union {
|
|
struct {
|
|
// TODO: Figure out padding, and whether we even want this field
|
|
__u8 hda;
|
|
} tmds;
|
|
};
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_release_args {
|
|
struct nvif_outp_release_vn {
|
|
} vn;
|
|
};
|
|
|
|
union nvif_outp_bl_get_args {
|
|
struct nvif_outp_bl_get_v0 {
|
|
__u8 version;
|
|
__u8 level;
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_bl_set_args {
|
|
struct nvif_outp_bl_set_v0 {
|
|
__u8 version;
|
|
__u8 level;
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_lvds_args {
|
|
struct nvif_outp_lvds_v0 {
|
|
__u8 version;
|
|
__u8 dual;
|
|
__u8 bpc8;
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_hdmi_args {
|
|
struct nvif_outp_hdmi_v0 {
|
|
__u8 version;
|
|
__u8 head;
|
|
__u8 enable;
|
|
__u8 max_ac_packet;
|
|
__u8 rekey;
|
|
__u8 scdc;
|
|
__u8 scdc_scrambling;
|
|
__u8 scdc_low_rates;
|
|
__u32 khz;
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_infoframe_args {
|
|
struct nvif_outp_infoframe_v0 {
|
|
__u8 version;
|
|
#define NVIF_OUTP_INFOFRAME_V0_AVI 0
|
|
#define NVIF_OUTP_INFOFRAME_V0_VSI 1
|
|
__u8 type;
|
|
__u8 head;
|
|
__u8 pad03[5];
|
|
__u8 data[];
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_hda_eld_args {
|
|
struct nvif_outp_hda_eld_v0 {
|
|
__u8 version;
|
|
__u8 head;
|
|
__u8 pad02[6];
|
|
__u8 data[];
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_dp_aux_pwr_args {
|
|
struct nvif_outp_dp_aux_pwr_v0 {
|
|
__u8 version;
|
|
__u8 state;
|
|
__u8 pad02[6];
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_dp_aux_xfer_args {
|
|
struct nvif_outp_dp_aux_xfer_v0 {
|
|
__u8 version;
|
|
__u8 pad01;
|
|
__u8 type;
|
|
__u8 size;
|
|
__u32 addr;
|
|
__u8 data[16];
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_dp_rates_args {
|
|
struct nvif_outp_dp_rates_v0 {
|
|
__u8 version;
|
|
__u8 pad01[6];
|
|
__u8 rates;
|
|
struct {
|
|
__s8 dpcd;
|
|
__u32 rate;
|
|
} rate[8];
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_dp_train_args {
|
|
struct nvif_outp_dp_train_v0 {
|
|
__u8 version;
|
|
__u8 retrain;
|
|
__u8 mst;
|
|
__u8 lttprs;
|
|
__u8 post_lt_adj;
|
|
__u8 link_nr;
|
|
__u32 link_bw;
|
|
__u8 dpcd[DP_RECEIVER_CAP_SIZE];
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_dp_drive_args {
|
|
struct nvif_outp_dp_drive_v0 {
|
|
__u8 version;
|
|
__u8 pad01[2];
|
|
__u8 lanes;
|
|
__u8 pe[4];
|
|
__u8 vs[4];
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_dp_sst_args {
|
|
struct nvif_outp_dp_sst_v0 {
|
|
__u8 version;
|
|
__u8 head;
|
|
__u8 pad02[2];
|
|
__u32 watermark;
|
|
__u32 hblanksym;
|
|
__u32 vblanksym;
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_dp_mst_id_put_args {
|
|
struct nvif_outp_dp_mst_id_put_v0 {
|
|
__u8 version;
|
|
__u8 pad01[3];
|
|
__u32 id;
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_dp_mst_id_get_args {
|
|
struct nvif_outp_dp_mst_id_get_v0 {
|
|
__u8 version;
|
|
__u8 pad01[3];
|
|
__u32 id;
|
|
} v0;
|
|
};
|
|
|
|
union nvif_outp_dp_mst_vcpi_args {
|
|
struct nvif_outp_dp_mst_vcpi_v0 {
|
|
__u8 version;
|
|
__u8 head;
|
|
__u8 start_slot;
|
|
__u8 num_slots;
|
|
__u16 pbn;
|
|
__u16 aligned_pbn;
|
|
} v0;
|
|
};
|
|
#endif
|