On Mon, 08 Dec 2025, Ville Syrjala <[email protected]> wrote:
> From: Ville Syrjälä <[email protected]>
>
> Extract the CRT sense check into a helper instead of repeating
> the same thing twice.
>
> Signed-off-by: Ville Syrjälä <[email protected]>

Reviewed-by: Jani Nikula <[email protected]>

> ---
>  drivers/gpu/drm/i915/display/intel_crt.c | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_crt.c 
> b/drivers/gpu/drm/i915/display/intel_crt.c
> index 6f216ba887bc..b71a8d97cdbb 100644
> --- a/drivers/gpu/drm/i915/display/intel_crt.c
> +++ b/drivers/gpu/drm/i915/display/intel_crt.c
> @@ -693,6 +693,11 @@ static bool intel_crt_detect_ddc(struct drm_connector 
> *connector)
>       return ret;
>  }
>  
> +static bool intel_crt_sense_above_threshold(struct intel_display *display)
> +{
> +     return intel_vga_read(display, VGA_IS0_R, true) & (1 << 4);
> +}
> +
>  static enum drm_connector_status
>  intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  {
> @@ -704,7 +709,6 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe 
> pipe)
>       u32 vsample;
>       u32 vblank, vblank_start, vblank_end;
>       u32 dsl;
> -     u8 st00;
>       enum drm_connector_status status;
>  
>       drm_dbg_kms(display->drm, "starting load-detect on CRT\n");
> @@ -738,8 +742,8 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe 
> pipe)
>                * border color for Color info.
>                */
>               intel_crtc_wait_for_next_vblank(intel_crtc_for_pipe(display, 
> pipe));
> -             st00 = intel_vga_read(display, VGA_IS0_R, true);
> -             status = ((st00 & (1 << 4)) != 0) ?
> +
> +             status = intel_crt_sense_above_threshold(display) ?
>                       connector_status_connected :
>                       connector_status_disconnected;
>  
> @@ -779,15 +783,13 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe 
> pipe)
>               while ((dsl = intel_de_read(display, PIPEDSL(display, pipe))) 
> <= vsample)
>                       ;
>               /*
> -              * Watch ST00 for an entire scanline
> +              * Watch sense for an entire scanline
>                */
>               detect = 0;
>               count = 0;
>               do {
>                       count++;
> -                     /* Read the ST00 VGA status register */
> -                     st00 = intel_vga_read(display, VGA_IS0_R, true);
> -                     if (st00 & (1 << 4))
> +                     if (intel_crt_sense_above_threshold(display))
>                               detect++;
>               } while ((intel_de_read(display, PIPEDSL(display, pipe)) == 
> dsl));

-- 
Jani Nikula, Intel

Reply via email to