-static int sii902x_audio_digital_mute(struct device *dev, - void *data, bool enable) +static int sii902x_audio_mute(struct device *dev, void *data, + bool enable, int direction) { struct sii902x *sii902x = dev_get_drvdata(dev);
+ if (direction != SNDRV_PCM_STREAM_PLAYBACK) + return 0; +
Thanks for this clean-up Morimoto-san. One question: in all the codec changes the return is now 0. But in the previous implementation based on digital_mute, when the wrong direction was used it would have been -ENOTSUPP. int snd_soc_dai_digital_mute(struct snd_soc_dai *dai, int mute, int direction) { int ret = -ENOTSUPP; if (dai->driver->ops && dai->driver->ops->mute_stream) ret = dai->driver->ops->mute_stream(dai, mute, direction); else if (direction == SNDRV_PCM_STREAM_PLAYBACK && dai->driver->ops && dai->driver->ops->digital_mute) ret = dai->driver->ops->digital_mute(dai, mute); <<< none of the branches taken for capture + digital_mute supported, so return -ENOTSUPP. return soc_dai_ret(dai, ret); } Was this change intentional? We also want to check why this return value is only tested in soc-dapm.c, if this digital_mute can fail then we are missing tests left and right - maybe that's a follow-up change?