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

Jani Nikula jani.nikula at linux.intel.com
Mon Apr 8 09:50:34 UTC 2024


On Mon, 08 Apr 2024, Ankit Nautiyal <ankit.k.nautiyal at 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 at intel.com>

Reviewed-by: Jani Nikula <jani.nikula at 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;
>  	}

-- 
Jani Nikula, Intel


More information about the Intel-gfx mailing list