Re: [PATCH] e4000: fix PLL calc error in 32-bit arch

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

 



Testers?

Here is tree:
http://git.linuxtv.org/anttip/media_tree.git/shortlog/refs/heads/e4000_fix_3.11

I assume all of you have been running 32-bit arch as that bug is related to 32-bit overflow.

regards
Antti


On 09/02/2013 07:17 PM, Antti Palosaari wrote:
Fix long-lasting error that causes tuning failure to some frequencies
on 32-bit arch.

Special thanks goes to Damien CABROL who finally find root of the bug.
Also big thanks to Jacek Konieczny for donating non-working device.

Reported-by: Jacek Konieczny <jajcus@xxxxxxxxxx>
Reported-by: Torsten Seyffarth <t.seyffarth@xxxxxx>
Reported-by: Jan Taegert <jantaegert@xxxxxxx>
Reported-by: Damien CABROL <cabrol.damien@xxxxxxx>
Tested-by: Damien CABROL <cabrol.damien@xxxxxxx>
Signed-off-by: Antti Palosaari <crope@xxxxxx>
---
  drivers/media/tuners/e4000.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/tuners/e4000.c b/drivers/media/tuners/e4000.c
index 1b33ed3..a88f757 100644
--- a/drivers/media/tuners/e4000.c
+++ b/drivers/media/tuners/e4000.c
@@ -232,7 +232,7 @@ static int e4000_set_params(struct dvb_frontend *fe)
  	 * or more.
  	 */
  	f_VCO = c->frequency * e4000_pll_lut[i].mul;
-	sigma_delta = 0x10000UL * (f_VCO % priv->cfg->clock) / priv->cfg->clock;
+	sigma_delta = div_u64(0x10000ULL * (f_VCO % priv->cfg->clock), priv->cfg->clock);
  	buf[0] = f_VCO / priv->cfg->clock;
  	buf[1] = (sigma_delta >> 0) & 0xff;
  	buf[2] = (sigma_delta >> 8) & 0xff;



--
http://palosaari.fi/
--
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