drm: rcar-du: lvds: Avoid duplication of clock clamp code
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Mon, 7 Sep 2015 12:44:44 +0000 (15:44 +0300)
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tue, 23 Feb 2016 07:34:30 +0000 (09:34 +0200)
Replace the duplicate code by a single central function.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
drivers/gpu/drm/rcar-du/rcar_du_encoder.c
drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c
drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c
drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.h

index c08700757feb43a892361fa612a004f6ad485300..4e939e41f030caeb82dcd705d98f7cbce7ff9f3d 100644 (file)
@@ -89,12 +89,8 @@ static int rcar_du_encoder_atomic_check(struct drm_encoder *encoder,
        /* The flat panel mode is fixed, just copy it to the adjusted mode. */
        drm_mode_copy(adjusted_mode, panel_mode);
 
-       /* The internal LVDS encoder has a clock frequency operating range of
-        * 30MHz to 150MHz. Clamp the clock accordingly.
-        */
        if (renc->lvds)
-               adjusted_mode->clock = clamp(adjusted_mode->clock,
-                                            30000, 150000);
+               rcar_du_lvdsenc_atomic_check(renc->lvds, adjusted_mode);
 
        return 0;
 }
index 2567efcbee367de0ebeefc694c32fec7f685ea69..065b3a1d613495ef0fb406e68dbc1630403d9062 100644 (file)
@@ -71,12 +71,9 @@ static int rcar_du_hdmienc_atomic_check(struct drm_encoder *encoder,
        struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode;
        const struct drm_display_mode *mode = &crtc_state->mode;
 
-       /* The internal LVDS encoder has a clock frequency operating range of
-        * 30MHz to 150MHz. Clamp the clock accordingly.
-        */
        if (hdmienc->renc->lvds)
-               adjusted_mode->clock = clamp(adjusted_mode->clock,
-                                            30000, 150000);
+               rcar_du_lvdsenc_atomic_check(hdmienc->renc->lvds,
+                                            adjusted_mode);
 
        if (sfuncs->mode_fixup == NULL)
                return 0;
index 85043c5bad032d8c746726e490d25eb65dcafb9c..937b2da98814c87b4b9c73c63bbb8d61360682ee 100644 (file)
@@ -140,6 +140,15 @@ int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds, struct drm_crtc *crtc,
                return -EINVAL;
 }
 
+void rcar_du_lvdsenc_atomic_check(struct rcar_du_lvdsenc *lvds,
+                                 struct drm_display_mode *mode)
+{
+       /* The internal LVDS encoder has a clock frequency operating range of
+        * 30MHz to 150MHz. Clamp the clock accordingly.
+        */
+       mode->clock = clamp(mode->clock, 30000, 150000);
+}
+
 static int rcar_du_lvdsenc_get_resources(struct rcar_du_lvdsenc *lvds,
                                         struct platform_device *pdev)
 {
index 9a6001c0730354b40d118650a27004ab470f6068..dfdba746edf48da5c9f16e55ff6a9fa033cf074e 100644 (file)
@@ -30,6 +30,8 @@ enum rcar_lvds_input {
 int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu);
 int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds,
                           struct drm_crtc *crtc, bool enable);
+void rcar_du_lvdsenc_atomic_check(struct rcar_du_lvdsenc *lvds,
+                                 struct drm_display_mode *mode);
 #else
 static inline int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu)
 {
@@ -40,6 +42,10 @@ static inline int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds,
 {
        return 0;
 }
+static inline void rcar_du_lvdsenc_atomic_check(struct rcar_du_lvdsenc *lvds,
+                                               struct drm_display_mode *mode)
+{
+}
 #endif
 
 #endif /* __RCAR_DU_LVDSENC_H__ */