drm/i915/hdmi: Use an intel_connector pointer everywhere
authorImre Deak <imre.deak@intel.com>
Mon, 28 Apr 2025 13:47:16 +0000 (16:47 +0300)
committerImre Deak <imre.deak@intel.com>
Tue, 29 Apr 2025 14:11:05 +0000 (17:11 +0300)
Following the convention, convert intel_hdmi.c to use an intel_connector
pointer everywhere, calling this pointer connector. If the intel
connector must be casted from a drm_connector, call this pointer
_connector and use this pointer only for the casting.

v2: Use for_each_new_intel_connector_in_state(). (Jani)

Cc: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://lore.kernel.org/r/20250428134716.3396802-3-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_hdmi.c

index e08c01e5b9d3c6580b426afc87afbf5f44a82f1e..37f0fbaf31459e94c5772387a4d1050bb984715c 100644 (file)
@@ -715,7 +715,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder,
        struct hdmi_avi_infoframe *frame = &crtc_state->infoframes.avi.avi;
        const struct drm_display_mode *adjusted_mode =
                &crtc_state->hw.adjusted_mode;
-       struct drm_connector *connector = conn_state->connector;
+       struct intel_connector *connector = to_intel_connector(conn_state->connector);
        int ret;
 
        if (!crtc_state->has_infoframe)
@@ -724,7 +724,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder,
        crtc_state->infoframes.enable |=
                intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_AVI);
 
-       ret = drm_hdmi_avi_infoframe_from_display_mode(frame, connector,
+       ret = drm_hdmi_avi_infoframe_from_display_mode(frame, &connector->base,
                                                       adjusted_mode);
        if (ret)
                return false;
@@ -743,7 +743,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder,
                    crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB);
 
        if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_RGB) {
-               drm_hdmi_avi_infoframe_quant_range(frame, connector,
+               drm_hdmi_avi_infoframe_quant_range(frame, &connector->base,
                                                   adjusted_mode,
                                                   crtc_state->limited_color_range ?
                                                   HDMI_QUANTIZATION_RANGE_LIMITED :
@@ -1938,11 +1938,12 @@ static bool intel_hdmi_source_bpc_possible(struct intel_display *display, int bp
        }
 }
 
-static bool intel_hdmi_sink_bpc_possible(struct drm_connector *connector,
+static bool intel_hdmi_sink_bpc_possible(struct drm_connector *_connector,
                                         int bpc, bool has_hdmi_sink,
                                         enum intel_output_format sink_format)
 {
-       const struct drm_display_info *info = &connector->display_info;
+       struct intel_connector *connector = to_intel_connector(_connector);
+       const struct drm_display_info *info = &connector->base.display_info;
        const struct drm_hdmi_info *hdmi = &info->hdmi;
 
        switch (bpc) {
@@ -1971,12 +1972,13 @@ static bool intel_hdmi_sink_bpc_possible(struct drm_connector *connector,
 }
 
 static enum drm_mode_status
-intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock,
+intel_hdmi_mode_clock_valid(struct drm_connector *_connector, int clock,
                            bool has_hdmi_sink,
                            enum intel_output_format sink_format)
 {
-       struct intel_display *display = to_intel_display(connector->dev);
-       struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector));
+       struct intel_connector *connector = to_intel_connector(_connector);
+       struct intel_display *display = to_intel_display(connector);
+       struct intel_hdmi *hdmi = intel_attached_hdmi(connector);
        enum drm_mode_status status = MODE_OK;
        int bpc;
 
@@ -1991,7 +1993,8 @@ intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock,
                if (!intel_hdmi_source_bpc_possible(display, bpc))
                        continue;
 
-               if (!intel_hdmi_sink_bpc_possible(connector, bpc, has_hdmi_sink, sink_format))
+               if (!intel_hdmi_sink_bpc_possible(&connector->base, bpc, has_hdmi_sink,
+                                                 sink_format))
                        continue;
 
                status = hdmi_port_clock_valid(hdmi, tmds_clock, true, has_hdmi_sink);
@@ -2006,15 +2009,16 @@ intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock,
 }
 
 static enum drm_mode_status
-intel_hdmi_mode_valid(struct drm_connector *connector,
+intel_hdmi_mode_valid(struct drm_connector *_connector,
                      const struct drm_display_mode *mode)
 {
-       struct intel_display *display = to_intel_display(connector->dev);
-       struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector));
+       struct intel_connector *connector = to_intel_connector(_connector);
+       struct intel_display *display = to_intel_display(connector);
+       struct intel_hdmi *hdmi = intel_attached_hdmi(connector);
        enum drm_mode_status status;
        int clock = mode->clock;
-       int max_dotclk = to_i915(connector->dev)->display.cdclk.max_dotclk_freq;
-       bool has_hdmi_sink = intel_has_hdmi_sink(hdmi, connector->state);
+       int max_dotclk = display->cdclk.max_dotclk_freq;
+       bool has_hdmi_sink = intel_has_hdmi_sink(hdmi, connector->base.state);
        bool ycbcr_420_only;
        enum intel_output_format sink_format;
 
@@ -2043,22 +2047,23 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
        if (clock > 600000)
                return MODE_CLOCK_HIGH;
 
-       ycbcr_420_only = drm_mode_is_420_only(&connector->display_info, mode);
+       ycbcr_420_only = drm_mode_is_420_only(&connector->base.display_info, mode);
 
        if (ycbcr_420_only)
                sink_format = INTEL_OUTPUT_FORMAT_YCBCR420;
        else
                sink_format = INTEL_OUTPUT_FORMAT_RGB;
 
-       status = intel_hdmi_mode_clock_valid(connector, clock, has_hdmi_sink, sink_format);
+       status = intel_hdmi_mode_clock_valid(&connector->base, clock, has_hdmi_sink, sink_format);
        if (status != MODE_OK) {
                if (ycbcr_420_only ||
-                   !connector->ycbcr_420_allowed ||
-                   !drm_mode_is_420_also(&connector->display_info, mode))
+                   !connector->base.ycbcr_420_allowed ||
+                   !drm_mode_is_420_also(&connector->base.display_info, mode))
                        return status;
 
                sink_format = INTEL_OUTPUT_FORMAT_YCBCR420;
-               status = intel_hdmi_mode_clock_valid(connector, clock, has_hdmi_sink, sink_format);
+               status = intel_hdmi_mode_clock_valid(&connector->base, clock, has_hdmi_sink,
+                                                    sink_format);
                if (status != MODE_OK)
                        return status;
        }
@@ -2069,16 +2074,16 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
 bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state,
                             int bpc, bool has_hdmi_sink)
 {
-       struct drm_atomic_state *state = crtc_state->uapi.state;
-       struct drm_connector_state *connector_state;
-       struct drm_connector *connector;
+       struct intel_atomic_state *state = to_intel_atomic_state(crtc_state->uapi.state);
+       struct intel_digital_connector_state *connector_state;
+       struct intel_connector *connector;
        int i;
 
-       for_each_new_connector_in_state(state, connector, connector_state, i) {
-               if (connector_state->crtc != crtc_state->uapi.crtc)
+       for_each_new_intel_connector_in_state(state, connector, connector_state, i) {
+               if (connector_state->base.crtc != crtc_state->uapi.crtc)
                        continue;
 
-               if (!intel_hdmi_sink_bpc_possible(connector, bpc, has_hdmi_sink,
+               if (!intel_hdmi_sink_bpc_possible(&connector->base, bpc, has_hdmi_sink,
                                                  crtc_state->sink_format))
                        return false;
        }
@@ -2206,7 +2211,7 @@ static bool intel_hdmi_has_audio(struct intel_encoder *encoder,
                                 const struct intel_crtc_state *crtc_state,
                                 const struct drm_connector_state *conn_state)
 {
-       struct drm_connector *connector = conn_state->connector;
+       struct intel_connector *connector = to_intel_connector(conn_state->connector);
        const struct intel_digital_connector_state *intel_conn_state =
                to_intel_digital_connector_state(conn_state);
 
@@ -2214,7 +2219,7 @@ static bool intel_hdmi_has_audio(struct intel_encoder *encoder,
                return false;
 
        if (intel_conn_state->force_audio == HDMI_AUDIO_AUTO)
-               return connector->display_info.has_audio;
+               return connector->base.display_info.has_audio;
        else
                return intel_conn_state->force_audio == HDMI_AUDIO_ON;
 }
@@ -2318,14 +2323,14 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
 {
        struct intel_display *display = to_intel_display(encoder);
        struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode;
-       struct drm_connector *connector = conn_state->connector;
-       struct drm_scdc *scdc = &connector->display_info.hdmi.scdc;
+       struct intel_connector *connector = to_intel_connector(conn_state->connector);
+       struct drm_scdc *scdc = &connector->base.display_info.hdmi.scdc;
        int ret;
 
        if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
                return -EINVAL;
 
-       if (!connector->interlace_allowed &&
+       if (!connector->base.interlace_allowed &&
            adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
                return -EINVAL;
 
@@ -2420,24 +2425,26 @@ void intel_hdmi_encoder_shutdown(struct intel_encoder *encoder)
 }
 
 static void
-intel_hdmi_unset_edid(struct drm_connector *connector)
+intel_hdmi_unset_edid(struct drm_connector *_connector)
 {
-       struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector));
+       struct intel_connector *connector = to_intel_connector(_connector);
+       struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
 
        intel_hdmi->dp_dual_mode.type = DRM_DP_DUAL_MODE_NONE;
        intel_hdmi->dp_dual_mode.max_tmds_clock = 0;
 
-       drm_edid_free(to_intel_connector(connector)->detect_edid);
-       to_intel_connector(connector)->detect_edid = NULL;
+       drm_edid_free(connector->detect_edid);
+       connector->detect_edid = NULL;
 }
 
 static void
-intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector)
+intel_hdmi_dp_dual_mode_detect(struct drm_connector *_connector)
 {
-       struct intel_display *display = to_intel_display(connector->dev);
-       struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector));
+       struct intel_connector *connector = to_intel_connector(_connector);
+       struct intel_display *display = to_intel_display(connector);
+       struct intel_hdmi *hdmi = intel_attached_hdmi(connector);
        struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base;
-       struct i2c_adapter *ddc = connector->ddc;
+       struct i2c_adapter *ddc = connector->base.ddc;
        enum drm_dp_dual_mode_type type;
 
        type = drm_dp_dual_mode_detect(display->drm, ddc);
@@ -2452,7 +2459,7 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector)
         * if the port is a dual mode capable DP port.
         */
        if (type == DRM_DP_DUAL_MODE_UNKNOWN) {
-               if (!connector->force &&
+               if (!connector->base.force &&
                    intel_bios_encoder_supports_dp_dual_mode(encoder->devdata)) {
                        drm_dbg_kms(display->drm,
                                    "Assuming DP dual mode adaptor presence based on VBT\n");
@@ -2484,34 +2491,35 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector)
 }
 
 static bool
-intel_hdmi_set_edid(struct drm_connector *connector)
+intel_hdmi_set_edid(struct drm_connector *_connector)
 {
-       struct intel_display *display = to_intel_display(connector->dev);
-       struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector));
-       struct i2c_adapter *ddc = connector->ddc;
+       struct intel_connector *connector = to_intel_connector(_connector);
+       struct intel_display *display = to_intel_display(connector);
+       struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
+       struct i2c_adapter *ddc = connector->base.ddc;
        intel_wakeref_t wakeref;
        const struct drm_edid *drm_edid;
        bool connected = false;
 
        wakeref = intel_display_power_get(display, POWER_DOMAIN_GMBUS);
 
-       drm_edid = drm_edid_read_ddc(connector, ddc);
+       drm_edid = drm_edid_read_ddc(&connector->base, ddc);
 
        if (!drm_edid && !intel_gmbus_is_forced_bit(ddc)) {
                drm_dbg_kms(display->drm,
                            "HDMI GMBUS EDID read failed, retry using GPIO bit-banging\n");
                intel_gmbus_force_bit(ddc, true);
-               drm_edid = drm_edid_read_ddc(connector, ddc);
+               drm_edid = drm_edid_read_ddc(&connector->base, ddc);
                intel_gmbus_force_bit(ddc, false);
        }
 
        /* Below we depend on display info having been updated */
-       drm_edid_connector_update(connector, drm_edid);
+       drm_edid_connector_update(&connector->base, drm_edid);
 
-       to_intel_connector(connector)->detect_edid = drm_edid;
+       connector->detect_edid = drm_edid;
 
        if (drm_edid_is_digital(drm_edid)) {
-               intel_hdmi_dp_dual_mode_detect(connector);
+               intel_hdmi_dp_dual_mode_detect(&connector->base);
 
                connected = true;
        }
@@ -2519,28 +2527,29 @@ intel_hdmi_set_edid(struct drm_connector *connector)
        intel_display_power_put(display, POWER_DOMAIN_GMBUS, wakeref);
 
        cec_notifier_set_phys_addr(intel_hdmi->cec_notifier,
-                                  connector->display_info.source_physical_address);
+                                  connector->base.display_info.source_physical_address);
 
        return connected;
 }
 
 static enum drm_connector_status
-intel_hdmi_detect(struct drm_connector *connector, bool force)
+intel_hdmi_detect(struct drm_connector *_connector, bool force)
 {
-       struct intel_display *display = to_intel_display(connector->dev);
+       struct intel_connector *connector = to_intel_connector(_connector);
+       struct intel_display *display = to_intel_display(connector);
        enum drm_connector_status status = connector_status_disconnected;
-       struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector));
+       struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
        struct intel_encoder *encoder = &hdmi_to_dig_port(intel_hdmi)->base;
        intel_wakeref_t wakeref;
 
        drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
-                   connector->base.id, connector->name);
+                   connector->base.base.id, connector->base.name);
 
        if (!intel_display_device_enabled(display))
                return connector_status_disconnected;
 
        if (!intel_display_driver_check_access(display))
-               return connector->status;
+               return connector->base.status;
 
        wakeref = intel_display_power_get(display, POWER_DOMAIN_GMBUS);
 
@@ -2548,9 +2557,9 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
            !intel_digital_port_connected(encoder))
                goto out;
 
-       intel_hdmi_unset_edid(connector);
+       intel_hdmi_unset_edid(&connector->base);
 
-       if (intel_hdmi_set_edid(connector))
+       if (intel_hdmi_set_edid(&connector->base))
                status = connector_status_connected;
 
 out:
@@ -2563,49 +2572,54 @@ out:
 }
 
 static void
-intel_hdmi_force(struct drm_connector *connector)
+intel_hdmi_force(struct drm_connector *_connector)
 {
-       struct intel_display *display = to_intel_display(connector->dev);
+       struct intel_connector *connector = to_intel_connector(_connector);
+       struct intel_display *display = to_intel_display(connector);
 
        drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
-                   connector->base.id, connector->name);
+                   connector->base.base.id, connector->base.name);
 
        if (!intel_display_driver_check_access(display))
                return;
 
-       intel_hdmi_unset_edid(connector);
+       intel_hdmi_unset_edid(&connector->base);
 
-       if (connector->status != connector_status_connected)
+       if (connector->base.status != connector_status_connected)
                return;
 
-       intel_hdmi_set_edid(connector);
+       intel_hdmi_set_edid(&connector->base);
 }
 
-static int intel_hdmi_get_modes(struct drm_connector *connector)
+static int intel_hdmi_get_modes(struct drm_connector *_connector)
 {
+       struct intel_connector *connector = to_intel_connector(_connector);
+
        /* drm_edid_connector_update() done in ->detect() or ->force() */
-       return drm_edid_connector_add_modes(connector);
+       return drm_edid_connector_add_modes(&connector->base);
 }
 
 static int
-intel_hdmi_connector_register(struct drm_connector *connector)
+intel_hdmi_connector_register(struct drm_connector *_connector)
 {
+       struct intel_connector *connector = to_intel_connector(_connector);
        int ret;
 
-       ret = intel_connector_register(connector);
+       ret = intel_connector_register(&connector->base);
        if (ret)
                return ret;
 
        return ret;
 }
 
-static void intel_hdmi_connector_unregister(struct drm_connector *connector)
+static void intel_hdmi_connector_unregister(struct drm_connector *_connector)
 {
-       struct cec_notifier *n = intel_attached_hdmi(to_intel_connector(connector))->cec_notifier;
+       struct intel_connector *connector = to_intel_connector(_connector);
+       struct cec_notifier *n = intel_attached_hdmi(connector)->cec_notifier;
 
        cec_notifier_conn_unregister(n);
 
-       intel_connector_unregister(connector);
+       intel_connector_unregister(&connector->base);
 }
 
 static const struct drm_connector_funcs intel_hdmi_connector_funcs = {
@@ -2621,15 +2635,16 @@ static const struct drm_connector_funcs intel_hdmi_connector_funcs = {
        .atomic_duplicate_state = intel_digital_connector_duplicate_state,
 };
 
-static int intel_hdmi_connector_atomic_check(struct drm_connector *connector,
+static int intel_hdmi_connector_atomic_check(struct drm_connector *_connector,
                                             struct drm_atomic_state *state)
 {
-       struct intel_display *display = to_intel_display(connector->dev);
+       struct intel_connector *connector = to_intel_connector(_connector);
+       struct intel_display *display = to_intel_display(connector);
 
        if (HAS_DDI(display))
-               return intel_digital_connector_atomic_check(connector, state);
+               return intel_digital_connector_atomic_check(&connector->base, state);
        else
-               return g4x_hdmi_connector_atomic_check(connector, state);
+               return g4x_hdmi_connector_atomic_check(&connector->base, state);
 }
 
 static const struct drm_connector_helper_funcs intel_hdmi_connector_helper_funcs = {
@@ -2639,22 +2654,23 @@ static const struct drm_connector_helper_funcs intel_hdmi_connector_helper_funcs
 };
 
 static void
-intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
+intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *_connector)
 {
+       struct intel_connector *connector = to_intel_connector(_connector);
        struct intel_display *display = to_intel_display(intel_hdmi);
 
-       intel_attach_force_audio_property(connector);
-       intel_attach_broadcast_rgb_property(connector);
-       intel_attach_aspect_ratio_property(connector);
+       intel_attach_force_audio_property(&connector->base);
+       intel_attach_broadcast_rgb_property(&connector->base);
+       intel_attach_aspect_ratio_property(&connector->base);
 
-       intel_attach_hdmi_colorspace_property(connector);
-       drm_connector_attach_content_type_property(connector);
+       intel_attach_hdmi_colorspace_property(&connector->base);
+       drm_connector_attach_content_type_property(&connector->base);
 
        if (DISPLAY_VER(display) >= 10)
-               drm_connector_attach_hdr_output_metadata_property(connector);
+               drm_connector_attach_hdr_output_metadata_property(&connector->base);
 
        if (!HAS_GMCH(display))
-               drm_connector_attach_max_bpc_property(connector, 8, 12);
+               drm_connector_attach_max_bpc_property(&connector->base, 8, 12);
 }
 
 /*
@@ -2676,25 +2692,26 @@ intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *c
  * True on success, false on failure.
  */
 bool intel_hdmi_handle_sink_scrambling(struct intel_encoder *encoder,
-                                      struct drm_connector *connector,
+                                      struct drm_connector *_connector,
                                       bool high_tmds_clock_ratio,
                                       bool scrambling)
 {
+       struct intel_connector *connector = to_intel_connector(_connector);
        struct intel_display *display = to_intel_display(encoder);
        struct drm_scrambling *sink_scrambling =
-               &connector->display_info.hdmi.scdc.scrambling;
+               &connector->base.display_info.hdmi.scdc.scrambling;
 
        if (!sink_scrambling->supported)
                return true;
 
        drm_dbg_kms(display->drm,
                    "[CONNECTOR:%d:%s] scrambling=%s, TMDS bit clock ratio=1/%d\n",
-                   connector->base.id, connector->name,
+                   connector->base.base.id, connector->base.name,
                    str_yes_no(scrambling), high_tmds_clock_ratio ? 40 : 10);
 
        /* Set TMDS bit clock ratio to 1/40 or 1/10, and enable/disable scrambling */
-       return drm_scdc_set_high_tmds_clock_ratio(connector, high_tmds_clock_ratio) &&
-               drm_scdc_set_scrambling(connector, scrambling);
+       return drm_scdc_set_high_tmds_clock_ratio(&connector->base, high_tmds_clock_ratio) &&
+               drm_scdc_set_scrambling(&connector->base, scrambling);
 }
 
 static u8 chv_encoder_to_ddc_pin(struct intel_encoder *encoder)