These functions mostly do the same thing so unify them into one.

Signed-off-by: Patrik Jakobsson <patrik.r.jakobs...@gmail.com>
---
 drivers/gpu/drm/gma500/cdv_intel_lvds.c | 63 +---------------------
 drivers/gpu/drm/gma500/gma_lvds.c       | 64 ++++++++++++++++++++++
 drivers/gpu/drm/gma500/gma_lvds.h       |  2 +
 drivers/gpu/drm/gma500/psb_intel_lvds.c | 70 +------------------------
 4 files changed, 68 insertions(+), 131 deletions(-)

diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c 
b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
index c492f1b3c8ea..ccb489d6795b 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
@@ -39,71 +39,10 @@
 #define PSB_BACKLIGHT_PWM_CTL_SHIFT    (16)
 #define PSB_BACKLIGHT_PWM_POLARITY_BIT_CLEAR (0xFFFE)
 
-static int cdv_intel_lvds_set_property(struct drm_connector *connector,
-                                      struct drm_property *property,
-                                      uint64_t value)
-{
-       struct drm_encoder *encoder = connector->encoder;
-
-       if (!strcmp(property->name, "scaling mode") && encoder) {
-               struct gma_crtc *crtc = to_gma_crtc(encoder->crtc);
-               uint64_t curValue;
-
-               if (!crtc)
-                       return -1;
-
-               switch (value) {
-               case DRM_MODE_SCALE_FULLSCREEN:
-                       break;
-               case DRM_MODE_SCALE_NO_SCALE:
-                       break;
-               case DRM_MODE_SCALE_ASPECT:
-                       break;
-               default:
-                       return -1;
-               }
-
-               if (drm_object_property_get_value(&connector->base,
-                                                    property,
-                                                    &curValue))
-                       return -1;
-
-               if (curValue == value)
-                       return 0;
-
-               if (drm_object_property_set_value(&connector->base,
-                                                       property,
-                                                       value))
-                       return -1;
-
-               if (crtc->saved_mode.hdisplay != 0 &&
-                   crtc->saved_mode.vdisplay != 0) {
-                       if (!drm_crtc_helper_set_mode(encoder->crtc,
-                                                     &crtc->saved_mode,
-                                                     encoder->crtc->x,
-                                                     encoder->crtc->y,
-                                                     
encoder->crtc->primary->fb))
-                               return -1;
-               }
-       } else if (!strcmp(property->name, "backlight") && encoder) {
-               if (drm_object_property_set_value(&connector->base,
-                                                       property,
-                                                       value))
-                       return -1;
-               else
-                        gma_backlight_set(encoder->dev, value);
-       } else if (!strcmp(property->name, "DPMS") && encoder) {
-               const struct drm_encoder_helper_funcs *helpers =
-                                       encoder->helper_private;
-               helpers->dpms(encoder, value);
-       }
-       return 0;
-}
-
 static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = {
        .dpms = drm_helper_connector_dpms,
        .fill_modes = drm_helper_probe_single_connector_modes,
-       .set_property = cdv_intel_lvds_set_property,
+       .set_property = gma_lvds_set_property,
        .destroy = gma_lvds_destroy,
 };
 
diff --git a/drivers/gpu/drm/gma500/gma_lvds.c 
b/drivers/gpu/drm/gma500/gma_lvds.c
index 9238cad5fac8..e4278d26f811 100644
--- a/drivers/gpu/drm/gma500/gma_lvds.c
+++ b/drivers/gpu/drm/gma500/gma_lvds.c
@@ -389,3 +389,67 @@ void gma_lvds_destroy(struct drm_connector *connector)
        kfree(gma_connector);
 }
 
+int gma_lvds_set_property(struct drm_connector *connector,
+                         struct drm_property *property,
+                         uint64_t value)
+{
+       struct drm_encoder *encoder = connector->encoder;
+
+       if (!encoder)
+               return -1;
+
+       if (!strcmp(property->name, "scaling mode") && encoder) {
+               struct gma_crtc *crtc = to_gma_crtc(encoder->crtc);
+               uint64_t curValue;
+
+               if (!crtc)
+                       return -1;
+
+               switch (value) {
+               case DRM_MODE_SCALE_FULLSCREEN:
+                       break;
+               case DRM_MODE_SCALE_NO_SCALE:
+                       break;
+               case DRM_MODE_SCALE_ASPECT:
+                       break;
+               default:
+                       return -1;
+               }
+
+               if (drm_object_property_get_value(&connector->base,
+                                                    property,
+                                                    &curValue))
+                       return -1;
+
+               if (curValue == value)
+                       return 0;
+
+               if (drm_object_property_set_value(&connector->base,
+                                                       property,
+                                                       value))
+                       return -1;
+
+               if (crtc->saved_mode.hdisplay != 0 &&
+                   crtc->saved_mode.vdisplay != 0) {
+                       if (!drm_crtc_helper_set_mode(encoder->crtc,
+                                                     &crtc->saved_mode,
+                                                     encoder->crtc->x,
+                                                     encoder->crtc->y,
+                                                     
encoder->crtc->primary->fb))
+                               return -1;
+               }
+       } else if (!strcmp(property->name, "backlight") && encoder) {
+               if (drm_object_property_set_value(&connector->base,
+                                                       property,
+                                                       value))
+                       return -1;
+               else
+                        gma_backlight_set(encoder->dev, value);
+       } else if (!strcmp(property->name, "DPMS") && encoder) {
+               const struct drm_encoder_helper_funcs *helpers =
+                                       encoder->helper_private;
+               helpers->dpms(encoder, value);
+       }
+       return 0;
+}
+
diff --git a/drivers/gpu/drm/gma500/gma_lvds.h 
b/drivers/gpu/drm/gma500/gma_lvds.h
index 835305c900d8..ea261a60e9ff 100644
--- a/drivers/gpu/drm/gma500/gma_lvds.h
+++ b/drivers/gpu/drm/gma500/gma_lvds.h
@@ -31,6 +31,8 @@ bool gma_lvds_mode_fixup(struct drm_encoder *encoder,
 void gma_lvds_prepare(struct drm_encoder *encoder);
 void gma_lvds_commit(struct drm_encoder *encoder);
 void gma_lvds_destroy(struct drm_connector *connector);
+int gma_lvds_set_property(struct drm_connector *connector,
+                         struct drm_property *property, uint64_t value);
 
 extern const struct drm_encoder_helper_funcs gma_lvds_helper_funcs;
 extern const struct drm_connector_helper_funcs gma_lvds_connector_helper_funcs;
diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c 
b/drivers/gpu/drm/gma500/psb_intel_lvds.c
index 76742925b760..df2e770c660a 100644
--- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
@@ -132,78 +132,10 @@ void psb_intel_lvds_set_brightness(struct drm_device 
*dev, int level)
                psb_lvds_pwm_set_brightness(dev, level);
 }
 
-int psb_intel_lvds_set_property(struct drm_connector *connector,
-                                      struct drm_property *property,
-                                      uint64_t value)
-{
-       struct drm_encoder *encoder = connector->encoder;
-
-       if (!encoder)
-               return -1;
-
-       if (!strcmp(property->name, "scaling mode")) {
-               struct gma_crtc *crtc = to_gma_crtc(encoder->crtc);
-               uint64_t curval;
-
-               if (!crtc)
-                       goto set_prop_error;
-
-               switch (value) {
-               case DRM_MODE_SCALE_FULLSCREEN:
-                       break;
-               case DRM_MODE_SCALE_NO_SCALE:
-                       break;
-               case DRM_MODE_SCALE_ASPECT:
-                       break;
-               default:
-                       goto set_prop_error;
-               }
-
-               if (drm_object_property_get_value(&connector->base,
-                                                    property,
-                                                    &curval))
-                       goto set_prop_error;
-
-               if (curval == value)
-                       goto set_prop_done;
-
-               if (drm_object_property_set_value(&connector->base,
-                                                       property,
-                                                       value))
-                       goto set_prop_error;
-
-               if (crtc->saved_mode.hdisplay != 0 &&
-                   crtc->saved_mode.vdisplay != 0) {
-                       if (!drm_crtc_helper_set_mode(encoder->crtc,
-                                                     &crtc->saved_mode,
-                                                     encoder->crtc->x,
-                                                     encoder->crtc->y,
-                                                     
encoder->crtc->primary->fb))
-                               goto set_prop_error;
-               }
-       } else if (!strcmp(property->name, "backlight")) {
-               if (drm_object_property_set_value(&connector->base,
-                                                       property,
-                                                       value))
-                       goto set_prop_error;
-               else
-                        gma_backlight_set(encoder->dev, value);
-       } else if (!strcmp(property->name, "DPMS")) {
-               const struct drm_encoder_helper_funcs *hfuncs
-                                               = encoder->helper_private;
-               hfuncs->dpms(encoder, value);
-       }
-
-set_prop_done:
-       return 0;
-set_prop_error:
-       return -1;
-}
-
 const struct drm_connector_funcs psb_intel_lvds_connector_funcs = {
        .dpms = drm_helper_connector_dpms,
        .fill_modes = drm_helper_probe_single_connector_modes,
-       .set_property = psb_intel_lvds_set_property,
+       .set_property = gma_lvds_set_property,
        .destroy = gma_lvds_destroy,
 };
 
-- 
2.36.1

Reply via email to