kernel-fxtec-pro1x/sound/soc/fsl
Oskar Schirmer d6437c14df ASoC: fsl: imx-pcm-fiq: remove bogus period delta calculation
Originally snd_hrtimer_callback() used iprtd->period_time for
some jiffies based estimation to determine the right moment
to call snd_pcm_period_elapsed(). As timer drifts may well be a
problem, this was changed in commit b4e82b5b78 to be based
on buffer transmission progress, using iprtd->offset and
runtime->buffer_size to calculate the amount of data since last
period had elapsed.

Unfortunately, iprtd->offset counts in bytes, while
runtime->buffer_size counts frames, so adding these to find some
delta is like comparing apples and oranges, and eventually results
in negative delta values every now and then. This is no big harm,
because it simply causes snd_pcm_period_elapsed() being called
more often than necessary, as negative delta is taken for a
large unsigned value by implicit conversion rule.
Nonetheless, the calculation is broken, so one would replace
the runtime->buffer_size by its equivalent in bytes.

But then, there are chances snd_pcm_period_elapsed() is called
late, because calculating the moment for the elapsed period
into delta is based against the iprtd->last_offset, which is not
necessarily the first byte of the period in question, but some
random byte which the FIQ handler left us with in r8/r9 by
accident. Again, negative impact is low, as there are plenty of
periods already prefilled with data, and snd_pcm_period_elapsed()
will probably be called latest when the following period is
reached. However, the calculation is conceptually broken, and we
are best off removing the clever stuff altogether.

snd_pcm_period_elapsed() is now simply called once everytime
snd_hrtimer_callback() is run, which may not be most accurate,
but at least this way we are quite sure we dont miss an end of
period. There is not much extra effort wasted by superfluous
calls to snd_pcm_period_elapsed(), as the timer frequency
closely matches the period size anyway.

Signed-off-by: Oskar Schirmer <oskar@scara.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
2013-12-02 11:13:19 +00:00
..
efika-audio-fabric.c ASoC: fsl: Add .owner to struct snd_soc_card 2011-12-22 17:34:32 +00:00
eukrea-tlv320.c ASoC: eukrea-tlv320: Use dev_err instead of pr_err. 2013-10-24 13:22:30 +01:00
fsl_dma.c ASoC: fsl: remove __dev* attributes 2012-12-10 00:30:25 +09:00
fsl_dma.h ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
fsl_spdif.c Merge remote-tracking branch 'asoc/topic/fsl' into asoc-next 2013-11-03 22:04:17 -08:00
fsl_spdif.h ASoC: fsl: Add S/PDIF CPU DAI driver 2013-08-22 10:45:22 +01:00
fsl_ssi.c ASoC: fsl_ssi: Fix irq_of_parse_and_map() return value check 2013-10-03 16:57:54 +01:00
fsl_ssi.h ASoC: fsl-ssi: Add SACNT definitions 2013-04-16 13:03:15 +01:00
fsl_utils.c ASoC: fsl: remove helper fsl_asoc_get_codec_dev_name 2012-04-01 11:28:27 +01:00
fsl_utils.h ASoC: fsl: remove helper fsl_asoc_get_codec_dev_name 2012-04-01 11:28:27 +01:00
imx-audmux.c ASoC: fsl: Fix memory leak in imx-audmux.c 2013-10-14 12:52:59 +01:00
imx-audmux.h ASoC: imx-audmux: Move definitions to dt-bindings 2013-08-16 11:05:17 +01:00
imx-mc13783.c ASoC: fsl: Add missing pm to current machine drivers 2013-10-24 11:22:44 +01:00
imx-pcm-dma.c ASoC: dmaengine: Use filter_data rather than dma_data for compat requests 2013-10-24 11:03:19 +01:00
imx-pcm-fiq.c ASoC: fsl: imx-pcm-fiq: remove bogus period delta calculation 2013-12-02 11:13:19 +00:00
imx-pcm.h ASoC: fsl: Fix module build 2013-07-31 14:59:11 +01:00
imx-sgtl5000.c Merge remote-tracking branch 'asoc/topic/fsl' into asoc-next 2013-10-24 11:24:06 +01:00
imx-spdif.c ASoC: imx-spdif: Use devm_snd_soc_register_card 2013-09-19 14:57:37 +01:00
imx-ssi.c Merge remote-tracking branch 'asoc/topic/fsl' into asoc-next 2013-10-24 11:24:06 +01:00
imx-ssi.h ASoC: fsl: imx-ssi: fix probe on imx31 2013-10-07 11:17:44 +01:00
imx-wm8962.c Merge remote-tracking branch 'asoc/topic/fsl' into asoc-next 2013-10-24 11:24:06 +01:00
Kconfig ASoC: fsl_spdif: Select regmap-mmio 2013-09-08 18:21:18 +01:00
Makefile ASoC: fsl: Add one blank space after ':=' in Makefile 2013-08-30 23:01:18 +01:00
mpc5200_dma.c powerpc, dma: move bestcomm driver from arch/powerpc/sysdev to drivers/dma 2013-01-03 15:41:20 +01:00
mpc5200_dma.h ASoC: fsl: mpc5200 combine psc_dma platform data 2012-09-18 23:03:42 -04:00
mpc5200_psc_ac97.c ASoC: ac97: Support multi-platform AC'97 2013-06-27 09:48:42 +01:00
mpc5200_psc_ac97.h ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
mpc5200_psc_i2s.c ASoC: switch over to use snd_soc_register_component() on mpc5200 i2s 2013-03-26 21:55:26 +00:00
mpc8610_hpcd.c ASoC: fsl: remove __dev* attributes 2012-12-10 00:30:25 +09:00
mx27vis-aic32x4.c ASoC: fsl: remove use of imx-pcm-audio from imx-ssi 2013-05-15 09:27:27 +04:00
p1022_ds.c ASoC: fsl: remove __dev* attributes 2012-12-10 00:30:25 +09:00
p1022_rdk.c ASoC: fsl: remove __dev* attributes 2012-12-10 00:30:25 +09:00
pcm030-audio-fabric.c ASoC: pcm030 audio fabric: remove __init from probe 2013-03-12 18:55:26 +00:00
phycore-ac97.c ASoC: fsl: remove use of imx-fiq-pcm-audio from imx-ssi 2013-05-15 09:27:27 +04:00
wm1133-ev1.c ASoC: fsl: remove use of imx-fiq-pcm-audio from imx-ssi 2013-05-15 09:27:27 +04:00