0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 #include "link_hwss_hpo_frl.h"
0026 #include "core_types.h"
0027 #include "virtual/virtual_link_hwss.h"
0028
0029 static void setup_hpo_frl_stream_attribute(struct pipe_ctx *pipe_ctx)
0030 {
0031 struct hpo_frl_stream_encoder *stream_enc = pipe_ctx->stream_res.hpo_frl_stream_enc;
0032 struct dc_stream_state *stream = pipe_ctx->stream;
0033 struct pipe_ctx *odm_pipe;
0034 int odm_combine_num_segments = 1;
0035
0036
0037 for (odm_pipe = pipe_ctx->next_odm_pipe; odm_pipe; odm_pipe = odm_pipe->next_odm_pipe)
0038 odm_combine_num_segments++;
0039
0040 stream_enc->funcs->hdmi_frl_set_stream_attribute(
0041 stream_enc,
0042 &stream->timing,
0043 &stream->link->frl_link_settings.borrow_params,
0044 odm_combine_num_segments);
0045 }
0046
0047 static const struct link_hwss hpo_frl_link_hwss = {
0048 .setup_stream_encoder = virtual_setup_stream_encoder,
0049 .reset_stream_encoder = virtual_reset_stream_encoder,
0050 .setup_stream_attribute = setup_hpo_frl_stream_attribute,
0051 };
0052
0053 bool can_use_hpo_frl_link_hwss(const struct dc_link *link,
0054 const struct link_resource *link_res)
0055 {
0056 return link_res->hpo_frl_link_enc != NULL;
0057 }
0058
0059 const struct link_hwss *get_hpo_frl_link_hwss(void)
0060 {
0061 return &hpo_frl_link_hwss;
0062 }