| /* |
| * stream_encoder.h |
| * |
| */ |
| |
| #ifndef STREAM_ENCODER_H_ |
| #define STREAM_ENCODER_H_ |
| |
| #include "audio_types.h" |
| |
| struct dc_bios; |
| struct dc_context; |
| struct dc_crtc_timing; |
| |
| struct encoder_info_packet { |
| bool valid; |
| uint8_t hb0; |
| uint8_t hb1; |
| uint8_t hb2; |
| uint8_t hb3; |
| uint8_t sb[32]; |
| }; |
| |
| struct encoder_info_frame { |
| /* auxiliary video information */ |
| struct encoder_info_packet avi; |
| struct encoder_info_packet gamut; |
| struct encoder_info_packet vendor; |
| /* source product description */ |
| struct encoder_info_packet spd; |
| /* video stream configuration */ |
| struct encoder_info_packet vsc; |
| /* HDR Static MetaData */ |
| struct encoder_info_packet hdrsmd; |
| }; |
| |
| struct encoder_unblank_param { |
| struct dc_link_settings link_settings; |
| unsigned int pixel_clk_khz; |
| }; |
| |
| struct encoder_set_dp_phy_pattern_param { |
| enum dp_test_pattern dp_phy_pattern; |
| const uint8_t *custom_pattern; |
| uint32_t custom_pattern_size; |
| enum dp_panel_mode dp_panel_mode; |
| }; |
| |
| struct stream_encoder { |
| const struct stream_encoder_funcs *funcs; |
| struct dc_context *ctx; |
| struct dc_bios *bp; |
| enum engine_id id; |
| }; |
| |
| struct stream_encoder_funcs { |
| void (*dp_set_stream_attribute)( |
| struct stream_encoder *enc, |
| struct dc_crtc_timing *crtc_timing, |
| enum dc_color_space output_color_space); |
| |
| void (*hdmi_set_stream_attribute)( |
| struct stream_encoder *enc, |
| struct dc_crtc_timing *crtc_timing, |
| int actual_pix_clk_khz, |
| bool enable_audio); |
| |
| void (*dvi_set_stream_attribute)( |
| struct stream_encoder *enc, |
| struct dc_crtc_timing *crtc_timing, |
| bool is_dual_link); |
| |
| void (*set_mst_bandwidth)( |
| struct stream_encoder *enc, |
| struct fixed31_32 avg_time_slots_per_mtp); |
| |
| void (*update_hdmi_info_packets)( |
| struct stream_encoder *enc, |
| const struct encoder_info_frame *info_frame); |
| |
| void (*stop_hdmi_info_packets)( |
| struct stream_encoder *enc); |
| |
| void (*update_dp_info_packets)( |
| struct stream_encoder *enc, |
| const struct encoder_info_frame *info_frame); |
| |
| void (*stop_dp_info_packets)( |
| struct stream_encoder *enc); |
| |
| void (*dp_blank)( |
| struct stream_encoder *enc); |
| |
| void (*dp_unblank)( |
| struct stream_encoder *enc, |
| const struct encoder_unblank_param *param); |
| |
| void (*audio_mute_control)( |
| struct stream_encoder *enc, bool mute); |
| |
| void (*dp_audio_setup)( |
| struct stream_encoder *enc, |
| unsigned int az_inst, |
| struct audio_info *info); |
| |
| void (*dp_audio_enable) ( |
| struct stream_encoder *enc); |
| |
| void (*dp_audio_disable) ( |
| struct stream_encoder *enc); |
| |
| void (*hdmi_audio_setup)( |
| struct stream_encoder *enc, |
| unsigned int az_inst, |
| struct audio_info *info, |
| struct audio_crtc_info *audio_crtc_info); |
| |
| void (*hdmi_audio_disable) ( |
| struct stream_encoder *enc); |
| |
| void (*setup_stereo_sync) ( |
| struct stream_encoder *enc, |
| int tg_inst, |
| bool enable); |
| |
| void (*set_avmute)( |
| struct stream_encoder *enc, bool enable); |
| }; |
| |
| #endif /* STREAM_ENCODER_H_ */ |