/* 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 0 x00
#define NVIF_OUTP_V0_TYPE_SOR 0 x01
#define NVIF_OUTP_V0_TYPE_PIOR 0 x02
__u8 type;
#define NVIF_OUTP_V0_PROTO_RGB_CRT 0 x00
#define NVIF_OUTP_V0_PROTO_TMDS 0 x01
#define NVIF_OUTP_V0_PROTO_LVDS 0 x02
#define NVIF_OUTP_V0_PROTO_DP 0 x03
__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 0 x00
#define NVIF_OUTP_V0_EDID_GET 0 x01
#define NVIF_OUTP_V0_INHERIT 0 x10
#define NVIF_OUTP_V0_ACQUIRE 0 x11
#define NVIF_OUTP_V0_RELEASE 0 x12
#define NVIF_OUTP_V0_LOAD_DETECT 0 x20
#define NVIF_OUTP_V0_BL_GET 0 x30
#define NVIF_OUTP_V0_BL_SET 0 x31
#define NVIF_OUTP_V0_LVDS 0 x40
#define NVIF_OUTP_V0_HDMI 0 x50
#define NVIF_OUTP_V0_INFOFRAME 0 x60
#define NVIF_OUTP_V0_HDA_ELD 0 x61
#define NVIF_OUTP_V0_DP_AUX_PWR 0 x70
#define NVIF_OUTP_V0_DP_AUX_XFER 0 x71
#define NVIF_OUTP_V0_DP_RATES 0 x72
#define NVIF_OUTP_V0_DP_TRAIN 0 x73
#define NVIF_OUTP_V0_DP_DRIVE 0 x74
#define NVIF_OUTP_V0_DP_SST 0 x75
#define NVIF_OUTP_V0_DP_MST_ID_GET 0 x76
#define NVIF_OUTP_V0_DP_MST_ID_PUT 0 x77
#define NVIF_OUTP_V0_DP_MST_VCPI 0 x78
union nvif_outp_detect_args {
struct nvif_outp_detect_v0 {
__u8 version;
#define NVIF_OUTP_DETECT_V0_NOT_PRESENT 0 x00
#define NVIF_OUTP_DETECT_V0_PRESENT 0 x01
#define NVIF_OUTP_DETECT_V0_UNKNOWN 0 x02
__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 0 x00
#define NVIF_OUTP_ACQUIRE_V0_SOR 0 x01
#define NVIF_OUTP_ACQUIRE_V0_PIOR 0 x02
__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 0 x00
#define NVIF_OUTP_INHERIT_V0_TV 0 x01
#define NVIF_OUTP_INHERIT_V0_TMDS 0 x02
#define NVIF_OUTP_INHERIT_V0_LVDS 0 x03
#define NVIF_OUTP_INHERIT_V0_DP 0 x04
// 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
Messung V0.5 in Prozent C=94 H=93 G=93
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland