drm/edid: add drm_edid_is_digital()
authorJani Nikula <jani.nikula@intel.com>
Thu, 24 Aug 2023 13:46:02 +0000 (16:46 +0300)
committerJani Nikula <jani.nikula@intel.com>
Fri, 1 Sep 2023 08:47:53 +0000 (11:47 +0300)
Checking edid->input & DRM_EDID_INPUT_DIGITAL is common enough to
deserve a helper that also lets us abstract the raw EDID a bit better.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/4bdb407bf189fd922be022eb2f9564692377c81d.1692884619.git.jani.nikula@intel.com
drivers/gpu/drm/drm_edid.c
include/drm/drm_edid.h

index f95152fac4270fa65bde655d3de32df70521cff7..307a414733a4f3f6f1f3c2d78b1f43083bc0b444 100644 (file)
@@ -3110,7 +3110,7 @@ drm_monitor_supports_rb(const struct drm_edid *drm_edid)
                return ret;
        }
 
-       return ((drm_edid->edid->input & DRM_EDID_INPUT_DIGITAL) != 0);
+       return drm_edid_is_digital(drm_edid);
 }
 
 static void
@@ -6532,7 +6532,7 @@ static void update_display_info(struct drm_connector *connector,
        if (edid->revision < 3)
                goto out;
 
-       if (!(edid->input & DRM_EDID_INPUT_DIGITAL))
+       if (!drm_edid_is_digital(drm_edid))
                goto out;
 
        info->color_formats |= DRM_COLOR_FORMAT_RGB444;
@@ -7348,3 +7348,16 @@ static void _drm_update_tile_info(struct drm_connector *connector,
                connector->tile_group = NULL;
        }
 }
+
+/**
+ * drm_edid_is_digital - is digital?
+ * @drm_edid: The EDID
+ *
+ * Return true if input is digital.
+ */
+bool drm_edid_is_digital(const struct drm_edid *drm_edid)
+{
+       return drm_edid && drm_edid->edid &&
+               drm_edid->edid->input & DRM_EDID_INPUT_DIGITAL;
+}
+EXPORT_SYMBOL(drm_edid_is_digital);
index 169755d3de1908e530b0cbb7531103eacbe75878..e8d850e77d6db1964a19bb729b08fb3b0e6bc835 100644 (file)
@@ -618,6 +618,7 @@ const struct drm_edid *drm_edid_read_switcheroo(struct drm_connector *connector,
 int drm_edid_connector_update(struct drm_connector *connector,
                              const struct drm_edid *edid);
 int drm_edid_connector_add_modes(struct drm_connector *connector);
+bool drm_edid_is_digital(const struct drm_edid *drm_edid);
 
 const u8 *drm_find_edid_extension(const struct drm_edid *drm_edid,
                                  int ext_id, int *ext_index);