ASoC: qcom: lpass-cpu: Fix fallback SD line index handling

Message ID 20221231061545.2110253-1-computersforpeace@gmail.com
State New
Headers
Series ASoC: qcom: lpass-cpu: Fix fallback SD line index handling |

Commit Message

Brian Norris Dec. 31, 2022, 6:15 a.m. UTC
  These indices should reference the ID placed within the dai_driver
array, not the indices of the array itself.

This fixes commit 4ff028f6c108 ("ASoC: qcom: lpass-cpu: Make I2S SD
lines configurable"), which among others, broke IPQ8064 audio
(sound/soc/qcom/lpass-ipq806x.c) because it uses ID 4 but we'd stop
initializing the mi2s_playback_sd_mode and mi2s_capture_sd_mode arrays
at ID 0.

Fixes: 4ff028f6c108 ("ASoC: qcom: lpass-cpu: Make I2S SD lines configurable")
Cc: <stable@vger.kernel.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
---
 sound/soc/qcom/lpass-cpu.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
  

Comments

Stephan Gerhold Jan. 1, 2023, 11:36 a.m. UTC | #1
Hi Brian,

On Fri, Dec 30, 2022 at 10:15:45PM -0800, Brian Norris wrote:
> These indices should reference the ID placed within the dai_driver
> array, not the indices of the array itself.
> 

Indeed, thanks for the fix and sorry for breaking IPQ8064 audio. Looks
like it's not tested very often because my patch that broke it was
merged 2.5 years ago. :-)

> This fixes commit 4ff028f6c108 ("ASoC: qcom: lpass-cpu: Make I2S SD
> lines configurable"), which among others, broke IPQ8064 audio

FWIW I think it's really just IPQ8064 audio (no others) because the
other platforms all happen to have the MI2S ports at the same index as
their ID.

> (sound/soc/qcom/lpass-ipq806x.c) because it uses ID 4 but we'd stop
> initializing the mi2s_playback_sd_mode and mi2s_capture_sd_mode arrays
> at ID 0.
> 
> Fixes: 4ff028f6c108 ("ASoC: qcom: lpass-cpu: Make I2S SD lines configurable")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Brian Norris <computersforpeace@gmail.com>

Reviewed-by: Stephan Gerhold <stephan@gerhold.net>

BTW I just found this patch "by accident" while looking for something
else on the stable mailing list. Please Cc the original author if you
use Fixes (get_maintainer.pl should suggest that automatically if you
run it in the kernel tree). :)

Thanks!
Stephan

> ---
>  sound/soc/qcom/lpass-cpu.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/soc/qcom/lpass-cpu.c b/sound/soc/qcom/lpass-cpu.c
> index 54353842dc07..dbdaaa85ce48 100644
> --- a/sound/soc/qcom/lpass-cpu.c
> +++ b/sound/soc/qcom/lpass-cpu.c
> @@ -1037,10 +1037,11 @@ static void of_lpass_cpu_parse_dai_data(struct device *dev,
>  					struct lpass_data *data)
>  {
>  	struct device_node *node;
> -	int ret, id;
> +	int ret, i, id;
>  
>  	/* Allow all channels by default for backwards compatibility */
> -	for (id = 0; id < data->variant->num_dai; id++) {
> +	for (i = 0; i < data->variant->num_dai; i++) {
> +		id = data->variant->dai_driver[i].id;
>  		data->mi2s_playback_sd_mode[id] = LPAIF_I2SCTL_MODE_8CH;
>  		data->mi2s_capture_sd_mode[id] = LPAIF_I2SCTL_MODE_8CH;
>  	}
> -- 
> 2.39.0
>
  
Mark Brown Jan. 2, 2023, 12:06 a.m. UTC | #2
On Fri, 30 Dec 2022 22:15:45 -0800, Brian Norris wrote:
> These indices should reference the ID placed within the dai_driver
> array, not the indices of the array itself.
> 
> This fixes commit 4ff028f6c108 ("ASoC: qcom: lpass-cpu: Make I2S SD
> lines configurable"), which among others, broke IPQ8064 audio
> (sound/soc/qcom/lpass-ipq806x.c) because it uses ID 4 but we'd stop
> initializing the mi2s_playback_sd_mode and mi2s_capture_sd_mode arrays
> at ID 0.
> 
> [...]

Applied to

   broonie/sound.git for-next

Thanks!

[1/1] ASoC: qcom: lpass-cpu: Fix fallback SD line index handling
      commit: 000bca8d706d1bf7cca01af75787247c5a2fdedf

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark
  

Patch

diff --git a/sound/soc/qcom/lpass-cpu.c b/sound/soc/qcom/lpass-cpu.c
index 54353842dc07..dbdaaa85ce48 100644
--- a/sound/soc/qcom/lpass-cpu.c
+++ b/sound/soc/qcom/lpass-cpu.c
@@ -1037,10 +1037,11 @@  static void of_lpass_cpu_parse_dai_data(struct device *dev,
 					struct lpass_data *data)
 {
 	struct device_node *node;
-	int ret, id;
+	int ret, i, id;
 
 	/* Allow all channels by default for backwards compatibility */
-	for (id = 0; id < data->variant->num_dai; id++) {
+	for (i = 0; i < data->variant->num_dai; i++) {
+		id = data->variant->dai_driver[i].id;
 		data->mi2s_playback_sd_mode[id] = LPAIF_I2SCTL_MODE_8CH;
 		data->mi2s_capture_sd_mode[id] = LPAIF_I2SCTL_MODE_8CH;
 	}