We should return the number of added modes. Luckily no one really
cares, but it kinda sticked out compared to the other ->get_modes
functions I've looked at recently.

Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
---
 drivers/gpu/drm/i915/intel_sdvo.c |   41 ++++++++++++++++++++++--------------
 1 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_sdvo.c 
b/drivers/gpu/drm/i915/intel_sdvo.c
index fdc0574..6056603 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -1428,8 +1428,9 @@ intel_sdvo_detect(struct drm_connector *connector, bool 
force)
        return ret;
 }

-static void intel_sdvo_get_ddc_modes(struct drm_connector *connector)
+static int intel_sdvo_get_ddc_modes(struct drm_connector *connector)
 {
+       int ret = 0;
        struct edid *edid;

        /* set the bus switch and get the modes */
@@ -1448,12 +1449,14 @@ static void intel_sdvo_get_ddc_modes(struct 
drm_connector *connector)
                if 
(intel_sdvo_connector_matches_edid(to_intel_sdvo_connector(connector),
                                                      edid)) {
                        drm_mode_connector_update_edid_property(connector, 
edid);
-                       drm_add_edid_modes(connector, edid);
+                       ret = drm_add_edid_modes(connector, edid);
                }

                connector->display_info.raw_edid = NULL;
                kfree(edid);
        }
+
+       return ret;
 }

 /*
@@ -1521,12 +1524,12 @@ static const struct drm_display_mode sdvo_tv_modes[] = {
                   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
 };

-static void intel_sdvo_get_tv_modes(struct drm_connector *connector)
+static int intel_sdvo_get_tv_modes(struct drm_connector *connector)
 {
        struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector);
        struct intel_sdvo_sdtv_resolution_request tv_res;
        uint32_t reply = 0, format_map = 0;
-       int i;
+       int i, ret = 0;

        /* Read the list of supported input resolutions for the selected TV
         * format.
@@ -1536,39 +1539,44 @@ static void intel_sdvo_get_tv_modes(struct 
drm_connector *connector)
               min(sizeof(format_map), sizeof(struct 
intel_sdvo_sdtv_resolution_request)));

        if (!intel_sdvo_set_target_output(intel_sdvo, 
intel_sdvo->attached_output))
-               return;
+               return 0;

        BUILD_BUG_ON(sizeof(tv_res) != 3);
        if (!intel_sdvo_write_cmd(intel_sdvo,
                                  SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT,
                                  &tv_res, sizeof(tv_res)))
-               return;
+               return 0;
        if (!intel_sdvo_read_response(intel_sdvo, &reply, 3))
-               return;
+               return 0;

        for (i = 0; i < ARRAY_SIZE(sdvo_tv_modes); i++)
                if (reply & (1 << i)) {
                        struct drm_display_mode *nmode;
                        nmode = drm_mode_duplicate(connector->dev,
                                                   &sdvo_tv_modes[i]);
-                       if (nmode)
+                       if (nmode) {
                                drm_mode_probed_add(connector, nmode);
+                               ret++;
+                       }
                }
+
+       return ret;
 }

-static void intel_sdvo_get_lvds_modes(struct drm_connector *connector)
+static int intel_sdvo_get_lvds_modes(struct drm_connector *connector)
 {
        struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector);
        struct drm_i915_private *dev_priv = connector->dev->dev_private;
        struct drm_display_mode *newmode;
+       int ret;

        /*
         * Attempt to get the mode list from DDC.
         * Assume that the preferred modes are
         * arranged in priority order.
         */
-       intel_ddc_get_modes(connector, intel_sdvo->i2c);
-       if (list_empty(&connector->probed_modes) == false)
+       ret = intel_ddc_get_modes(connector, intel_sdvo->i2c);
+       if (ret)
                goto end;

        /* Fetch modes from VBT */
@@ -1580,6 +1588,8 @@ static void intel_sdvo_get_lvds_modes(struct 
drm_connector *connector)
                        newmode->type = (DRM_MODE_TYPE_PREFERRED |
                                         DRM_MODE_TYPE_DRIVER);
                        drm_mode_probed_add(connector, newmode);
+
+                       ret++;
                }
        }

@@ -1594,6 +1604,7 @@ end:
                }
        }

+       return ret;
 }

 static int intel_sdvo_get_modes(struct drm_connector *connector)
@@ -1601,13 +1612,11 @@ static int intel_sdvo_get_modes(struct drm_connector 
*connector)
        struct intel_sdvo_connector *intel_sdvo_connector = 
to_intel_sdvo_connector(connector);

        if (IS_TV(intel_sdvo_connector))
-               intel_sdvo_get_tv_modes(connector);
+               return intel_sdvo_get_tv_modes(connector);
        else if (IS_LVDS(intel_sdvo_connector))
-               intel_sdvo_get_lvds_modes(connector);
+               return intel_sdvo_get_lvds_modes(connector);
        else
-               intel_sdvo_get_ddc_modes(connector);
-
-       return !list_empty(&connector->probed_modes);
+               return intel_sdvo_get_ddc_modes(connector);
 }

 static void
-- 
1.7.7.6

Reply via email to