Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ad4c655 authored by Andy Walls's avatar Andy Walls Committed by Mauro Carvalho Chehab
Browse files

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: default avatarDavid Ward <david.ward@gatech.edu>
Signed-off-by: default avatarDavid Ward <david.ward@gatech.edu>
Signed-off-by: default avatarAndy Walls <awalls@radix.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 75c74d1c
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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);