Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_sdvo.c |   34 +++++++++++-----------------------
 1 files changed, 11 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_sdvo.c 
b/drivers/gpu/drm/i915/intel_sdvo.c
index ba50755..a30d751 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -98,7 +98,7 @@ struct intel_sdvo {
        bool is_tv;
 
        /* This is for current tv format name */
-       char *tv_format_name;
+       int tv_format_index;
 
        /**
         * This is set if we treat the device as HDMI, instead of DVI.
@@ -141,7 +141,7 @@ struct intel_sdvo_connector {
        uint16_t output_flag;
 
        /* This contains all current supported TV format */
-       char *tv_format_supported[TV_FORMAT_NUM];
+       u8 tv_format_supported[TV_FORMAT_NUM];
        int   format_supported_num;
        struct drm_property *tv_format_property;
        struct drm_property *tv_format_name_property[TV_FORMAT_NUM];
@@ -958,13 +958,9 @@ static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo 
*intel_sdvo,
 static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo)
 {
        struct intel_sdvo_tv_format format;
-       uint32_t format_map, i;
-
-       for (i = 0; i < TV_FORMAT_NUM; i++)
-               if (tv_format_names[i] == intel_sdvo->tv_format_name)
-                       break;
+       uint32_t format_map;
 
-       format_map = 1 << i;
+       format_map = 1 << intel_sdvo->tv_format_index;
        memset(&format, 0, sizeof(format));
        memcpy(&format, &format_map, min(sizeof(format), sizeof(format_map)));
 
@@ -1612,11 +1608,7 @@ static void intel_sdvo_get_tv_modes(struct drm_connector 
*connector)
        /* Read the list of supported input resolutions for the selected TV
         * format.
         */
-       for (i = 0; i < TV_FORMAT_NUM; i++)
-               if (tv_format_names[i] ==  intel_sdvo->tv_format_name)
-                       break;
-
-       format_map = (1 << i);
+       format_map = 1 << intel_sdvo->tv_format_index;
        memcpy(&tv_res, &format_map,
               min(sizeof(format_map), sizeof(struct 
intel_sdvo_sdtv_resolution_request)));
 
@@ -1638,7 +1630,6 @@ static void intel_sdvo_get_tv_modes(struct drm_connector 
*connector)
                        if (nmode)
                                drm_mode_probed_add(connector, nmode);
                }
-
 }
 
 static void intel_sdvo_get_lvds_modes(struct drm_connector *connector)
@@ -1766,11 +1757,11 @@ intel_sdvo_set_property(struct drm_connector *connector,
                if (val >= TV_FORMAT_NUM)
                        return -EINVAL;
 
-               if (intel_sdvo->tv_format_name ==
+               if (intel_sdvo->tv_format_index ==
                    intel_sdvo_connector->tv_format_supported[val])
                        return 0;
 
-               intel_sdvo->tv_format_name = 
intel_sdvo_connector->tv_format_supported[val];
+               intel_sdvo->tv_format_index = 
intel_sdvo_connector->tv_format_supported[val];
                changed = true;
        } else if (IS_TV_OR_LVDS(intel_sdvo_connector)) {
                cmd = 0;
@@ -2269,11 +2260,8 @@ static bool intel_sdvo_tv_create_property(struct 
intel_sdvo *intel_sdvo,
 
        intel_sdvo_connector->format_supported_num = 0;
        for (i = 0 ; i < TV_FORMAT_NUM; i++)
-               if (format_map & (1 << i)) {
-                       intel_sdvo_connector->tv_format_supported
-                       [intel_sdvo_connector->format_supported_num++] =
-                       tv_format_names[i];
-               }
+               if (format_map & (1 << i))
+                       
intel_sdvo_connector->tv_format_supported[intel_sdvo_connector->format_supported_num++]
 = i;
 
 
        intel_sdvo_connector->tv_format_property =
@@ -2283,9 +2271,9 @@ static bool intel_sdvo_tv_create_property(struct 
intel_sdvo *intel_sdvo,
        for (i = 0; i < intel_sdvo_connector->format_supported_num; i++)
                drm_property_add_enum(
                                intel_sdvo_connector->tv_format_property, i,
-                               i, 
intel_sdvo_connector->tv_format_supported[i]);
+                               i, 
tv_format_names[intel_sdvo_connector->tv_format_supported[i]]);
 
-       intel_sdvo->tv_format_name = 
intel_sdvo_connector->tv_format_supported[0];
+       intel_sdvo->tv_format_index = 
intel_sdvo_connector->tv_format_supported[0];
        drm_connector_attach_property(&intel_sdvo_connector->base.base,
                                      intel_sdvo_connector->tv_format_property, 
0);
        return true;
-- 
1.7.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to