Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+18 -10
+1 -5
drivers/gpu/drm/rcar-du/rcar_du_encoder.c
··· 89 89 /* The flat panel mode is fixed, just copy it to the adjusted mode. */ 90 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 92 if (renc->lvds) 96 - adjusted_mode->clock = clamp(adjusted_mode->clock, 97 - 30000, 150000); 93 + rcar_du_lvdsenc_atomic_check(renc->lvds, adjusted_mode); 98 94 99 95 return 0; 100 96 }
+2 -5
drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c
··· 71 71 struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode; 72 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 74 if (hdmienc->renc->lvds) 78 - adjusted_mode->clock = clamp(adjusted_mode->clock, 79 - 30000, 150000); 75 + rcar_du_lvdsenc_atomic_check(hdmienc->renc->lvds, 76 + adjusted_mode); 80 77 81 78 if (sfuncs->mode_fixup == NULL) 82 79 return 0;
+9
drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c
··· 140 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 152 static int rcar_du_lvdsenc_get_resources(struct rcar_du_lvdsenc *lvds, 144 153 struct platform_device *pdev) 145 154 {
+6
drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.h
··· 30 30 int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu); 31 31 int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds, 32 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 35 #else 34 36 static inline int rcar_du_lvdsenc_init(struct rcar_du_device *rcdu) 35 37 { ··· 41 39 struct drm_crtc *crtc, bool enable) 42 40 { 43 41 return 0; 42 + } 43 + static inline void rcar_du_lvdsenc_atomic_check(struct rcar_du_lvdsenc *lvds, 44 + struct drm_display_mode *mode) 45 + { 44 46 } 45 47 #endif 46 48