summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Walls <awalls@radix.net>2009-05-29 20:54:02 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 18:21:16 -0300
commit9ad4c6551b8540054f51b483ce513ccb87f8181b (patch)
tree44027d83a752158fa3d3e0864a761672552877f0
parent75c74d1c78ec3b713a986e0efc645ed558384cdf (diff)
downloadop-kernel-dev-9ad4c6551b8540054f51b483ce513ccb87f8181b.zip
op-kernel-dev-9ad4c6551b8540054f51b483ce513ccb87f8181b.tar.gz
V4L/DVB (11898): cx18: Perform 64 bit divide so it works for 32 bit systems
Thanks to David Ward and Mike Krufky for reporting the problem and debugging this as an unresolved symbol due to a 64 bit divide on a 32 bit system. David Ward provided the content of this patch; Andy Walls only performed some cosmetic edits. Reported-by: David Ward <david.ward@gatech.edu> Signed-off-by: David Ward <david.ward@gatech.edu> Signed-off-by: Andy Walls <awalls@radix.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/video/cx18/cx18-av-core.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/media/video/cx18/cx18-av-core.c b/drivers/media/video/cx18/cx18-av-core.c
index 0b3d840..536dedb 100644
--- a/drivers/media/video/cx18/cx18-av-core.c
+++ b/drivers/media/video/cx18/cx18-av-core.c
@@ -447,6 +447,7 @@ void cx18_av_std_setup(struct cx18 *cx)
if (pll_post) {
int fsc, pll;
+ u64 tmp;
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;
+ tmp = 28636360 * (u64) sc;
+ do_div(tmp, src_decimation);
+ fsc = tmp >> 13;
CX18_DEBUG_INFO_DEV(sd,
"Chroma sub-carrier initial freq = %d.%06d "
"MHz\n", fsc / 1000000, fsc % 1000000);
OpenPOWER on IntegriCloud