[alsa-devel] [PATCH] ASoC: bcm2835: Remove redundant channel checking code in hw_params
Matt Flax
flatmax at flatmax.org
Fri Jan 20 06:58:45 CET 2017
This hasn't had any airplay since posting 5 days ago.
Can anyone advise on the correct person to contact regarding the review
of this patch ?
thanks
Matt
On 15/01/17 12:17, Matt Flax wrote:
> Due to channels_max and channels_min in the bcm2835_i2s_dai structure,
> the channel guard code in bcm2835_i2s_hw_params is redundant.
>
> The bcm2835_i2s_hw_params function checks that the channel count is
> 2 before continuing. This code never gets executed because core soc
> checks prevent the execution (upon channel mismatch) of the
> bcm2835_i2s_hw_params function.
>
> The redundancy has been tested and checked for the case when
> the bcm2835_i2s_dai structure has channels_max = 2 and a request
> for 8 channels has been made. The test has confirmed that the
> removed code is redundant as it never gets executed when a
> channel mismatch occurs.
>
> This redundant channel count check may seem like it will not cause
> any problems however some sound cards (such as the 8 channel
> AudioInjector Octo sound card) require the execution of the
> bcm2835_i2s_hw_params function when channels_max in the
> bcm2835_i2s_dai structure has been increased to 8.
>
> As the channel checking code in bcm2835_i2s_hw_params is redundant
> and stops certain cards from working it has been removed.
>
> Signed-off-by: Matt Flax <flatmax at flatmax.org>
> ---
> sound/soc/bcm/bcm2835-i2s.c | 12 +++---------
> 1 file changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/sound/soc/bcm/bcm2835-i2s.c b/sound/soc/bcm/bcm2835-i2s.c
> index 6ba2049..1773b83 100644
> --- a/sound/soc/bcm/bcm2835-i2s.c
> +++ b/sound/soc/bcm/bcm2835-i2s.c
> @@ -310,15 +310,9 @@ static int bcm2835_i2s_hw_params(struct snd_pcm_substream *substream,
> ch1pos = data_delay;
> ch2pos = bclk_ratio / 2 + data_delay;
>
> - switch (params_channels(params)) {
> - case 2:
> - format = BCM2835_I2S_CH1(format) | BCM2835_I2S_CH2(format);
> - format |= BCM2835_I2S_CH1(BCM2835_I2S_CHPOS(ch1pos));
> - format |= BCM2835_I2S_CH2(BCM2835_I2S_CHPOS(ch2pos));
> - break;
> - default:
> - return -EINVAL;
> - }
> + format = BCM2835_I2S_CH1(format) | BCM2835_I2S_CH2(format);
> + format |= BCM2835_I2S_CH1(BCM2835_I2S_CHPOS(ch1pos));
> + format |= BCM2835_I2S_CH2(BCM2835_I2S_CHPOS(ch2pos));
>
> /*
> * Set format for both streams.
More information about the Alsa-devel
mailing list