aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2015-09-07 08:44:44 -0400
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2016-02-23 02:34:30 -0500
commitd9829a328943c06b034f52885ea650e334b062a7 (patch)
treeb151399960e27578c01a5e752db076f9bcfb881b
parent2427b3037710d4aa71c9c1cdfcd542805e0c53f3 (diff)
drm: rcar-du: lvds: Avoid duplication of clock clamp code
Replace the duplicate code by a single central function. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_encoder.c6
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c7
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c9
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.h6
4 files changed, 18 insertions, 10 deletions
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_encoder.c b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
index c08700757feb..4e939e41f030 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_encoder.c
@@ -89,12 +89,8 @@ static int rcar_du_encoder_atomic_check(struct drm_encoder *encoder,
89 /* The flat panel mode is fixed, just copy it to the adjusted mode. */ 89 /* The flat panel mode is fixed, just copy it to the adjusted mode. */
90 drm_mode_copy(adjusted_mode, panel_mode); 90 drm_mode_copy(adjusted_mode, panel_mode);
91 91
92 /* The internal LVDS encoder has a clock frequency operating range of
93 * 30MHz to 150MHz. Clamp the clock accordingly.
94 */
95 if (renc->lvds) 92 if (renc->lvds)
96 adjusted_mode->clock = clamp(adjusted_mode->clock, 93 rcar_du_lvdsenc_atomic_check(renc->lvds, adjusted_mode);
97 30000, 150000);
98 94
99 return 0; 95 return 0;
100} 96}
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c b/drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c
index 2567efcbee36..065b3a1d6134 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c
@@ -71,12 +71,9 @@ static int rcar_du_hdmienc_atomic_check(struct drm_encoder *encoder,
71 struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode; 71 struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode;
72 const struct drm_display_mode *mode = &crtc_state->mode; 72 const struct drm_display_mode *mode = &crtc_state->mode;
73 73
74 /* The internal LVDS encoder has a clock frequency operating range of
75 * 30MHz to 150MHz. Clamp the clock accordingly.
76 */
77 if (hdmienc->renc->lvds) 74 if (hdmienc->renc->lvds)
78 adjusted_mode->clock = clamp(adjusted_mode->clock, 75 rcar_du_lvdsenc_atomic_check(hdmienc->renc->lvds,
79 30000, 150000); 76 adjusted_mode);
80 77
81 if (sfuncs->mode_fixup == NULL) 78 if (sfuncs->mode_fixup == NULL)
82 return 0; 79 return 0;
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c b/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c
index 85043c5bad03..937b2da98814 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c
@@ -140,6 +140,15 @@ int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds, struct drm_crtc *crtc,
140 return -EINVAL; 140 return -EINVAL;
141} 141}
142 142
143void rcar_du_lvdsenc_atomic_check(struct rcar_du_lvdsenc *lvds,
144 struct drm_display_mode *mode)
145{
146 /* The internal LVDS encoder has a clock frequency operating range of
147 * 30MHz to 150MHz. Clamp the clock accordingly.
148 */
149 mode->clock = clamp(mode->clock, 30000, 150000);
150}
151
143static int rcar_du_lvdsenc_get_resources(struct rcar_du_lvdsenc *lvds, 152static int rcar_du_lvdsenc_get_resources(struct rcar_du_lvdsenc *lvds,
144 struct platform_device *pdev) 153 struct platform_device *pdev)
145{ 154{
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.h b/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.h
index 9a6001c07303..dfdba746edf4 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.h
+++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.h
@@ -30,6 +30,8 @@ enum rcar_lvds_input {
30int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu); 30int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu);
31int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds, 31int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds,
32 struct drm_crtc *crtc, bool enable); 32 struct drm_crtc *crtc, bool enable);
33void rcar_du_lvdsenc_atomic_check(struct rcar_du_lvdsenc *lvds,
34 struct drm_display_mode *mode);
33#else 35#else
34static inline int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu) 36static inline int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu)
35{ 37{
@@ -40,6 +42,10 @@ static inline int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds,
40{ 42{
41 return 0; 43 return 0;
42} 44}
45static inline void rcar_du_lvdsenc_atomic_check(struct rcar_du_lvdsenc *lvds,
46 struct drm_display_mode *mode)
47{
48}
43#endif 49#endif
44 50
45#endif /* __RCAR_DU_LVDSENC_H__ */ 51#endif /* __RCAR_DU_LVDSENC_H__ */