[Intel-gfx] [PATCH 2/6] drm/i915/display: use drm_edid_is_digital()
Ville Syrjälä
ville.syrjala at linux.intel.com
Thu Aug 31 17:24:58 UTC 2023
On Thu, Aug 24, 2023 at 04:46:03PM +0300, Jani Nikula wrote:
> Reduce the use of struct edid and drm_edid_raw().
>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_crt.c | 11 ++++-------
> drivers/gpu/drm/i915/display/intel_hdmi.c | 9 ++++-----
> drivers/gpu/drm/i915/display/intel_sdvo.c | 7 ++-----
> 3 files changed, 10 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_crt.c b/drivers/gpu/drm/i915/display/intel_crt.c
> index f66340b4caf0..310670bb6c25 100644
> --- a/drivers/gpu/drm/i915/display/intel_crt.c
> +++ b/drivers/gpu/drm/i915/display/intel_crt.c
> @@ -657,21 +657,18 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
> drm_edid = intel_crt_get_edid(connector, i2c);
>
> if (drm_edid) {
> - const struct edid *edid = drm_edid_raw(drm_edid);
> - bool is_digital = edid->input & DRM_EDID_INPUT_DIGITAL;
> -
> /*
> * This may be a DVI-I connector with a shared DDC
> * link between analog and digital outputs, so we
> * have to check the EDID input spec of the attached device.
> */
> - if (!is_digital) {
> + if (drm_edid_is_digital(drm_edid)) {
> drm_dbg_kms(&dev_priv->drm,
> - "CRT detected via DDC:0x50 [EDID]\n");
> - ret = true;
> + "CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
> } else {
> drm_dbg_kms(&dev_priv->drm,
> - "CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
> + "CRT detected via DDC:0x50 [EDID]\n");
> + ret = true;
Inverting the check made the diff a bit confusing, but looks
correct in the end.
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> }
> } else {
> drm_dbg_kms(&dev_priv->drm,
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 9442bf43550e..aa9915098dda 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -2452,7 +2452,6 @@ intel_hdmi_set_edid(struct drm_connector *connector)
> struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector));
> intel_wakeref_t wakeref;
> const struct drm_edid *drm_edid;
> - const struct edid *edid;
> bool connected = false;
> struct i2c_adapter *i2c;
>
> @@ -2475,9 +2474,7 @@ intel_hdmi_set_edid(struct drm_connector *connector)
>
> to_intel_connector(connector)->detect_edid = drm_edid;
>
> - /* FIXME: Get rid of drm_edid_raw() */
> - edid = drm_edid_raw(drm_edid);
> - if (edid && edid->input & DRM_EDID_INPUT_DIGITAL) {
> + if (drm_edid_is_digital(drm_edid)) {
> intel_hdmi_dp_dual_mode_detect(connector);
>
> connected = true;
> @@ -2485,7 +2482,9 @@ intel_hdmi_set_edid(struct drm_connector *connector)
>
> intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS, wakeref);
>
> - cec_notifier_set_phys_addr_from_edid(intel_hdmi->cec_notifier, edid);
> + /* FIXME: Get rid of drm_edid_raw() */
> + cec_notifier_set_phys_addr_from_edid(intel_hdmi->cec_notifier,
> + drm_edid_raw(drm_edid));
>
> return connected;
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
> index 7d25a64698e2..917771e19e38 100644
> --- a/drivers/gpu/drm/i915/display/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
> @@ -2094,10 +2094,8 @@ intel_sdvo_tmds_sink_detect(struct drm_connector *connector)
>
> status = connector_status_unknown;
> if (drm_edid) {
> - const struct edid *edid = drm_edid_raw(drm_edid);
> -
> /* DDC bus is shared, match EDID to connector type */
> - if (edid && edid->input & DRM_EDID_INPUT_DIGITAL)
> + if (drm_edid_is_digital(drm_edid))
> status = connector_status_connected;
> else
> status = connector_status_disconnected;
> @@ -2111,8 +2109,7 @@ static bool
> intel_sdvo_connector_matches_edid(struct intel_sdvo_connector *sdvo,
> const struct drm_edid *drm_edid)
> {
> - const struct edid *edid = drm_edid_raw(drm_edid);
> - bool monitor_is_digital = !!(edid->input & DRM_EDID_INPUT_DIGITAL);
> + bool monitor_is_digital = drm_edid_is_digital(drm_edid);
> bool connector_is_digital = !!IS_DIGITAL(sdvo);
>
> DRM_DEBUG_KMS("connector_is_digital? %d, monitor_is_digital? %d\n",
> --
> 2.39.2
--
Ville Syrjälä
Intel
More information about the dri-devel
mailing list