]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - drivers/gpu/drm/i915/display/intel_sdvo.c
Merge tag 'drm-intel-next-2024-02-27-1' of git://anongit.freedesktop.org/drm/drm...
[thirdparty/linux.git] / drivers / gpu / drm / i915 / display / intel_sdvo.c
index eb65c8124e60a979a62019442b23241a0b6d6f4e..5f9e748adc89ee846de12974195e17ab38e14b21 100644 (file)
@@ -1220,7 +1220,7 @@ static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo,
        struct intel_sdvo_tv_format format;
        u32 format_map;
 
-       format_map = 1 << conn_state->tv.mode;
+       format_map = 1 << conn_state->tv.legacy_mode;
        memset(&format, 0, sizeof(format));
        memcpy(&format, &format_map, min(sizeof(format), sizeof(format_map)));
 
@@ -2202,12 +2202,16 @@ intel_sdvo_detect(struct drm_connector *connector, bool force)
 
 static int intel_sdvo_get_ddc_modes(struct drm_connector *connector)
 {
+       struct drm_i915_private *i915 = to_i915(connector->dev);
        int num_modes = 0;
        const struct drm_edid *drm_edid;
 
        drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s]\n",
                    connector->base.id, connector->name);
 
+       if (!intel_display_driver_check_access(i915))
+               return drm_edid_connector_add_modes(connector);
+
        /* set the bus switch and get the modes */
        drm_edid = intel_sdvo_get_edid(connector);
 
@@ -2319,7 +2323,7 @@ static int intel_sdvo_get_tv_modes(struct drm_connector *connector)
         * Read the list of supported input resolutions for the selected TV
         * format.
         */
-       format_map = 1 << conn_state->tv.mode;
+       format_map = 1 << conn_state->tv.legacy_mode;
        memcpy(&tv_res, &format_map,
               min(sizeof(format_map), sizeof(struct intel_sdvo_sdtv_resolution_request)));
 
@@ -2384,7 +2388,7 @@ intel_sdvo_connector_atomic_get_property(struct drm_connector *connector,
                int i;
 
                for (i = 0; i < intel_sdvo_connector->format_supported_num; i++)
-                       if (state->tv.mode == intel_sdvo_connector->tv_format_supported[i]) {
+                       if (state->tv.legacy_mode == intel_sdvo_connector->tv_format_supported[i]) {
                                *val = i;
 
                                return 0;
@@ -2440,7 +2444,7 @@ intel_sdvo_connector_atomic_set_property(struct drm_connector *connector,
        struct intel_sdvo_connector_state *sdvo_state = to_intel_sdvo_connector_state(state);
 
        if (property == intel_sdvo_connector->tv_format) {
-               state->tv.mode = intel_sdvo_connector->tv_format_supported[val];
+               state->tv.legacy_mode = intel_sdvo_connector->tv_format_supported[val];
 
                if (state->crtc) {
                        struct drm_crtc_state *crtc_state =
@@ -3104,7 +3108,7 @@ static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
                drm_property_add_enum(intel_sdvo_connector->tv_format, i,
                                      tv_format_names[intel_sdvo_connector->tv_format_supported[i]]);
 
-       intel_sdvo_connector->base.base.state->tv.mode = intel_sdvo_connector->tv_format_supported[0];
+       intel_sdvo_connector->base.base.state->tv.legacy_mode = intel_sdvo_connector->tv_format_supported[0];
        drm_object_attach_property(&intel_sdvo_connector->base.base.base,
                                   intel_sdvo_connector->tv_format, 0);
        return true;
@@ -3355,7 +3359,6 @@ intel_sdvo_init_ddc_proxy(struct intel_sdvo_ddc *ddc,
        ddc->ddc_bus = ddc_bus;
 
        ddc->ddc.owner = THIS_MODULE;
-       ddc->ddc.class = I2C_CLASS_DDC;
        snprintf(ddc->ddc.name, I2C_NAME_SIZE, "SDVO %c DDC%d",
                 port_name(sdvo->base.port), ddc_bus);
        ddc->ddc.dev.parent = &pdev->dev;