]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/crt: Extract intel_crt_sense_above_threshold()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 8 Dec 2025 18:26:34 +0000 (20:26 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 23 Jan 2026 03:20:28 +0000 (05:20 +0200)
Extract the CRT sense check into a helper instead of repeating
the same thing twice.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251208182637.334-17-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_crt.c

index 6f216ba887bcc2e843629194c0cd80ef3d656dcc..b71a8d97cdbb9982547d802dab4405ea94d28c9f 100644 (file)
@@ -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));