From 0e2ee0944a6a0333c3f9c2b2e83230d6e577e3b1 Mon Sep 17 00:00:00 2001 From: Chen Shunqing Date: Fri, 30 May 2025 09:33:44 +0800 Subject: [PATCH] media: i2c: rk628: fix issue of incorrect calculation of dst_rate Signed-off-by: Chen Shunqing Change-Id: I46f25b2b979c1974a98572e2d0f57925bd476ed2 --- drivers/media/i2c/rk628/rk628.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/rk628/rk628.c b/drivers/media/i2c/rk628/rk628.c index 51d6b4d3f2be..fe43f2ca3c11 100644 --- a/drivers/media/i2c/rk628/rk628.c +++ b/drivers/media/i2c/rk628/rk628.c @@ -739,13 +739,15 @@ void rk628_post_process_en(struct rk628 *rk628, u64 *dst_pclk) { u64 dst_rate, src_rate; - u64 dst_htotal, src_htotal; + u64 dst_htotal, dst_vtotal, src_htotal, src_vtotal; src_rate = src->pixelclock; dst_htotal = dst->hactive + dst->hfront_porch + dst->hsync_len + dst->hback_porch; - dst_rate = src_rate * dst->vactive * dst_htotal; + dst_vtotal = dst->vactive + dst->vfront_porch + dst->vsync_len + dst->vback_porch; + dst_rate = src_rate * dst_vtotal * dst_htotal; src_htotal = src->hactive + src->hfront_porch + src->hsync_len + src->hback_porch; - do_div(dst_rate, (src->vactive * src_htotal)); + src_vtotal = src->vactive + src->vfront_porch + src->vsync_len + src->vback_porch; + do_div(dst_rate, (src_vtotal * src_htotal)); dst->pixelclock = dst_rate; *dst_pclk = dst->pixelclock;