ASoC: pxa: remove incorrect do_div() call
Subsystems (3)
PATCH 1/1 ASoC: pxa: remove incorrect do_div() call
The new optimized do_div implementation (now in asm-generic/next) exposes a glitch in the brownstone audio driver by producing a compile-time warning:
sound/soc/pxa/brownstone.c: In function 'brownstone_wm8994_hw_params':sound/soc/pxa/brownstone.c:67:85: warning: comparison of distinct pointer types lacks a cast sound/soc/pxa/brownstone.c:67:10125: warning: right shift count >= width of type [-Wshift-count-overflow] sound/soc/pxa/brownstone.c:67:10254: warning: passing argument 1 of '__div64_32' from incompatible pointer type [-Wincompatible-pointer-types]
The driver just divides two plain integer values, so it should not use do_div to start with, but has apparently done so ever since the code was first merged. This replaces do_div with a simple division operator.
---
I think this one is harmless, so we only need it in 4.5 to avoid the warning, but not backported to earlier kernels.
Found today on ARM allmodconfig
sound/soc/pxa/brownstone.c +1 -2
@@ -63,8 +63,7 @@ static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream, sysclk =params_rate (params) *512 ; sspa_mclk =params_rate (params) *64 ; } - sspa_div = freq_out; -do_div (sspa_div, sspa_mclk); + sspa_div = freq_out / sspa_mclk;snd_soc_dai_set_sysclk (cpu_dai,MMP_SSPA_CLK_AUDIO , freq_out,0 );snd_soc_dai_set_pll (cpu_dai,MMP_SYSCLK ,0 , freq_out, sysclk);
Mark Brown
maintainerApplied "ASoC: pxa: remove incorrect do_div() call" to the asoc tree
The patch
ASoC: pxa: remove incorrect do_div() call
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
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
Quoted 1 line
From
d1afdf34fc17bd2e1c96dc6196c562fa8906a026Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <[email protected]>
Date: Fri, 20 Nov 2015 10:32:44 +0100
Subject: [PATCH] ASoC: pxa: remove incorrect do_div() call
The new optimized do_div implementation (now in asm-generic/next) exposes a glitch in the brownstone audio driver by producing a compile-time warning:
sound/soc/pxa/brownstone.c: In function 'brownstone_wm8994_hw_params':sound/soc/pxa/brownstone.c:67:85: warning: comparison of distinct pointer types lacks a cast sound/soc/pxa/brownstone.c:67:10125: warning: right shift count >= width of type [-Wshift-count-overflow] sound/soc/pxa/brownstone.c:67:10254: warning: passing argument 1 of '__div64_32' from incompatible pointer type [-Wincompatible-pointer-types]
The driver just divides two plain integer values, so it should not use do_div to start with, but has apparently done so ever since the code was first merged. This replaces do_div with a simple division operator.
--- sound/soc/pxa/brownstone.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
sound/soc/pxa/brownstone.c +1 -2
@@ -63,8 +63,7 @@ static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream, sysclk =params_rate (params) *512 ; sspa_mclk =params_rate (params) *64 ; } - sspa_div = freq_out; -do_div (sspa_div, sspa_mclk); + sspa_div = freq_out / sspa_mclk;snd_soc_dai_set_sysclk (cpu_dai,MMP_SSPA_CLK_AUDIO , freq_out,0 );snd_soc_dai_set_pll (cpu_dai,MMP_SYSCLK ,0 , freq_out, sysclk);
Signature · 1 line
2.6.2
Quoted 26 lines · Arnd Bergmann
The new optimized
do_divimplementation (now in asm-generic/next) exposes a glitch in the brownstone audio driver by producing a compile-time warning:
sound/soc/pxa/brownstone.c: In function 'brownstone_wm8994_hw_params':sound/soc/pxa/brownstone.c:67:85: warning: comparison of distinct pointer types lacks a castsound/soc/pxa/brownstone.c:67:10125: warning: right shift count >= width of type [-Wshift-count-overflow]sound/soc/pxa/brownstone.c:67:10254: warning: passing argument 1 of '__div64_32' from incompatible pointer type [-Wincompatible-pointer-types]The driver just divides two plain integer values, so it should not use
do_divto start with, but has apparently done so ever since the code was first merged. This replacesdo_divwith a simple division operator.Signed-off-by Arnd Bergmann <[email protected]>---
I think this one is harmless, so we only need it in 4.5 to avoid the warning, but not backported to earlier kernels.Found today on ARM allmodconfig
sound/soc/pxa/brownstone.c +0
-0
sound/soc/pxa/brownstone.c static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream, · line 69
Quoted 9 lines
sound/soc/pxa/brownstone.c +1
-2@@ -63,8 +63,7 @@ static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream, sysclk =params_rate (params) *512 ; sspa_mclk =params_rate (params) *64 ; } - sspa_div = freq_out; -do_div (sspa_div, sspa_mclk); + sspa_div = freq_out / sspa_mclk;snd_soc_dai_set_sysclk (cpu_dai,MMP_SSPA_CLK_AUDIO , freq_out,0 );snd_soc_dai_set_pll (cpu_dai,MMP_SYSCLK ,0 , freq_out, sysclk);
Thanks Arnd.
Looks sspa_div is not used at all.
So we can remove sspa_div as well as do_div.
What do you think.
Thanks
Quoted 19 lines · On Monday 23 November 2015 16:10:49 zhangfei wrote:
Quoted 6 lines · Arnd Bergmann
sound/soc/pxa/brownstone.c +0
-0sound/soc/pxa/brownstone.c static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream, · line 69
Quoted 9 lines
sound/soc/pxa/brownstone.c +1
-2@@ -63,8 +63,7 @@ static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream, sysclk =params_rate (params) *512 ; sspa_mclk =params_rate (params) *64 ; } - sspa_div = freq_out; -do_div (sspa_div, sspa_mclk); + sspa_div = freq_out / sspa_mclk;snd_soc_dai_set_sysclk (cpu_dai,MMP_SSPA_CLK_AUDIO , freq_out,0 );snd_soc_dai_set_pll (cpu_dai,MMP_SYSCLK ,0 , freq_out, sysclk);Thanks Arnd.
Quoted 4 lines
Looks
sspa_divis not used at all.
So we can removesspa_divas well asdo_div.What do you think.
Good idea. I see that Mark has already applied the original patch, and with my new version, gcc should be smart enough to completely optimize out the division and the unused variable. This means the effect of the patch is very small, but if Mark wants it, he can apply the below.
Arnd
8<---
Subject: ASoC: remove unused variable
As pointed out by Zhangfei Gao, the sspa_div variable in brownstone_wm8994_hw_params() is completely unused, so as a cleanup following a prior patch, this removes both the variable and the division.
sound/soc/pxa/brownstone.c +0 -2
@@ -52,7 +52,6 @@ static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream,struct snd_soc_dai *codec_dai = rtd->codec_dai;struct snd_soc_dai *cpu_dai = rtd->cpu_dai;int freq_out, sspa_mclk, sysclk; -int sspa_div;if (params_rate (params) >11025 ) { freq_out =params_rate (params) *512 ;
@@ -63,7 +62,6 @@ static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream, sysclk =params_rate (params) *512 ; sspa_mclk =params_rate (params) *64 ; } - sspa_div = freq_out / sspa_mclk;snd_soc_dai_set_sysclk (cpu_dai,MMP_SSPA_CLK_AUDIO , freq_out,0 );snd_soc_dai_set_pll (cpu_dai,MMP_SYSCLK ,0 , freq_out, sysclk);
Mark Brown
maintainerApplied "ASoC: pxa: remove unused variable" to the asoc tree
The patch
ASoC: pxa: remove unused variable
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
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
Quoted 1 line
From
aa3e838869d494c437c693b54d12fe02b96a0aa1Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <[email protected]>
Date: Thu, 25 Feb 2016 23:02:04 +0100
Subject: [PATCH] ASoC: pxa: remove unused variable
As pointed out by Zhangfei Gao, the sspa_div variable in brownstone_wm8994_hw_params() is completely unused, so as a cleanup following a prior patch, this removes both the variable and the division.
--- sound/soc/pxa/brownstone.c | 2 -- 1 file changed, 2 deletions(-)
sound/soc/pxa/brownstone.c +0 -2
@@ -52,7 +52,6 @@ static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream,struct snd_soc_dai *codec_dai = rtd->codec_dai;struct snd_soc_dai *cpu_dai = rtd->cpu_dai;int freq_out, sspa_mclk, sysclk; -int sspa_div;if (params_rate (params) >11025 ) { freq_out =params_rate (params) *512 ;
@@ -63,7 +62,6 @@ static int brownstone_wm8994_hw_params(struct snd_pcm_substream *substream, sysclk =params_rate (params) *512 ; sspa_mclk =params_rate (params) *64 ; } - sspa_div = freq_out / sspa_mclk;snd_soc_dai_set_sysclk (cpu_dai,MMP_SSPA_CLK_AUDIO , freq_out,0 );snd_soc_dai_set_pll (cpu_dai,MMP_SYSCLK ,0 , freq_out, sysclk);
Signature · 1 line
2.7.0