Skip to content

Commit

Permalink
ASoC: Add helper function to check whether a CODEC is active
Browse files Browse the repository at this point in the history
Instead of directly checking the 'active' field of the CODEC struct add a new
helper function that will return either true or false depending on whether the
CODEC is active. This will make the migration to the component level easier.

The patch also updates all CODEC drivers that check the active attribute to use
the new helper function.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
  • Loading branch information
Lars-Peter Clausen authored and Mark Brown committed Mar 6, 2014
1 parent a1a0cc0 commit 5c898e7
Show file tree
Hide file tree
Showing 8 changed files with 14 additions and 9 deletions.
5 changes: 5 additions & 0 deletions include/sound/soc.h
Original file line number Diff line number Diff line change
Expand Up @@ -1172,6 +1172,11 @@ static inline bool snd_soc_volsw_is_stereo(struct soc_mixer_control *mc)
return 1;
}

static inline bool snd_soc_codec_is_active(struct snd_soc_codec *codec)
{
return codec->active != 0;
}

int snd_soc_util_init(void);
void snd_soc_util_exit(void);

Expand Down
4 changes: 2 additions & 2 deletions sound/soc/codecs/adav80x.c
Original file line number Diff line number Diff line change
Expand Up @@ -722,7 +722,7 @@ static int adav80x_dai_startup(struct snd_pcm_substream *substream,
struct snd_soc_codec *codec = dai->codec;
struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec);

if (!codec->active || !adav80x->rate)
if (!snd_soc_codec_is_active(codec) || !adav80x->rate)
return 0;

return snd_pcm_hw_constraint_minmax(substream->runtime,
Expand All @@ -735,7 +735,7 @@ static void adav80x_dai_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_codec *codec = dai->codec;
struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec);

if (!codec->active)
if (!snd_soc_codec_is_active(codec))
adav80x->rate = 0;
}

Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/tlv320aic23.c
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ static void tlv320aic23_shutdown(struct snd_pcm_substream *substream,
struct aic23 *aic23 = snd_soc_codec_get_drvdata(codec);

/* deactivate */
if (!codec->active) {
if (!snd_soc_codec_is_active(codec)) {
udelay(50);
snd_soc_write(codec, TLV320AIC23_ACTIVE, 0x0);
}
Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/tlv320dac33.c
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ static int dac33_set_fifo_mode(struct snd_kcontrol *kcontrol,
if (dac33->fifo_mode == ucontrol->value.integer.value[0])
return 0;
/* Do not allow changes while stream is running*/
if (codec->active)
if (snd_soc_codec_is_active(codec))
return -EPERM;

if (ucontrol->value.integer.value[0] < 0 ||
Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/uda1380.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ static int uda1380_write(struct snd_soc_codec *codec, unsigned int reg,
/* the interpolator & decimator regs must only be written when the
* codec DAI is active.
*/
if (!codec->active && (reg >= UDA1380_MVOL))
if (!snd_soc_codec_is_active(codec) && (reg >= UDA1380_MVOL))
return 0;
pr_debug("uda1380: hw write %x val %x\n", reg, value);
if (codec->hw_write(codec->control_data, data, 3) == 3) {
Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/wl1273.c
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ static int snd_wl1273_set_audio_route(struct snd_kcontrol *kcontrol,
return 0;

/* Do not allow changes while stream is running */
if (codec->active)
if (snd_soc_codec_is_active(codec))
return -EPERM;

if (ucontrol->value.integer.value[0] < 0 ||
Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/wm8711.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ static void wm8711_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_codec *codec = dai->codec;

/* deactivate */
if (!codec->active) {
if (!snd_soc_codec_is_active(codec)) {
udelay(50);
snd_soc_write(codec, WM8711_ACTIVE, 0x0);
}
Expand Down
4 changes: 2 additions & 2 deletions sound/soc/codecs/wm8753.c
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ static int wm8753_set_dai(struct snd_kcontrol *kcontrol,
if (wm8753->dai_func == ucontrol->value.integer.value[0])
return 0;

if (codec->active)
if (snd_soc_codec_is_active(codec))
return -EBUSY;

ioctl = snd_soc_read(codec, WM8753_IOCTL);
Expand Down Expand Up @@ -1314,7 +1314,7 @@ static int wm8753_mute(struct snd_soc_dai *dai, int mute)
/* the digital mute covers the HiFi and Voice DAC's on the WM8753.
* make sure we check if they are not both active when we mute */
if (mute && wm8753->dai_func == 1) {
if (!codec->active)
if (!snd_soc_codec_is_active(codec))
snd_soc_write(codec, WM8753_DAC, mute_reg | 0x8);
} else {
if (mute)
Expand Down

0 comments on commit 5c898e7

Please sign in to comment.