Lines Matching defs:lspcon

57 static struct intel_dp *lspcon_to_intel_dp(struct intel_lspcon *lspcon)
60 container_of(lspcon, struct intel_digital_port, lspcon);
80 static bool lspcon_detect_vendor(struct intel_lspcon *lspcon)
82 struct intel_dp *dp = lspcon_to_intel_dp(lspcon);
98 lspcon->vendor = LSPCON_VENDOR_MCA;
103 lspcon->vendor = LSPCON_VENDOR_PARADE;
115 static u32 get_hdr_status_reg(struct intel_lspcon *lspcon)
117 if (lspcon->vendor == LSPCON_VENDOR_MCA)
123 void lspcon_detect_hdr_capability(struct intel_lspcon *lspcon)
125 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
130 ret = drm_dp_dpcd_read(&intel_dp->aux, get_hdr_status_reg(lspcon),
135 lspcon->hdr_supported = false;
138 lspcon->hdr_supported = true;
142 static enum drm_lspcon_mode lspcon_get_current_mode(struct intel_lspcon *lspcon)
144 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
156 static int lspcon_get_mode_settle_timeout(struct intel_lspcon *lspcon)
165 return lspcon->vendor == LSPCON_VENDOR_PARADE ? 800 : 400;
168 static enum drm_lspcon_mode lspcon_wait_mode(struct intel_lspcon *lspcon,
171 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
175 current_mode = lspcon_get_current_mode(lspcon);
182 wait_for((current_mode = lspcon_get_current_mode(lspcon)) == mode,
183 lspcon_get_mode_settle_timeout(lspcon));
194 static int lspcon_change_mode(struct intel_lspcon *lspcon,
197 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
220 lspcon->mode = mode;
225 static bool lspcon_wake_native_aux_ch(struct intel_lspcon *lspcon)
227 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
231 if (drm_dp_dpcd_readb(&lspcon_to_intel_dp(lspcon)->aux, DP_DPCD_REV,
243 static bool lspcon_probe(struct intel_lspcon *lspcon)
247 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
252 expected_mode = lspcon_wake_native_aux_ch(lspcon) ?
273 lspcon->mode = lspcon_wait_mode(lspcon, expected_mode);
280 if (lspcon->mode != DRM_LSPCON_MODE_PCON) {
281 if (lspcon_change_mode(lspcon, DRM_LSPCON_MODE_PCON) < 0) {
289 static void lspcon_resume_in_pcon_wa(struct intel_lspcon *lspcon)
291 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
483 struct intel_lspcon *lspcon = enc_to_intel_lspcon(encoder);
487 if (lspcon->vendor == LSPCON_VENDOR_MCA)
495 drm_dbg_kms(&i915->drm, "Update HDR metadata for lspcon\n");
529 struct intel_lspcon *lspcon = &dig_port->lspcon;
534 if (!lspcon->active) {
628 struct intel_lspcon *lspcon = enc_to_intel_lspcon(encoder);
634 if (lspcon->vendor == LSPCON_VENDOR_MCA)
642 if (lspcon->hdr_supported) {
654 void lspcon_wait_pcon_mode(struct intel_lspcon *lspcon)
656 lspcon_wait_mode(lspcon, DRM_LSPCON_MODE_PCON);
662 struct intel_lspcon *lspcon = &dig_port->lspcon;
666 lspcon->active = false;
667 lspcon->mode = DRM_LSPCON_MODE_INVALID;
669 if (!lspcon_probe(lspcon)) {
670 drm_err(&i915->drm, "Failed to probe lspcon\n");
679 if (!lspcon_detect_vendor(lspcon)) {
685 lspcon->active = true;
700 struct intel_lspcon *lspcon = &dig_port->lspcon;
708 if (!lspcon->active) {
716 if (lspcon_wake_native_aux_ch(lspcon)) {
718 lspcon_resume_in_pcon_wa(lspcon);
723 if (lspcon_wait_mode(lspcon, expected_mode) == DRM_LSPCON_MODE_PCON)
726 if (lspcon_change_mode(lspcon, DRM_LSPCON_MODE_PCON))