[PATCH 3/8] drm: atmel-hlcdc: simplify clock divider selection with DIV_ROUND_CLOSEST
Manikandan Muralidharan
manikandan.m at microchip.com
Tue May 19 02:01:30 PDT 2026
DIV_ROUND_CLOSEST naturally selects the nearest divider, making the
manual 10x proximity check redundant. Drop it and switch from
DIV_ROUND_UP accordingly.
Signed-off-by: Manikandan Muralidharan <manikandan.m at microchip.com>
---
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
index 9673fbce42a7..f30138da1ed8 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
@@ -112,28 +112,16 @@ static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c)
mask |= ATMEL_HLCDC_CLKSEL;
}
- div = DIV_ROUND_UP(prate, mode_rate);
+ div = DIV_ROUND_CLOSEST(prate, mode_rate);
if (div < 2) {
div = 2;
} else if (ATMEL_HLCDC_CLKDIV(div) & ~ATMEL_HLCDC_CLKDIV_MASK) {
/* The divider ended up too big, try a lower base rate. */
cfg &= ~ATMEL_HLCDC_CLKSEL;
prate /= 2;
- div = DIV_ROUND_UP(prate, mode_rate);
+ div = DIV_ROUND_CLOSEST(prate, mode_rate);
if (ATMEL_HLCDC_CLKDIV(div) & ~ATMEL_HLCDC_CLKDIV_MASK)
div = ATMEL_HLCDC_CLKDIV_MASK;
- } else {
- int div_low = prate / mode_rate;
-
- if (div_low >= 2 &&
- (10 * (prate / div_low - mode_rate) <
- (mode_rate - prate / div)))
- /*
- * At least 10 times better when using a higher
- * frequency than requested, instead of a lower.
- * So, go with that.
- */
- div = div_low;
}
cfg |= ATMEL_HLCDC_CLKDIV(div);
--
2.25.1
More information about the linux-arm-kernel
mailing list