mirror of https://gitee.com/openkylin/linux.git
ASoC: fix regwmask
If regwshift is 32 and the selected architecture compiles '<<' operator for signed int literal into rotating shift, '1<<regwshift' became 1 and it makes regwmask to 0x0. The literal is set to unsigned long to get intended regwmask. Signed-off-by: Gyeongtaek Lee <gt82.lee@samsung.com> Link: https://lore.kernel.org/r/001001d60665$db7af3e0$9270dba0$@samsung.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
a91ab6509c
commit
0ab070917a
|
@ -825,7 +825,7 @@ int snd_soc_get_xr_sx(struct snd_kcontrol *kcontrol,
|
||||||
unsigned int regbase = mc->regbase;
|
unsigned int regbase = mc->regbase;
|
||||||
unsigned int regcount = mc->regcount;
|
unsigned int regcount = mc->regcount;
|
||||||
unsigned int regwshift = component->val_bytes * BITS_PER_BYTE;
|
unsigned int regwshift = component->val_bytes * BITS_PER_BYTE;
|
||||||
unsigned int regwmask = (1<<regwshift)-1;
|
unsigned int regwmask = (1UL<<regwshift)-1;
|
||||||
unsigned int invert = mc->invert;
|
unsigned int invert = mc->invert;
|
||||||
unsigned long mask = (1UL<<mc->nbits)-1;
|
unsigned long mask = (1UL<<mc->nbits)-1;
|
||||||
long min = mc->min;
|
long min = mc->min;
|
||||||
|
@ -874,7 +874,7 @@ int snd_soc_put_xr_sx(struct snd_kcontrol *kcontrol,
|
||||||
unsigned int regbase = mc->regbase;
|
unsigned int regbase = mc->regbase;
|
||||||
unsigned int regcount = mc->regcount;
|
unsigned int regcount = mc->regcount;
|
||||||
unsigned int regwshift = component->val_bytes * BITS_PER_BYTE;
|
unsigned int regwshift = component->val_bytes * BITS_PER_BYTE;
|
||||||
unsigned int regwmask = (1<<regwshift)-1;
|
unsigned int regwmask = (1UL<<regwshift)-1;
|
||||||
unsigned int invert = mc->invert;
|
unsigned int invert = mc->invert;
|
||||||
unsigned long mask = (1UL<<mc->nbits)-1;
|
unsigned long mask = (1UL<<mc->nbits)-1;
|
||||||
long max = mc->max;
|
long max = mc->max;
|
||||||
|
|
Loading…
Reference in New Issue