psr_context
struct psr_context psr_context = {0};
ret = dc_link_setup_psr(link, stream, &psr_config, &psr_context);
struct psr_context *psr_context)
return link->dc->link_srv->edp_setup_psr(link, stream, psr_config, psr_context);
struct psr_context *psr_context);
struct psr_context *psr_context)
psr_context->psrExitLinkTrainingRequired);
switch (psr_context->controllerId) {
psr_context->sdpTransmitLineNumDeadline);
masterCmdData1.bits.timehyst_frames = psr_context->timehyst_frames;
masterCmdData1.bits.hyst_lines = psr_context->hyst_lines;
psr_context->rfb_update_auto_en;
masterCmdData1.bits.dp_port_num = psr_context->transmitterId;
masterCmdData1.bits.dcp_sel = psr_context->controllerId;
masterCmdData1.bits.phy_type = psr_context->phyType;
psr_context->psrFrameCaptureIndicationReq;
masterCmdData1.bits.aux_chan = psr_context->channel;
masterCmdData1.bits.aux_repeat = psr_context->aux_repeats;
masterCmdData2.bits.dig_fe = psr_context->engineId;
masterCmdData2.bits.dig_be = psr_context->transmitterId;
psr_context->skipPsrWaitForPllLock;
masterCmdData2.bits.frame_delay = psr_context->frame_delay;
masterCmdData2.bits.smu_phy_id = psr_context->smuPhyId;
psr_context->numberOfControllers;
masterCmdData3.bits.psr_level = psr_context->psr_level.u32all;
struct psr_context *psr_context)
psr_context->psrExitLinkTrainingRequired);
switch (psr_context->controllerId) {
psr_context->sdpTransmitLineNumDeadline);
if (psr_context->allow_smu_optimizations)
masterCmdData1.bits.timehyst_frames = psr_context->timehyst_frames;
masterCmdData1.bits.hyst_lines = psr_context->hyst_lines;
psr_context->rfb_update_auto_en;
masterCmdData1.bits.dp_port_num = psr_context->transmitterId;
masterCmdData1.bits.dcp_sel = psr_context->controllerId;
masterCmdData1.bits.phy_type = psr_context->phyType;
psr_context->psrFrameCaptureIndicationReq;
masterCmdData1.bits.aux_chan = psr_context->channel;
masterCmdData1.bits.aux_repeat = psr_context->aux_repeats;
masterCmdData1.bits.allow_smu_optimizations = psr_context->allow_smu_optimizations;
masterCmdData2.bits.dig_fe = psr_context->engineId;
masterCmdData2.bits.dig_be = psr_context->transmitterId;
psr_context->skipPsrWaitForPllLock;
masterCmdData2.bits.frame_delay = psr_context->frame_delay;
masterCmdData2.bits.smu_phy_id = psr_context->smuPhyId;
psr_context->numberOfControllers;
masterCmdData3.bits.psr_level = psr_context->psr_level.u32all;
struct psr_context *psr_context,
psr_context->psrExitLinkTrainingRequired);
psr_context->sdpTransmitLineNumDeadline);
copy_settings_data->dpphy_inst = psr_context->transmitterId;
copy_settings_data->aux_inst = psr_context->channel;
copy_settings_data->digfe_inst = psr_context->engineId;
copy_settings_data->digbe_inst = psr_context->transmitterId;
copy_settings_data->psr_level = psr_context->psr_level.u32all;
copy_settings_data->smu_optimizations_en = psr_context->allow_smu_optimizations;
copy_settings_data->multi_disp_optimizations_en = psr_context->allow_multi_disp_optimizations;
copy_settings_data->frame_delay = psr_context->frame_delay;
copy_settings_data->frame_cap_ind = psr_context->psrFrameCaptureIndicationReq;
copy_settings_data->init_sdp_deadline = psr_context->sdpTransmitLineNumDeadline;
if (psr_context->su_granularity_required == 0)
copy_settings_data->su_y_granularity = psr_context->su_y_granularity;
copy_settings_data->line_time_in_us = psr_context->line_time_in_us;
copy_settings_data->rate_control_caps = psr_context->rate_control_caps;
copy_settings_data->force_ffu_mode = link->psr_settings.force_ffu_mode || psr_context->os_request_force_ffu;
copy_settings_data->dsc_slice_height = psr_context->dsc_slice_height;
struct psr_context *psr_context, uint8_t panel_inst);
struct psr_context *psr_context);
struct psr_context *psr_context);
struct psr_context *psr_context)
psr_context->controllerId = CONTROLLER_ID_UNDEFINED;
psr_context->su_granularity_required =
psr_context->su_y_granularity =
psr_context->line_time_in_us = psr_config->line_time_in_us;
psr_context->rate_control_caps = psr_config->rate_control_caps;
psr_context->channel = link->ddc->ddc_pin->hw_info.ddc_channel;
psr_context->transmitterId = link->link_enc->transmitter;
psr_context->engineId = link->link_enc->preferred_engine;
psr_context->controllerId =
psr_context->phyType = PHY_TYPE_UNIPHY;
psr_context->smuPhyId = transmitter_to_phy_id(link);
psr_context->crtcTimingVerticalTotal = stream->timing.v_total;
psr_context->vsync_rate_hz = div64_u64(div64_u64((stream->
psr_context->psrSupportedDisplayConfig = true;
psr_context->psrExitLinkTrainingRequired =
psr_context->sdpTransmitLineNumDeadline =
psr_context->psrFrameCaptureIndicationReq =
psr_context->skipPsrWaitForPllLock = 0; /* only = 1 in KV */
psr_context->numberOfControllers =
psr_context->rfb_update_auto_en = true;
psr_context->timehyst_frames = 2;
psr_context->hyst_lines = stream->timing.v_total / 2 / 100;
psr_context->aux_repeats = 10;
psr_context->psr_level.u32all = 0;
psr_context->psr_level.bits.SKIP_CRTC_DISABLE = true;
psr_context->psr_level.bits.SKIP_CRTC_DISABLE = true;
psr_context->allow_smu_optimizations = psr_config->allow_smu_optimizations;
psr_context->allow_multi_disp_optimizations = psr_config->allow_multi_disp_optimizations;
psr_context->psr_level.bits.DISABLE_PSR_ENTRY_ABORT = 1;
psr_context->psr_level.bits.DISABLE_ALPM = 0;
psr_context->psr_level.bits.ALPM_DEFAULT_PD_MODE = 1;
psr_context->frame_delay = 0;
psr_context->dsc_slice_height = psr_config->dsc_slice_height;
psr_context->os_request_force_ffu = psr_config->os_request_force_ffu;
link, psr_context, panel_inst);
link->psr_settings.psr_feature_enabled = dmcu->funcs->setup_psr(dmcu, link, psr_context);
struct psr_context *psr_context);