[PATCH 13/14] drm/i915/sdvo: implement correct return value for ->get_modes

2012-05-24 Thread Daniel Vetter
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 
---
 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,
  _res, sizeof(tv_res)))
-   return;
+   return 0;
if (!intel_sdvo_read_response(intel_sdvo, , 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,
   _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(>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))
-   

[PATCH 13/14] drm/i915/sdvo: implement correct return value for -get_modes

2012-05-24 Thread Daniel Vetter
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.vet...@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