* Author: Ping-Hsun Wu <ping-hsun.wu@mediatek.com>
  */
 
+#include <linux/math64.h>
 #include <media/v4l2-common.h>
 #include <media/videobuf2-v4l2.h>
 #include <media/videobuf2-dma-contig.h>
                u32 bpl = pix_mp->plane_fmt[i].bytesperline;
                u32 min_si, max_si;
                u32 si = pix_mp->plane_fmt[i].sizeimage;
+               u64 di;
 
                bpl = clamp(bpl, min_bpl, max_bpl);
                pix_mp->plane_fmt[i].bytesperline = bpl;
 
-               min_si = (bpl * pix_mp->height * fmt->depth[i]) /
-                        fmt->row_depth[i];
-               max_si = (bpl * s.max_height * fmt->depth[i]) /
-                        fmt->row_depth[i];
+               di = (u64)bpl * pix_mp->height * fmt->depth[i];
+               min_si = (u32)div_u64(di, fmt->row_depth[i]);
+               di = (u64)bpl * s.max_height * fmt->depth[i];
+               max_si = (u32)div_u64(di, fmt->row_depth[i]);
 
                si = clamp(si, min_si, max_si);
                pix_mp->plane_fmt[i].sizeimage = si;