Lines Matching defs:lspcon

60 	return &enc_to_dig_port(encoder)->lspcon;
63 static struct intel_dp *lspcon_to_intel_dp(struct intel_lspcon *lspcon)
66 container_of(lspcon, struct intel_digital_port, lspcon);
86 static bool lspcon_detect_vendor(struct intel_lspcon *lspcon)
88 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
104 lspcon->vendor = LSPCON_VENDOR_MCA;
109 lspcon->vendor = LSPCON_VENDOR_PARADE;
121 static u32 get_hdr_status_reg(struct intel_lspcon *lspcon)
123 if (lspcon->vendor == LSPCON_VENDOR_MCA)
131 struct intel_lspcon *lspcon = &dig_port->lspcon;
132 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
137 ret = drm_dp_dpcd_read(&intel_dp->aux, get_hdr_status_reg(lspcon),
142 lspcon->hdr_supported = false;
145 lspcon->hdr_supported = true;
148 return lspcon->hdr_supported;
151 static enum drm_lspcon_mode lspcon_get_current_mode(struct intel_lspcon *lspcon)
153 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
165 static int lspcon_get_mode_settle_timeout(struct intel_lspcon *lspcon)
174 return lspcon->vendor == LSPCON_VENDOR_PARADE ? 800 : 400;
177 static enum drm_lspcon_mode lspcon_wait_mode(struct intel_lspcon *lspcon,
180 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
184 current_mode = lspcon_get_current_mode(lspcon);
191 wait_for((current_mode = lspcon_get_current_mode(lspcon)) == mode,
192 lspcon_get_mode_settle_timeout(lspcon));
203 static int lspcon_change_mode(struct intel_lspcon *lspcon,
206 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
224 lspcon_get_mode_settle_timeout(lspcon));
230 lspcon->mode = mode;
235 static bool lspcon_wake_native_aux_ch(struct intel_lspcon *lspcon)
237 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
241 if (drm_dp_dpcd_readb(&lspcon_to_intel_dp(lspcon)->aux, DP_DPCD_REV,
253 static bool lspcon_probe(struct intel_lspcon *lspcon)
255 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
262 expected_mode = lspcon_wake_native_aux_ch(lspcon) ?
283 lspcon->mode = lspcon_wait_mode(lspcon, expected_mode);
290 if (lspcon->mode != DRM_LSPCON_MODE_PCON) {
291 if (lspcon_change_mode(lspcon, DRM_LSPCON_MODE_PCON) < 0) {
299 static void lspcon_resume_in_pcon_wa(struct intel_lspcon *lspcon)
301 struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
492 struct intel_lspcon *lspcon = enc_to_intel_lspcon(encoder);
497 if (lspcon->vendor == LSPCON_VENDOR_MCA)
505 drm_dbg_kms(display->drm, "Update HDR metadata for lspcon\n");
537 struct intel_lspcon *lspcon = &dig_port->lspcon;
544 if (!lspcon->active) {
639 struct intel_lspcon *lspcon = enc_to_intel_lspcon(encoder);
644 if (lspcon->vendor == LSPCON_VENDOR_MCA)
652 if (lspcon->hdr_supported) {
666 struct intel_lspcon *lspcon = &dig_port->lspcon;
668 lspcon_wait_mode(lspcon, DRM_LSPCON_MODE_PCON);
675 struct intel_lspcon *lspcon = &dig_port->lspcon;
678 lspcon->active = false;
679 lspcon->mode = DRM_LSPCON_MODE_INVALID;
681 if (!lspcon_probe(lspcon)) {
682 drm_err(display->drm, "Failed to probe lspcon\n");
691 if (!lspcon_detect_vendor(lspcon)) {
697 lspcon->active = true;
704 struct intel_lspcon *lspcon = &dig_port->lspcon;
706 return lspcon->active;
720 struct intel_lspcon *lspcon = &dig_port->lspcon;
726 if (!lspcon->active) {
734 if (lspcon_wake_native_aux_ch(lspcon)) {
736 lspcon_resume_in_pcon_wa(lspcon);
741 if (lspcon_wait_mode(lspcon, expected_mode) == DRM_LSPCON_MODE_PCON)
744 if (lspcon_change_mode(lspcon, DRM_LSPCON_MODE_PCON))