11b255f1cSBen Skeggs /* SPDX-License-Identifier: MIT */ 21b255f1cSBen Skeggs #ifndef __NVIF_OUTP_H__ 31b255f1cSBen Skeggs #define __NVIF_OUTP_H__ 41b255f1cSBen Skeggs #include <nvif/object.h> 5f530bc60SBen Skeggs #include <nvif/if0012.h> 6*4076ea24SKees Cook #include <drm/display/drm_dp.h> 71b255f1cSBen Skeggs struct nvif_disp; 81b255f1cSBen Skeggs 91b255f1cSBen Skeggs struct nvif_outp { 101b255f1cSBen Skeggs struct nvif_object object; 11ea6143a8SBen Skeggs 12ea6143a8SBen Skeggs struct { 13ea6143a8SBen Skeggs int id; 14ea6143a8SBen Skeggs int link; 15ea6143a8SBen Skeggs } or; 161b255f1cSBen Skeggs }; 171b255f1cSBen Skeggs 181b255f1cSBen Skeggs int nvif_outp_ctor(struct nvif_disp *, const char *name, int id, struct nvif_outp *); 191b255f1cSBen Skeggs void nvif_outp_dtor(struct nvif_outp *); 20dfc4005fSBen Skeggs int nvif_outp_load_detect(struct nvif_outp *, u32 loadval); 21ea6143a8SBen Skeggs int nvif_outp_acquire_rgb_crt(struct nvif_outp *); 22f530bc60SBen Skeggs int nvif_outp_acquire_tmds(struct nvif_outp *, int head, 23f530bc60SBen Skeggs bool hdmi, u8 max_ac_packet, u8 rekey, u8 scdc, bool hda); 249793083fSBen Skeggs int nvif_outp_acquire_lvds(struct nvif_outp *, bool dual, bool bpc8); 25*4076ea24SKees Cook int nvif_outp_acquire_dp(struct nvif_outp *outp, u8 dpcd[DP_RECEIVER_CAP_SIZE], 2681344372SBen Skeggs int link_nr, int link_bw, bool hda, bool mst); 27ea6143a8SBen Skeggs void nvif_outp_release(struct nvif_outp *); 28f530bc60SBen Skeggs int nvif_outp_infoframe(struct nvif_outp *, u8 type, struct nvif_outp_infoframe_v0 *, u32 size); 29a9f5d772SBen Skeggs int nvif_outp_hda_eld(struct nvif_outp *, int head, void *data, u32 size); 30a62b7493SBen Skeggs int nvif_outp_dp_aux_pwr(struct nvif_outp *, bool enable); 318bb30c88SBen Skeggs int nvif_outp_dp_retrain(struct nvif_outp *); 328c7d980dSBen Skeggs int nvif_outp_dp_mst_vcpi(struct nvif_outp *, int head, 338c7d980dSBen Skeggs u8 start_slot, u8 num_slots, u16 pbn, u16 aligned_pbn); 341b255f1cSBen Skeggs #endif 35