drm/i915/hdmi: Nuke hdmi->ddc_bus
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 29 Aug 2023 11:39:18 +0000 (14:39 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 15 Sep 2023 11:49:10 +0000 (14:49 +0300)
Remove the mostly redundant hdmi->ddc_bus. The only thing that needs
it anymore is get_encoder_by_ddc_bus(), but that can be replaced with
a slight detour through attached_connector+intel_gmbus_get_adapter().

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230829113920.13713-11-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_display_types.h
drivers/gpu/drm/i915/display/intel_hdmi.c

index 4b807c377166e5ecee992af5de6824c2e8d19241..3c54fe2bfddd03edfc3819f45ee9c02c1984dd6f 100644 (file)
@@ -1583,7 +1583,6 @@ struct intel_watermark_params {
 
 struct intel_hdmi {
        i915_reg_t hdmi_reg;
-       int ddc_bus;
        struct {
                enum drm_dp_dual_mode_type type;
                int max_tmds_clock;
index 4ad00f868a63aa319c5e111c5b6af906020d1f0f..d55aeff43cce2b6ad5c36b51afb8c07e9644e1d4 100644 (file)
@@ -2897,13 +2897,17 @@ get_encoder_by_ddc_pin(struct intel_encoder *encoder, u8 ddc_pin)
        struct intel_encoder *other;
 
        for_each_intel_encoder(&i915->drm, other) {
+               struct intel_connector *connector;
+
                if (other == encoder)
                        continue;
 
                if (!intel_encoder_is_dig_port(other))
                        continue;
 
-               if (enc_to_dig_port(other)->hdmi.ddc_bus == ddc_pin)
+               connector = enc_to_dig_port(other)->hdmi.attached_connector;
+
+               if (connector && connector->base.ddc == intel_gmbus_get_adapter(i915, ddc_pin))
                        return other;
        }
 
@@ -2997,6 +3001,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *dig_port,
        struct drm_i915_private *dev_priv = to_i915(dev);
        enum port port = intel_encoder->port;
        struct cec_connector_info conn_info;
+       u8 ddc_pin;
 
        drm_dbg_kms(&dev_priv->drm,
                    "Adding HDMI connector on [ENCODER:%d:%s]\n",
@@ -3011,14 +3016,14 @@ void intel_hdmi_init_connector(struct intel_digital_port *dig_port,
                     intel_encoder->base.name))
                return;
 
-       intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(intel_encoder);
-       if (!intel_hdmi->ddc_bus)
+       ddc_pin = intel_hdmi_ddc_pin(intel_encoder);
+       if (!ddc_pin)
                return;
 
        drm_connector_init_with_ddc(dev, connector,
                                    &intel_hdmi_connector_funcs,
                                    DRM_MODE_CONNECTOR_HDMIA,
-                                   intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus));
+                                   intel_gmbus_get_adapter(dev_priv, ddc_pin));
 
        drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);