Lines Matching refs:intel_dp
163 static bool intel_dp_get_colorimetry_status(struct intel_dp *intel_dp) in intel_dp_get_colorimetry_status() argument
167 if (drm_dp_dpcd_readb(&intel_dp->aux, DP_DPRX_FEATURE_ENUMERATION_LIST, in intel_dp_get_colorimetry_status()
173 static bool intel_dp_get_alpm_status(struct intel_dp *intel_dp) in intel_dp_get_alpm_status() argument
177 if (drm_dp_dpcd_readb(&intel_dp->aux, DP_RECEIVER_ALPM_CAP, in intel_dp_get_alpm_status()
183 static u8 intel_dp_get_sink_sync_latency(struct intel_dp *intel_dp) in intel_dp_get_sink_sync_latency() argument
187 if (drm_dp_dpcd_readb(&intel_dp->aux, in intel_dp_get_sink_sync_latency()
195 void intel_psr_init_dpcd(struct intel_dp *intel_dp) in intel_psr_init_dpcd() argument
198 to_i915(dp_to_dig_port(intel_dp)->base.base.dev); in intel_psr_init_dpcd()
200 drm_dp_dpcd_read(&intel_dp->aux, DP_PSR_SUPPORT, intel_dp->psr_dpcd, in intel_psr_init_dpcd()
201 sizeof(intel_dp->psr_dpcd)); in intel_psr_init_dpcd()
203 if (!intel_dp->psr_dpcd[0]) in intel_psr_init_dpcd()
206 intel_dp->psr_dpcd[0]); in intel_psr_init_dpcd()
208 if (!(intel_dp->edp_dpcd[1] & DP_EDP_SET_POWER_CAP)) { in intel_psr_init_dpcd()
214 intel_dp_get_sink_sync_latency(intel_dp); in intel_psr_init_dpcd()
217 (intel_dp->psr_dpcd[0] == DP_PSR2_WITH_Y_COORD_IS_SUPPORTED)) { in intel_psr_init_dpcd()
218 bool y_req = intel_dp->psr_dpcd[1] & in intel_psr_init_dpcd()
220 bool alpm = intel_dp_get_alpm_status(intel_dp); in intel_psr_init_dpcd()
239 intel_dp_get_colorimetry_status(intel_dp); in intel_psr_init_dpcd()
244 static void intel_psr_setup_vsc(struct intel_dp *intel_dp, in intel_psr_setup_vsc() argument
247 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); in intel_psr_setup_vsc()
276 static void hsw_psr_setup_aux(struct intel_dp *intel_dp) in hsw_psr_setup_aux() argument
278 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); in hsw_psr_setup_aux()
299 aux_clock_divider = intel_dp->get_aux_clock_divider(intel_dp, 0); in hsw_psr_setup_aux()
302 aux_ctl = intel_dp->get_aux_send_ctl(intel_dp, sizeof(aux_msg), in hsw_psr_setup_aux()
310 static void intel_psr_enable_sink(struct intel_dp *intel_dp) in intel_psr_enable_sink() argument
312 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); in intel_psr_enable_sink()
319 drm_dp_dpcd_writeb(&intel_dp->aux, DP_RECEIVER_ALPM_CONFIG, in intel_psr_enable_sink()
328 drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_EN_CFG, dpcd_val); in intel_psr_enable_sink()
330 drm_dp_dpcd_writeb(&intel_dp->aux, DP_SET_POWER, DP_SET_POWER_D0); in intel_psr_enable_sink()
333 static void hsw_activate_psr1(struct intel_dp *intel_dp) in hsw_activate_psr1() argument
335 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); in hsw_activate_psr1()
377 if (intel_dp_source_supports_hbr2(intel_dp) && in hsw_activate_psr1()
378 drm_dp_tps3_supported(intel_dp->dpcd)) in hsw_activate_psr1()
390 static void hsw_activate_psr2(struct intel_dp *intel_dp) in hsw_activate_psr2() argument
392 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); in hsw_activate_psr2()
427 static bool intel_psr2_config_valid(struct intel_dp *intel_dp, in intel_psr2_config_valid() argument
430 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); in intel_psr2_config_valid()
462 void intel_psr_compute_config(struct intel_dp *intel_dp, in intel_psr_compute_config() argument
465 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); in intel_psr_compute_config()
504 psr_setup_time = drm_dp_psr_setup_time(intel_dp->psr_dpcd); in intel_psr_compute_config()
507 intel_dp->psr_dpcd[1]); in intel_psr_compute_config()
519 crtc_state->has_psr2 = intel_psr2_config_valid(intel_dp, crtc_state); in intel_psr_compute_config()
523 static void intel_psr_activate(struct intel_dp *intel_dp) in intel_psr_activate() argument
525 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); in intel_psr_activate()
537 hsw_activate_psr2(intel_dp); in intel_psr_activate()
539 hsw_activate_psr1(intel_dp); in intel_psr_activate()
544 static void intel_psr_enable_source(struct intel_dp *intel_dp, in intel_psr_enable_source() argument
547 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); in intel_psr_enable_source()
556 hsw_psr_setup_aux(intel_dp); in intel_psr_enable_source()
599 void intel_psr_enable(struct intel_dp *intel_dp, in intel_psr_enable() argument
602 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); in intel_psr_enable()
622 intel_psr_setup_vsc(intel_dp, crtc_state); in intel_psr_enable()
623 intel_psr_enable_sink(intel_dp); in intel_psr_enable()
624 intel_psr_enable_source(intel_dp, crtc_state); in intel_psr_enable()
625 dev_priv->psr.enabled = intel_dp; in intel_psr_enable()
627 intel_psr_activate(intel_dp); in intel_psr_enable()
634 intel_psr_disable_source(struct intel_dp *intel_dp) in intel_psr_disable_source() argument
636 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); in intel_psr_disable_source()
675 static void intel_psr_disable_locked(struct intel_dp *intel_dp) in intel_psr_disable_locked() argument
677 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); in intel_psr_disable_locked()
686 intel_psr_disable_source(intel_dp); in intel_psr_disable_locked()
689 drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_EN_CFG, 0); in intel_psr_disable_locked()
701 void intel_psr_disable(struct intel_dp *intel_dp, in intel_psr_disable() argument
704 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); in intel_psr_disable()
715 intel_psr_disable_locked(intel_dp); in intel_psr_disable()
759 struct intel_dp *intel_dp; in __psr_wait_for_idle_locked() local
764 intel_dp = dev_priv->psr.enabled; in __psr_wait_for_idle_locked()
765 if (!intel_dp) in __psr_wait_for_idle_locked()
978 void intel_psr_short_pulse(struct intel_dp *intel_dp) in intel_psr_short_pulse() argument
980 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); in intel_psr_short_pulse()
989 if (!CAN_PSR(dev_priv) || !intel_dp_is_edp(intel_dp)) in intel_psr_short_pulse()
994 if (psr->enabled != intel_dp) in intel_psr_short_pulse()
997 if (drm_dp_dpcd_readb(&intel_dp->aux, DP_PSR_STATUS, &val) != 1) { in intel_psr_short_pulse()
1004 intel_psr_disable_locked(intel_dp); in intel_psr_short_pulse()
1007 if (drm_dp_dpcd_readb(&intel_dp->aux, DP_PSR_ERROR_STATUS, &val) != 1) { in intel_psr_short_pulse()
1023 intel_psr_disable_locked(intel_dp); in intel_psr_short_pulse()
1025 drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_ERROR_STATUS, val); in intel_psr_short_pulse()