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>
61b255f1cSBen Skeggs struct nvif_disp;
71b255f1cSBen Skeggs 
81b255f1cSBen Skeggs struct nvif_outp {
91b255f1cSBen Skeggs 	struct nvif_object object;
10ea6143a8SBen Skeggs 
11ea6143a8SBen Skeggs 	struct {
12ea6143a8SBen Skeggs 		int id;
13ea6143a8SBen Skeggs 		int link;
14ea6143a8SBen Skeggs 	} or;
151b255f1cSBen Skeggs };
161b255f1cSBen Skeggs 
171b255f1cSBen Skeggs int nvif_outp_ctor(struct nvif_disp *, const char *name, int id, struct nvif_outp *);
181b255f1cSBen Skeggs void nvif_outp_dtor(struct nvif_outp *);
19dfc4005fSBen Skeggs int nvif_outp_load_detect(struct nvif_outp *, u32 loadval);
20ea6143a8SBen Skeggs int nvif_outp_acquire_rgb_crt(struct nvif_outp *);
21f530bc60SBen Skeggs int nvif_outp_acquire_tmds(struct nvif_outp *, int head,
22f530bc60SBen Skeggs 			   bool hdmi, u8 max_ac_packet, u8 rekey, u8 scdc, bool hda);
239793083fSBen Skeggs int nvif_outp_acquire_lvds(struct nvif_outp *, bool dual, bool bpc8);
24*81344372SBen Skeggs int nvif_outp_acquire_dp(struct nvif_outp *, u8 dpcd[16],
25*81344372SBen Skeggs 			 int link_nr, int link_bw, bool hda, bool mst);
26ea6143a8SBen Skeggs void nvif_outp_release(struct nvif_outp *);
27f530bc60SBen Skeggs int nvif_outp_infoframe(struct nvif_outp *, u8 type, struct nvif_outp_infoframe_v0 *, u32 size);
28a9f5d772SBen Skeggs int nvif_outp_hda_eld(struct nvif_outp *, int head, void *data, u32 size);
291b255f1cSBen Skeggs #endif
30