162306a36Sopenharmony_ci/* SPDX-License-Identifier: MIT */ 262306a36Sopenharmony_ci#ifndef __NVIF_IF0012_H__ 362306a36Sopenharmony_ci#define __NVIF_IF0012_H__ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <drm/display/drm_dp.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ciunion nvif_outp_args { 862306a36Sopenharmony_ci struct nvif_outp_v0 { 962306a36Sopenharmony_ci __u8 version; 1062306a36Sopenharmony_ci __u8 id; /* DCB device index. */ 1162306a36Sopenharmony_ci __u8 pad02[6]; 1262306a36Sopenharmony_ci } v0; 1362306a36Sopenharmony_ci}; 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define NVIF_OUTP_V0_LOAD_DETECT 0x00 1662306a36Sopenharmony_ci#define NVIF_OUTP_V0_ACQUIRE 0x01 1762306a36Sopenharmony_ci#define NVIF_OUTP_V0_RELEASE 0x02 1862306a36Sopenharmony_ci#define NVIF_OUTP_V0_INFOFRAME 0x03 1962306a36Sopenharmony_ci#define NVIF_OUTP_V0_HDA_ELD 0x04 2062306a36Sopenharmony_ci#define NVIF_OUTP_V0_DP_AUX_PWR 0x05 2162306a36Sopenharmony_ci#define NVIF_OUTP_V0_DP_RETRAIN 0x06 2262306a36Sopenharmony_ci#define NVIF_OUTP_V0_DP_MST_VCPI 0x07 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciunion nvif_outp_load_detect_args { 2562306a36Sopenharmony_ci struct nvif_outp_load_detect_v0 { 2662306a36Sopenharmony_ci __u8 version; 2762306a36Sopenharmony_ci __u8 load; 2862306a36Sopenharmony_ci __u8 pad02[2]; 2962306a36Sopenharmony_ci __u32 data; /*TODO: move vbios loadval parsing into nvkm */ 3062306a36Sopenharmony_ci } v0; 3162306a36Sopenharmony_ci}; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciunion nvif_outp_acquire_args { 3462306a36Sopenharmony_ci struct nvif_outp_acquire_v0 { 3562306a36Sopenharmony_ci __u8 version; 3662306a36Sopenharmony_ci#define NVIF_OUTP_ACQUIRE_V0_RGB_CRT 0x00 3762306a36Sopenharmony_ci#define NVIF_OUTP_ACQUIRE_V0_TV 0x01 3862306a36Sopenharmony_ci#define NVIF_OUTP_ACQUIRE_V0_TMDS 0x02 3962306a36Sopenharmony_ci#define NVIF_OUTP_ACQUIRE_V0_LVDS 0x03 4062306a36Sopenharmony_ci#define NVIF_OUTP_ACQUIRE_V0_DP 0x04 4162306a36Sopenharmony_ci __u8 proto; 4262306a36Sopenharmony_ci __u8 or; 4362306a36Sopenharmony_ci __u8 link; 4462306a36Sopenharmony_ci __u8 pad04[4]; 4562306a36Sopenharmony_ci union { 4662306a36Sopenharmony_ci struct { 4762306a36Sopenharmony_ci __u8 head; 4862306a36Sopenharmony_ci __u8 hdmi; 4962306a36Sopenharmony_ci __u8 hdmi_max_ac_packet; 5062306a36Sopenharmony_ci __u8 hdmi_rekey; 5162306a36Sopenharmony_ci#define NVIF_OUTP_ACQUIRE_V0_TMDS_HDMI_SCDC_SCRAMBLE (1 << 0) 5262306a36Sopenharmony_ci#define NVIF_OUTP_ACQUIRE_V0_TMDS_HDMI_SCDC_DIV_BY_4 (1 << 1) 5362306a36Sopenharmony_ci __u8 hdmi_scdc; 5462306a36Sopenharmony_ci __u8 hdmi_hda; 5562306a36Sopenharmony_ci __u8 pad06[2]; 5662306a36Sopenharmony_ci } tmds; 5762306a36Sopenharmony_ci struct { 5862306a36Sopenharmony_ci __u8 dual; 5962306a36Sopenharmony_ci __u8 bpc8; 6062306a36Sopenharmony_ci __u8 pad02[6]; 6162306a36Sopenharmony_ci } lvds; 6262306a36Sopenharmony_ci struct { 6362306a36Sopenharmony_ci __u8 link_nr; /* 0 = highest possible. */ 6462306a36Sopenharmony_ci __u8 link_bw; /* 0 = highest possible, DP BW code otherwise. */ 6562306a36Sopenharmony_ci __u8 hda; 6662306a36Sopenharmony_ci __u8 mst; 6762306a36Sopenharmony_ci __u8 pad04[4]; 6862306a36Sopenharmony_ci __u8 dpcd[DP_RECEIVER_CAP_SIZE]; 6962306a36Sopenharmony_ci } dp; 7062306a36Sopenharmony_ci }; 7162306a36Sopenharmony_ci } v0; 7262306a36Sopenharmony_ci}; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ciunion nvif_outp_release_args { 7562306a36Sopenharmony_ci struct nvif_outp_release_vn { 7662306a36Sopenharmony_ci } vn; 7762306a36Sopenharmony_ci}; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ciunion nvif_outp_infoframe_args { 8062306a36Sopenharmony_ci struct nvif_outp_infoframe_v0 { 8162306a36Sopenharmony_ci __u8 version; 8262306a36Sopenharmony_ci#define NVIF_OUTP_INFOFRAME_V0_AVI 0 8362306a36Sopenharmony_ci#define NVIF_OUTP_INFOFRAME_V0_VSI 1 8462306a36Sopenharmony_ci __u8 type; 8562306a36Sopenharmony_ci __u8 head; 8662306a36Sopenharmony_ci __u8 pad03[5]; 8762306a36Sopenharmony_ci __u8 data[]; 8862306a36Sopenharmony_ci } v0; 8962306a36Sopenharmony_ci}; 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ciunion nvif_outp_hda_eld_args { 9262306a36Sopenharmony_ci struct nvif_outp_hda_eld_v0 { 9362306a36Sopenharmony_ci __u8 version; 9462306a36Sopenharmony_ci __u8 head; 9562306a36Sopenharmony_ci __u8 pad02[6]; 9662306a36Sopenharmony_ci __u8 data[]; 9762306a36Sopenharmony_ci } v0; 9862306a36Sopenharmony_ci}; 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ciunion nvif_outp_dp_aux_pwr_args { 10162306a36Sopenharmony_ci struct nvif_outp_dp_aux_pwr_v0 { 10262306a36Sopenharmony_ci __u8 version; 10362306a36Sopenharmony_ci __u8 state; 10462306a36Sopenharmony_ci __u8 pad02[6]; 10562306a36Sopenharmony_ci } v0; 10662306a36Sopenharmony_ci}; 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ciunion nvif_outp_dp_retrain_args { 10962306a36Sopenharmony_ci struct nvif_outp_dp_retrain_vn { 11062306a36Sopenharmony_ci } vn; 11162306a36Sopenharmony_ci}; 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ciunion nvif_outp_dp_mst_vcpi_args { 11462306a36Sopenharmony_ci struct nvif_outp_dp_mst_vcpi_v0 { 11562306a36Sopenharmony_ci __u8 version; 11662306a36Sopenharmony_ci __u8 head; 11762306a36Sopenharmony_ci __u8 start_slot; 11862306a36Sopenharmony_ci __u8 num_slots; 11962306a36Sopenharmony_ci __u16 pbn; 12062306a36Sopenharmony_ci __u16 aligned_pbn; 12162306a36Sopenharmony_ci } v0; 12262306a36Sopenharmony_ci}; 12362306a36Sopenharmony_ci#endif 124