6 #ifndef STREAM_ENCODER_H_
7 #define STREAM_ENCODER_H_
9 #include "audio_types.h"
13 struct dc_crtc_timing;
15 struct encoder_info_packet {
24 struct encoder_info_frame {
25 /* auxiliary video information */
26 struct encoder_info_packet avi;
27 struct encoder_info_packet gamut;
28 struct encoder_info_packet vendor;
29 /* source product description */
30 struct encoder_info_packet spd;
31 /* video stream configuration */
32 struct encoder_info_packet vsc;
33 /* HDR Static MetaData */
34 struct encoder_info_packet hdrsmd;
37 struct encoder_unblank_param {
38 struct dc_link_settings link_settings;
39 unsigned int pixel_clk_khz;
42 struct encoder_set_dp_phy_pattern_param {
43 enum dp_test_pattern dp_phy_pattern;
44 const uint8_t *custom_pattern;
45 uint32_t custom_pattern_size;
46 enum dp_panel_mode dp_panel_mode;
49 struct stream_encoder {
50 const struct stream_encoder_funcs *funcs;
51 struct dc_context *ctx;
56 struct stream_encoder_funcs {
57 void (*dp_set_stream_attribute)(
58 struct stream_encoder *enc,
59 struct dc_crtc_timing *crtc_timing,
60 enum dc_color_space output_color_space);
62 void (*hdmi_set_stream_attribute)(
63 struct stream_encoder *enc,
64 struct dc_crtc_timing *crtc_timing,
65 int actual_pix_clk_khz,
68 void (*dvi_set_stream_attribute)(
69 struct stream_encoder *enc,
70 struct dc_crtc_timing *crtc_timing,
73 void (*set_mst_bandwidth)(
74 struct stream_encoder *enc,
75 struct fixed31_32 avg_time_slots_per_mtp);
77 void (*update_hdmi_info_packets)(
78 struct stream_encoder *enc,
79 const struct encoder_info_frame *info_frame);
81 void (*stop_hdmi_info_packets)(
82 struct stream_encoder *enc);
84 void (*update_dp_info_packets)(
85 struct stream_encoder *enc,
86 const struct encoder_info_frame *info_frame);
88 void (*stop_dp_info_packets)(
89 struct stream_encoder *enc);
92 struct stream_encoder *enc);
95 struct stream_encoder *enc,
96 const struct encoder_unblank_param *param);
98 void (*audio_mute_control)(
99 struct stream_encoder *enc, bool mute);
101 void (*dp_audio_setup)(
102 struct stream_encoder *enc,
103 unsigned int az_inst,
104 struct audio_info *info);
106 void (*dp_audio_enable) (
107 struct stream_encoder *enc);
109 void (*dp_audio_disable) (
110 struct stream_encoder *enc);
112 void (*hdmi_audio_setup)(
113 struct stream_encoder *enc,
114 unsigned int az_inst,
115 struct audio_info *info,
116 struct audio_crtc_info *audio_crtc_info);
118 void (*hdmi_audio_disable) (
119 struct stream_encoder *enc);
121 void (*setup_stereo_sync) (
122 struct stream_encoder *enc,
127 struct stream_encoder *enc, bool enable);
130 #endif /* STREAM_ENCODER_H_ */