diff options
author | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2015-09-07 08:44:44 -0400 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> | 2016-02-23 02:34:30 -0500 |
commit | d9829a328943c06b034f52885ea650e334b062a7 (patch) | |
tree | b151399960e27578c01a5e752db076f9bcfb881b | |
parent | 2427b3037710d4aa71c9c1cdfcd542805e0c53f3 (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.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.h | 6 |
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 | ||
143 | void 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 | |||
143 | static int rcar_du_lvdsenc_get_resources(struct rcar_du_lvdsenc *lvds, | 152 | static 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 { | |||
30 | int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu); | 30 | int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu); |
31 | int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds, | 31 | int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds, |
32 | struct drm_crtc *crtc, bool enable); | 32 | struct drm_crtc *crtc, bool enable); |
33 | void rcar_du_lvdsenc_atomic_check(struct rcar_du_lvdsenc *lvds, | ||
34 | struct drm_display_mode *mode); | ||
33 | #else | 35 | #else |
34 | static inline int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu) | 36 | static 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 | } |
45 | static 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__ */ |