summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@nokia.com>2010-10-29 14:07:25 +0300
committerLiam Girdwood <lrg@slimlogic.co.uk>2010-10-30 17:33:38 +0100
commitd54e1f4fdf4cf9754b7220ae4cb66dcae0fc1702 (patch)
treedef420c853f160f65c2200ba612f3a05cf69ee15
parent911a0f0bfc01750590e8ac6e7f9f4921f470b0d1 (diff)
downloadlinux-3.10-d54e1f4fdf4cf9754b7220ae4cb66dcae0fc1702.tar.gz
linux-3.10-d54e1f4fdf4cf9754b7220ae4cb66dcae0fc1702.tar.bz2
linux-3.10-d54e1f4fdf4cf9754b7220ae4cb66dcae0fc1702.zip
ASoC: tlv320dac33: Limit the US_TO_SAMPLES macro
Limit the time window to maximum 1s in the macro. The driver deals with much shorter times (<200ms). This will fix a rare division by zero bug in Mode1. This could happen, when the work is not executed in time (within mode1_latency) after the interrupt. In this case the DAC33 will not receive the needed nSample command in time, and enters to an unknown state, and won't recover. In such event the time window will increase, and eventually going to be bigger than 1s, resulting devision by zero. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
-rw-r--r--sound/soc/codecs/tlv320dac33.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/soc/codecs/tlv320dac33.c b/sound/soc/codecs/tlv320dac33.c
index fed14582b49..c47c20d21ea 100644
--- a/sound/soc/codecs/tlv320dac33.c
+++ b/sound/soc/codecs/tlv320dac33.c
@@ -58,7 +58,7 @@
(1000000000 / ((rate * 1000) / samples))
#define US_TO_SAMPLES(rate, us) \
- (rate / (1000000 / us))
+ (rate / (1000000 / (us < 1000000 ? us : 1000000)))
#define UTHR_FROM_PERIOD_SIZE(samples, playrate, burstrate) \
((samples * 5000) / ((burstrate * 5000) / (burstrate - playrate)))