brintos

brintos / linux-shallow public Read only

0
0
Text · 3.1 KiB · bc122a5 Raw
117 lines · c
1/* SPDX-License-Identifier: MIT */2#ifndef __NVIF_OUTP_H__3#define __NVIF_OUTP_H__4#include <nvif/object.h>5#include <nvif/if0012.h>6#include <drm/display/drm_dp.h>7struct nvif_disp;8 9struct nvif_outp {10	struct nvif_object object;11	u32 id;12 13	struct {14		enum {15			NVIF_OUTP_DAC,16			NVIF_OUTP_SOR,17			NVIF_OUTP_PIOR,18		} type;19 20		enum {21			NVIF_OUTP_RGB_CRT,22			NVIF_OUTP_TMDS,23			NVIF_OUTP_LVDS,24			NVIF_OUTP_DP,25		} proto;26 27		u8 heads;28#define NVIF_OUTP_DDC_INVALID 0xff29		u8 ddc;30		u8 conn;31 32		union {33			struct {34				u32 freq_max;35			} rgb_crt;36			struct {37				bool dual;38			} tmds;39			struct {40				bool acpi_edid;41			} lvds;42			struct {43				u8   aux;44				bool mst;45				bool increased_wm;46				u8   link_nr;47				u32  link_bw;48			} dp;49		};50	} info;51 52	struct {53		int id;54		int link;55	} or;56};57 58int nvif_outp_ctor(struct nvif_disp *, const char *name, int id, struct nvif_outp *);59void nvif_outp_dtor(struct nvif_outp *);60 61enum nvif_outp_detect_status {62	NOT_PRESENT,63	PRESENT,64	UNKNOWN,65};66 67enum nvif_outp_detect_status nvif_outp_detect(struct nvif_outp *);68int nvif_outp_edid_get(struct nvif_outp *, u8 **pedid);69 70int nvif_outp_load_detect(struct nvif_outp *, u32 loadval);71int nvif_outp_acquire_dac(struct nvif_outp *);72int nvif_outp_acquire_sor(struct nvif_outp *, bool hda);73int nvif_outp_acquire_pior(struct nvif_outp *);74int nvif_outp_inherit_rgb_crt(struct nvif_outp *outp, u8 *proto_out);75int nvif_outp_inherit_lvds(struct nvif_outp *outp, u8 *proto_out);76int nvif_outp_inherit_tmds(struct nvif_outp *outp, u8 *proto_out);77int nvif_outp_inherit_dp(struct nvif_outp *outp, u8 *proto_out);78 79void nvif_outp_release(struct nvif_outp *);80 81static inline bool82nvif_outp_acquired(struct nvif_outp *outp)83{84	return outp->or.id >= 0;85}86 87int nvif_outp_bl_get(struct nvif_outp *);88int nvif_outp_bl_set(struct nvif_outp *, int level);89 90int nvif_outp_lvds(struct nvif_outp *, bool dual, bool bpc8);91 92int nvif_outp_hdmi(struct nvif_outp *, int head, bool enable, u8 max_ac_packet, u8 rekey, u32 khz,93		   bool scdc, bool scdc_scrambling, bool scdc_low_rates);94 95int nvif_outp_infoframe(struct nvif_outp *, u8 type, struct nvif_outp_infoframe_v0 *, u32 size);96int nvif_outp_hda_eld(struct nvif_outp *, int head, void *data, u32 size);97 98int nvif_outp_dp_aux_pwr(struct nvif_outp *, bool enable);99int nvif_outp_dp_aux_xfer(struct nvif_outp *, u8 type, u8 *size, u32 addr, u8 *data);100 101struct nvif_outp_dp_rate {102	int dpcd; /* -1 for non-indexed rates */103	u32 rate;104};105 106int nvif_outp_dp_rates(struct nvif_outp *, struct nvif_outp_dp_rate *rate, int rate_nr);107int nvif_outp_dp_train(struct nvif_outp *, u8 dpcd[DP_RECEIVER_CAP_SIZE],108		       u8 lttprs, u8 link_nr, u32 link_bw, bool mst, bool post_lt_adj,109		       bool retrain);110int nvif_outp_dp_drive(struct nvif_outp *, u8 link_nr, u8 pe[4], u8 vs[4]);111int nvif_outp_dp_sst(struct nvif_outp *, int head, u32 watermark, u32 hblanksym, u32 vblanksym);112int nvif_outp_dp_mst_id_get(struct nvif_outp *, u32 *id);113int nvif_outp_dp_mst_id_put(struct nvif_outp *, u32 id);114int nvif_outp_dp_mst_vcpi(struct nvif_outp *, int head,115			  u8 start_slot, u8 num_slots, u16 pbn, u16 aligned_pbn);116#endif117