diff mbox series

[2/3] drm/i915/lspcon: Separate out function to set pcon mode

Message ID 20240408050558.865396-3-ankit.k.nautiyal@intel.com (mailing list archive)
State New
Headers show
Series Avoid unwanted lspcon init and probe warnings | expand

Commit Message

Nautiyal, Ankit K April 8, 2024, 5:05 a.m. UTC
Currently lspcon_probe tries to probe for LSPCON and also set the
PCON mode on the LSPCON. If any of these fails, it returns fail
resulting in error message. So even if there is nothing connected to
LSPCON port we get error messages for probe failure.

Separate out the function to set pcon mode from the lspcon_probe
function, and show the error message only when the set pcon mode fails.
Do not show error message if no LSPCON is detected.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_lspcon.c | 24 ++++++++++++++-------
 1 file changed, 16 insertions(+), 8 deletions(-)

Comments

Jani Nikula April 8, 2024, 9:50 a.m. UTC | #1
On Mon, 08 Apr 2024, Ankit Nautiyal <ankit.k.nautiyal@intel.com> wrote:
> Currently lspcon_probe tries to probe for LSPCON and also set the
> PCON mode on the LSPCON. If any of these fails, it returns fail
> resulting in error message. So even if there is nothing connected to
> LSPCON port we get error messages for probe failure.
>
> Separate out the function to set pcon mode from the lspcon_probe
> function, and show the error message only when the set pcon mode fails.
> Do not show error message if no LSPCON is detected.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_lspcon.c | 24 ++++++++++++++-------
>  1 file changed, 16 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.c b/drivers/gpu/drm/i915/display/intel_lspcon.c
> index 36e8d9fb2bbb..16ee0dc179f7 100644
> --- a/drivers/gpu/drm/i915/display/intel_lspcon.c
> +++ b/drivers/gpu/drm/i915/display/intel_lspcon.c
> @@ -277,17 +277,22 @@ static bool lspcon_probe(struct intel_lspcon *lspcon)
>  	drm_dbg_kms(&i915->drm, "LSPCON detected\n");
>  	lspcon->mode = lspcon_wait_mode(lspcon, expected_mode);
>  
> +	return true;
> +}
> +
> +static bool lspcon_set_pcon_mode(struct intel_lspcon *lspcon)
> +{
>  	/*
>  	 * In the SW state machine, lets Put LSPCON in PCON mode only.
>  	 * In this way, it will work with both HDMI 1.4 sinks as well as HDMI
>  	 * 2.0 sinks.
>  	 */
> -	if (lspcon->mode != DRM_LSPCON_MODE_PCON) {
> -		if (lspcon_change_mode(lspcon, DRM_LSPCON_MODE_PCON) < 0) {
> -			drm_err(&i915->drm, "LSPCON mode change to PCON failed\n");
> -			return false;
> -		}
> -	}
> +	if (lspcon->mode == DRM_LSPCON_MODE_PCON)
> +		return true;
> +
> +	if (lspcon_change_mode(lspcon, DRM_LSPCON_MODE_PCON) < 0)
> +		return false;
> +
>  	return true;
>  }
>  
> @@ -671,8 +676,11 @@ bool lspcon_init(struct intel_digital_port *dig_port)
>  	lspcon->active = false;
>  	lspcon->mode = DRM_LSPCON_MODE_INVALID;
>  
> -	if (!lspcon_probe(lspcon)) {
> -		drm_err(&i915->drm, "Failed to probe lspcon\n");
> +	if (!lspcon_probe(lspcon))
> +		return false;
> +
> +	if (!lspcon_set_pcon_mode(lspcon)) {
> +		drm_err(&i915->drm, "LSPCON mode change to PCON failed\n");
>  		return false;
>  	}
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.c b/drivers/gpu/drm/i915/display/intel_lspcon.c
index 36e8d9fb2bbb..16ee0dc179f7 100644
--- a/drivers/gpu/drm/i915/display/intel_lspcon.c
+++ b/drivers/gpu/drm/i915/display/intel_lspcon.c
@@ -277,17 +277,22 @@  static bool lspcon_probe(struct intel_lspcon *lspcon)
 	drm_dbg_kms(&i915->drm, "LSPCON detected\n");
 	lspcon->mode = lspcon_wait_mode(lspcon, expected_mode);
 
+	return true;
+}
+
+static bool lspcon_set_pcon_mode(struct intel_lspcon *lspcon)
+{
 	/*
 	 * In the SW state machine, lets Put LSPCON in PCON mode only.
 	 * In this way, it will work with both HDMI 1.4 sinks as well as HDMI
 	 * 2.0 sinks.
 	 */
-	if (lspcon->mode != DRM_LSPCON_MODE_PCON) {
-		if (lspcon_change_mode(lspcon, DRM_LSPCON_MODE_PCON) < 0) {
-			drm_err(&i915->drm, "LSPCON mode change to PCON failed\n");
-			return false;
-		}
-	}
+	if (lspcon->mode == DRM_LSPCON_MODE_PCON)
+		return true;
+
+	if (lspcon_change_mode(lspcon, DRM_LSPCON_MODE_PCON) < 0)
+		return false;
+
 	return true;
 }
 
@@ -671,8 +676,11 @@  bool lspcon_init(struct intel_digital_port *dig_port)
 	lspcon->active = false;
 	lspcon->mode = DRM_LSPCON_MODE_INVALID;
 
-	if (!lspcon_probe(lspcon)) {
-		drm_err(&i915->drm, "Failed to probe lspcon\n");
+	if (!lspcon_probe(lspcon))
+		return false;
+
+	if (!lspcon_set_pcon_mode(lspcon)) {
+		drm_err(&i915->drm, "LSPCON mode change to PCON failed\n");
 		return false;
 	}