[PATCH 3.2 066/102] ALSA: pcm: fix fifo_size frame calculation

2014-11-01 Thread Ben Hutchings
3.2.64-rc1 review patch.  If anyone has any objections, please let me know.

--

From: Clemens Ladisch 

commit a9960e6a293e6fc3ed414643bb4e4106272e4d0a upstream.

The calculated frame size was wrong because snd_pcm_format_physical_width()
actually returns the number of bits, not bytes.

Use snd_pcm_format_size() instead, which not only returns bytes, but also
simplifies the calculation.

Fixes: 8bea869c5e56 ("ALSA: PCM midlevel: improve fifo_size handling")
Signed-off-by: Clemens Ladisch 
Signed-off-by: Takashi Iwai 
Signed-off-by: Ben Hutchings 
---
 sound/core/pcm_lib.c | 8 +---
 1 file changed, 5 insertions(+), 3 deletions(-)

--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -1692,14 +1692,16 @@ static int snd_pcm_lib_ioctl_fifo_size(s
 {
struct snd_pcm_hw_params *params = arg;
snd_pcm_format_t format;
-   int channels, width;
+   int channels;
+   ssize_t frame_size;
 
params->fifo_size = substream->runtime->hw.fifo_size;
if (!(substream->runtime->hw.info & SNDRV_PCM_INFO_FIFO_IN_FRAMES)) {
format = params_format(params);
channels = params_channels(params);
-   width = snd_pcm_format_physical_width(format);
-   params->fifo_size /= width * channels;
+   frame_size = snd_pcm_format_size(format, channels);
+   if (frame_size > 0)
+   params->fifo_size /= (unsigned)frame_size;
}
return 0;
 }

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 3.2 066/102] ALSA: pcm: fix fifo_size frame calculation

2014-11-01 Thread Ben Hutchings
3.2.64-rc1 review patch.  If anyone has any objections, please let me know.

--

From: Clemens Ladisch clem...@ladisch.de

commit a9960e6a293e6fc3ed414643bb4e4106272e4d0a upstream.

The calculated frame size was wrong because snd_pcm_format_physical_width()
actually returns the number of bits, not bytes.

Use snd_pcm_format_size() instead, which not only returns bytes, but also
simplifies the calculation.

Fixes: 8bea869c5e56 (ALSA: PCM midlevel: improve fifo_size handling)
Signed-off-by: Clemens Ladisch clem...@ladisch.de
Signed-off-by: Takashi Iwai ti...@suse.de
Signed-off-by: Ben Hutchings b...@decadent.org.uk
---
 sound/core/pcm_lib.c | 8 +---
 1 file changed, 5 insertions(+), 3 deletions(-)

--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -1692,14 +1692,16 @@ static int snd_pcm_lib_ioctl_fifo_size(s
 {
struct snd_pcm_hw_params *params = arg;
snd_pcm_format_t format;
-   int channels, width;
+   int channels;
+   ssize_t frame_size;
 
params-fifo_size = substream-runtime-hw.fifo_size;
if (!(substream-runtime-hw.info  SNDRV_PCM_INFO_FIFO_IN_FRAMES)) {
format = params_format(params);
channels = params_channels(params);
-   width = snd_pcm_format_physical_width(format);
-   params-fifo_size /= width * channels;
+   frame_size = snd_pcm_format_size(format, channels);
+   if (frame_size  0)
+   params-fifo_size /= (unsigned)frame_size;
}
return 0;
 }

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/