mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
ASoC: tegra: fix uninitialized variables in set_fmt
In tegra*_i2s_set_fmt(), in the (fmt == SND_SOC_DAIFMT_CBM_CFM) case,
"val" is never assigned to, but left uninitialized. The other case does
initialized it. Fix this by initializing val at the start of the
function, and only ever ORing into it.
Update the handling of "mask" so it works the same way for consistency.
Update tegra20_spdif.c to use the same code-style for consistency, even
though it doesn't happen to suffer from the same problem at present.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Fixes: 0f163546a7
("ASoC: tegra: use regmap more directly")
Cc: <stable@vger.kernel.org>
This commit is contained in:
parent
6ce4eac1f6
commit
241bf43321
@ -74,7 +74,7 @@ static int tegra20_i2s_set_fmt(struct snd_soc_dai *dai,
|
||||
unsigned int fmt)
|
||||
{
|
||||
struct tegra20_i2s *i2s = snd_soc_dai_get_drvdata(dai);
|
||||
unsigned int mask, val;
|
||||
unsigned int mask = 0, val = 0;
|
||||
|
||||
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
|
||||
case SND_SOC_DAIFMT_NB_NF:
|
||||
@ -83,10 +83,10 @@ static int tegra20_i2s_set_fmt(struct snd_soc_dai *dai,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mask = TEGRA20_I2S_CTRL_MASTER_ENABLE;
|
||||
mask |= TEGRA20_I2S_CTRL_MASTER_ENABLE;
|
||||
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
|
||||
case SND_SOC_DAIFMT_CBS_CFS:
|
||||
val = TEGRA20_I2S_CTRL_MASTER_ENABLE;
|
||||
val |= TEGRA20_I2S_CTRL_MASTER_ENABLE;
|
||||
break;
|
||||
case SND_SOC_DAIFMT_CBM_CFM:
|
||||
break;
|
||||
|
@ -67,15 +67,15 @@ static int tegra20_spdif_hw_params(struct snd_pcm_substream *substream,
|
||||
{
|
||||
struct device *dev = dai->dev;
|
||||
struct tegra20_spdif *spdif = snd_soc_dai_get_drvdata(dai);
|
||||
unsigned int mask, val;
|
||||
unsigned int mask = 0, val = 0;
|
||||
int ret, spdifclock;
|
||||
|
||||
mask = TEGRA20_SPDIF_CTRL_PACK |
|
||||
TEGRA20_SPDIF_CTRL_BIT_MODE_MASK;
|
||||
mask |= TEGRA20_SPDIF_CTRL_PACK |
|
||||
TEGRA20_SPDIF_CTRL_BIT_MODE_MASK;
|
||||
switch (params_format(params)) {
|
||||
case SNDRV_PCM_FORMAT_S16_LE:
|
||||
val = TEGRA20_SPDIF_CTRL_PACK |
|
||||
TEGRA20_SPDIF_CTRL_BIT_MODE_16BIT;
|
||||
val |= TEGRA20_SPDIF_CTRL_PACK |
|
||||
TEGRA20_SPDIF_CTRL_BIT_MODE_16BIT;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
@ -118,7 +118,7 @@ static int tegra30_i2s_set_fmt(struct snd_soc_dai *dai,
|
||||
unsigned int fmt)
|
||||
{
|
||||
struct tegra30_i2s *i2s = snd_soc_dai_get_drvdata(dai);
|
||||
unsigned int mask, val;
|
||||
unsigned int mask = 0, val = 0;
|
||||
|
||||
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
|
||||
case SND_SOC_DAIFMT_NB_NF:
|
||||
@ -127,10 +127,10 @@ static int tegra30_i2s_set_fmt(struct snd_soc_dai *dai,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mask = TEGRA30_I2S_CTRL_MASTER_ENABLE;
|
||||
mask |= TEGRA30_I2S_CTRL_MASTER_ENABLE;
|
||||
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
|
||||
case SND_SOC_DAIFMT_CBS_CFS:
|
||||
val = TEGRA30_I2S_CTRL_MASTER_ENABLE;
|
||||
val |= TEGRA30_I2S_CTRL_MASTER_ENABLE;
|
||||
break;
|
||||
case SND_SOC_DAIFMT_CBM_CFM:
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user