All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tim Gardner <tim.gardner@canonical.com>
To: Lars-Peter Clausen <lars@metafoo.de>
Cc: linux-kernel@vger.kernel.org, Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.de>,
	device-drivers-devel@blackfin.uclinux.org,
	alsa-devel@alsa-project.org
Subject: Re: [PATCH] ASoC: adau1373: adau1373_hw_params: Silence overflow warning
Date: Mon, 11 Mar 2013 09:37:57 -0600	[thread overview]
Message-ID: <513DFA55.2050104@canonical.com> (raw)
In-Reply-To: <513DAB80.1020900@metafoo.de>

On 03/11/2013 04:01 AM, Lars-Peter Clausen wrote:
> On 03/10/2013 06:34 PM, Tim Gardner wrote:
>> ADAU1373_BCLKDIV_SOURCE is defined as BIT(5) which uses UL constants. On
>> amd64 the result of the ones complement operator is then truncated to
>> unsigned int according to the prototype of snd_soc_update_bits(). I think
>> gcc is correctly warning that the upper 32 bits are lost.
>>
>> sound/soc/codecs/adau1373.c: In function 'adau1373_hw_params':
>> sound/soc/codecs/adau1373.c:940:3: warning: large integer implicitly truncated to unsigned type [-Woverflow]
>>
>> gcc version 4.6.3
>>
>> Cc: Lars-Peter Clausen <lars@metafoo.de>
>> Cc: Liam Girdwood <lgirdwood@gmail.com>
>> Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
>> Cc: Jaroslav Kysela <perex@perex.cz>
>> Cc: Takashi Iwai <tiwai@suse.de>
>> Cc: device-drivers-devel@blackfin.uclinux.org
>> Cc: alsa-devel@alsa-project.org
>> Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
>> ---
>>  sound/soc/codecs/adau1373.c |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/sound/soc/codecs/adau1373.c b/sound/soc/codecs/adau1373.c
>> index 068b3ae..56ed788 100644
>> --- a/sound/soc/codecs/adau1373.c
>> +++ b/sound/soc/codecs/adau1373.c
>> @@ -132,7 +132,7 @@ struct adau1373 {
>>  #define ADAU1373_DAI_FORMAT_I2S		0x2
>>  #define ADAU1373_DAI_FORMAT_DSP		0x3
>>  
>> -#define ADAU1373_BCLKDIV_SOURCE		BIT(5)
>> +#define ADAU1373_BCLKDIV_SOURCE		(unsigned int)BIT(5)
> 
> Hm, that's a bit ugly. How about the following instead:
> 
> diff --git a/sound/soc/codecs/adau1373.c b/sound/soc/codecs/adau1373.c
> index 068b3ae..1aa10dd 100644
> --- a/sound/soc/codecs/adau1373.c
> +++ b/sound/soc/codecs/adau1373.c
> @@ -133,6 +133,8 @@ struct adau1373 {
>  #define ADAU1373_DAI_FORMAT_DSP		0x3
> 
>  #define ADAU1373_BCLKDIV_SOURCE		BIT(5)
> +#define ADAU1373_BCLKDIV_SR_MASK	(0x07 << 2)
> +#define ADAU1373_BCLKDIV_BCLK_MASK	0x03
>  #define ADAU1373_BCLKDIV_32		0x03
>  #define ADAU1373_BCLKDIV_64		0x02
>  #define ADAU1373_BCLKDIV_128		0x01
> @@ -937,7 +939,8 @@ static int adau1373_hw_params(struct snd_pcm_substream
> *substream,
>  	adau1373_dai->enable_src = (div != 0);
> 
>  	snd_soc_update_bits(codec, ADAU1373_BCLKDIV(dai->id),
> -		~ADAU1373_BCLKDIV_SOURCE, (div << 2) | ADAU1373_BCLKDIV_64);
> +		ADAU1373_BCLKDIV_SR_MASK | ADAU1373_BCLKDIV_BCLK_MASK,
> +		(div << 2) | ADAU1373_BCLKDIV_64);
> 
>  	switch (params_format(params)) {
>  	case SNDRV_PCM_FORMAT_S16_LE:
> 
> 

That seems way more complicated then need be. It also uses 2 bits in the
mask whereas the original code only used 1, e.g., bit 5. Is that correct ?

How about just open coding the macro thusly:

#define ADAU1373_BCLKDIV_SOURCE (1<<5) /*BIT(5)*/

rtg
-- 
Tim Gardner tim.gardner@canonical.com

  reply	other threads:[~2013-03-11 15:37 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-10 17:34 [PATCH] ASoC: adau1373: adau1373_hw_params: Silence overflow warning Tim Gardner
2013-03-11 10:01 ` Lars-Peter Clausen
2013-03-11 15:37   ` Tim Gardner [this message]
2013-03-11 18:55     ` Lars-Peter Clausen
2013-03-11 19:18       ` [PATCH linux-next v2] " Tim Gardner
2013-03-11 19:26         ` Lars-Peter Clausen
2013-03-12 18:47         ` Mark Brown
2013-03-12 18:47           ` Mark Brown
2013-03-12 19:17           ` Tim Gardner
2013-03-12 19:39             ` Mark Brown
2013-03-12 19:39               ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=513DFA55.2050104@canonical.com \
    --to=tim.gardner@canonical.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=device-drivers-devel@blackfin.uclinux.org \
    --cc=lars@metafoo.de \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.