[PATCH] cx18: Use do_div for 64-bit division to fix 32-bit kernels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Use the do_div macro for 64-bit division. Otherwise, the module will reference __udivdi3 under 32-bit kernels, which is not allowed in kernel space. Follows style used in cx88 module.

Signed-off-by: David Ward <david.ward@xxxxxxxxxx>

diff -r 65ec132f20df -r 91b89f13adb7 linux/drivers/media/video/cx18/cx18-av-core.c --- a/linux/drivers/media/video/cx18/cx18-av-core.c Wed May 27 15:53:00 2009 -0300 +++ b/linux/drivers/media/video/cx18/cx18-av-core.c Thu May 28 19:16:10 2009 -0400
@@ -447,6 +447,7 @@ void cx18_av_std_setup(struct cx18 *cx)

     if (pll_post) {
         int fsc, pll;
+        u64 tmp64;

         pll = (28636360L * ((((u64)pll_int) << 25) + pll_frac)) >> 25;
         pll /= pll_post;
@@ -459,7 +460,9 @@ void cx18_av_std_setup(struct cx18 *cx)
                     "= %d.%03d\n", src_decimation / 256,
                     ((src_decimation % 256) * 1000) / 256);

-        fsc = ((((u64)sc) * 28636360)/src_decimation) >> 13L;
+        tmp64 = ((u64)sc) * 28636360;
+        do_div(tmp64, src_decimation);
+        fsc = ((u32)(tmp64 >> 13L));
         CX18_DEBUG_INFO_DEV(sd,
                     "Chroma sub-carrier initial freq = %d.%06d "
                     "MHz\n", fsc / 1000000, fsc % 1000000);

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux