Lines Matching refs:intel_dp

233 static bool intel_dp_get_alpm_status(struct intel_dp *intel_dp)  in intel_dp_get_alpm_status()  argument
237 if (drm_dp_dpcd_readb(&intel_dp->aux, DP_RECEIVER_ALPM_CAP, in intel_dp_get_alpm_status()
243 static u8 intel_dp_get_sink_sync_latency(struct intel_dp *intel_dp) in intel_dp_get_sink_sync_latency() argument
247 if (drm_dp_dpcd_readb(&intel_dp->aux, in intel_dp_get_sink_sync_latency()
255 static u16 intel_dp_get_su_x_granulartiy(struct intel_dp *intel_dp) in intel_dp_get_su_x_granulartiy() argument
264 if (!(intel_dp->psr_dpcd[1] & DP_PSR2_SU_GRANULARITY_REQUIRED)) in intel_dp_get_su_x_granulartiy()
267 r = drm_dp_dpcd_read(&intel_dp->aux, DP_PSR2_SU_X_GRANULARITY, &val, 2); in intel_dp_get_su_x_granulartiy()
281 void intel_psr_init_dpcd(struct intel_dp *intel_dp) in intel_psr_init_dpcd() argument
284 to_i915(dp_to_dig_port(intel_dp)->base.base.dev); in intel_psr_init_dpcd()
286 drm_dp_dpcd_read(&intel_dp->aux, DP_PSR_SUPPORT, intel_dp->psr_dpcd, in intel_psr_init_dpcd()
287 sizeof(intel_dp->psr_dpcd)); in intel_psr_init_dpcd()
289 if (!intel_dp->psr_dpcd[0]) in intel_psr_init_dpcd()
292 intel_dp->psr_dpcd[0]); in intel_psr_init_dpcd()
294 if (drm_dp_has_quirk(&intel_dp->desc, DP_DPCD_QUIRK_NO_PSR)) { in intel_psr_init_dpcd()
299 if (!(intel_dp->edp_dpcd[1] & DP_EDP_SET_POWER_CAP)) { in intel_psr_init_dpcd()
306 intel_dp_get_sink_sync_latency(intel_dp); in intel_psr_init_dpcd()
309 dev_priv->psr.dp = intel_dp; in intel_psr_init_dpcd()
312 (intel_dp->psr_dpcd[0] == DP_PSR2_WITH_Y_COORD_IS_SUPPORTED)) { in intel_psr_init_dpcd()
313 bool y_req = intel_dp->psr_dpcd[1] & in intel_psr_init_dpcd()
315 bool alpm = intel_dp_get_alpm_status(intel_dp); in intel_psr_init_dpcd()
334 intel_dp_get_colorimetry_status(intel_dp); in intel_psr_init_dpcd()
336 intel_dp_get_su_x_granulartiy(intel_dp); in intel_psr_init_dpcd()
341 static void intel_psr_setup_vsc(struct intel_dp *intel_dp, in intel_psr_setup_vsc() argument
344 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); in intel_psr_setup_vsc()
345 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_setup_vsc()
374 static void hsw_psr_setup_aux(struct intel_dp *intel_dp) in hsw_psr_setup_aux() argument
376 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in hsw_psr_setup_aux()
396 aux_clock_divider = intel_dp->get_aux_clock_divider(intel_dp, 0); in hsw_psr_setup_aux()
399 aux_ctl = intel_dp->get_aux_send_ctl(intel_dp, sizeof(aux_msg), in hsw_psr_setup_aux()
407 static void intel_psr_enable_sink(struct intel_dp *intel_dp) in intel_psr_enable_sink() argument
409 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_enable_sink()
414 drm_dp_dpcd_writeb(&intel_dp->aux, DP_RECEIVER_ALPM_CONFIG, in intel_psr_enable_sink()
425 drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_EN_CFG, dpcd_val); in intel_psr_enable_sink()
427 drm_dp_dpcd_writeb(&intel_dp->aux, DP_SET_POWER, DP_SET_POWER_D0); in intel_psr_enable_sink()
430 static u32 intel_psr1_get_tp_time(struct intel_dp *intel_dp) in intel_psr1_get_tp_time() argument
432 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr1_get_tp_time()
456 if (intel_dp_source_supports_hbr2(intel_dp) && in intel_psr1_get_tp_time()
457 drm_dp_tps3_supported(intel_dp->dpcd)) in intel_psr1_get_tp_time()
465 static void hsw_activate_psr1(struct intel_dp *intel_dp) in hsw_activate_psr1() argument
467 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in hsw_activate_psr1()
489 val |= intel_psr1_get_tp_time(intel_dp); in hsw_activate_psr1()
498 static void hsw_activate_psr2(struct intel_dp *intel_dp) in hsw_activate_psr2() argument
500 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in hsw_activate_psr2()
536 static bool intel_psr2_config_valid(struct intel_dp *intel_dp, in intel_psr2_config_valid() argument
539 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr2_config_valid()
592 void intel_psr_compute_config(struct intel_dp *intel_dp, in intel_psr_compute_config() argument
595 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); in intel_psr_compute_config()
596 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_compute_config()
604 if (intel_dp != dev_priv->psr.dp) in intel_psr_compute_config()
629 psr_setup_time = drm_dp_psr_setup_time(intel_dp->psr_dpcd); in intel_psr_compute_config()
632 intel_dp->psr_dpcd[1]); in intel_psr_compute_config()
644 crtc_state->has_psr2 = intel_psr2_config_valid(intel_dp, crtc_state); in intel_psr_compute_config()
647 static void intel_psr_activate(struct intel_dp *intel_dp) in intel_psr_activate() argument
649 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_activate()
659 hsw_activate_psr2(intel_dp); in intel_psr_activate()
661 hsw_activate_psr1(intel_dp); in intel_psr_activate()
685 static void intel_psr_enable_source(struct intel_dp *intel_dp, in intel_psr_enable_source() argument
688 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_enable_source()
696 hsw_psr_setup_aux(intel_dp); in intel_psr_enable_source()
729 struct intel_dp *intel_dp = dev_priv->psr.dp; in intel_psr_enable_locked() local
739 intel_psr_setup_vsc(intel_dp, crtc_state); in intel_psr_enable_locked()
740 intel_psr_enable_sink(intel_dp); in intel_psr_enable_locked()
741 intel_psr_enable_source(intel_dp, crtc_state); in intel_psr_enable_locked()
744 intel_psr_activate(intel_dp); in intel_psr_enable_locked()
754 void intel_psr_enable(struct intel_dp *intel_dp, in intel_psr_enable() argument
757 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_enable()
803 static void intel_psr_disable_locked(struct intel_dp *intel_dp) in intel_psr_disable_locked() argument
805 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_disable_locked()
833 drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_EN_CFG, 0); in intel_psr_disable_locked()
845 void intel_psr_disable(struct intel_dp *intel_dp, in intel_psr_disable() argument
848 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_disable()
858 intel_psr_disable_locked(intel_dp); in intel_psr_disable()
894 void intel_psr_update(struct intel_dp *intel_dp, in intel_psr_update() argument
897 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_update()
901 if (!CAN_PSR(dev_priv) || READ_ONCE(psr->dp) != intel_dp) in intel_psr_update()
927 intel_psr_disable_locked(intel_dp); in intel_psr_update()
1253 void intel_psr_short_pulse(struct intel_dp *intel_dp) in intel_psr_short_pulse() argument
1255 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_short_pulse()
1262 if (!CAN_PSR(dev_priv) || !intel_dp_is_edp(intel_dp)) in intel_psr_short_pulse()
1267 if (!psr->enabled || psr->dp != intel_dp) in intel_psr_short_pulse()
1270 if (drm_dp_dpcd_readb(&intel_dp->aux, DP_PSR_STATUS, &val) != 1) { in intel_psr_short_pulse()
1277 intel_psr_disable_locked(intel_dp); in intel_psr_short_pulse()
1281 if (drm_dp_dpcd_readb(&intel_dp->aux, DP_PSR_ERROR_STATUS, &val) != 1) { in intel_psr_short_pulse()
1297 intel_psr_disable_locked(intel_dp); in intel_psr_short_pulse()
1301 drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_ERROR_STATUS, val); in intel_psr_short_pulse()
1306 bool intel_psr_enabled(struct intel_dp *intel_dp) in intel_psr_enabled() argument
1308 struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); in intel_psr_enabled()
1311 if (!CAN_PSR(dev_priv) || !intel_dp_is_edp(intel_dp)) in intel_psr_enabled()
1315 ret = (dev_priv->psr.dp == intel_dp && dev_priv->psr.enabled); in intel_psr_enabled()