On Tue, Oct 18, 2016 at 06:15:28AM +1100, Matt Flax wrote:
On 17/10/16 21:59, Charles Keepax wrote:
On Mon, Oct 17, 2016 at 09:46:20PM +1100, Matt Flax wrote:
On 17/10/16 21:37, Charles Keepax wrote:
On Mon, Oct 17, 2016 at 09:42:18AM +1100, Matt Flax wrote:
<snip>
I didn't understand your first suggestion, can you give an example of how to do that in the startup callback ? Sounds like a good idea.
If you look in arizona_startup in sound/soc/codecs/arizona.c we specify constraints for the sample rates based off our clocking, there is an equivalent SNDRV_PCM_HW_PARAM_CHANNELS that you should be able to you to specify the supported channels with.
OK - started on this ... however I get the following problem when trying to set the stream name : [ 6.331002] wm8580 1-001a: ASoC: error - multiple DAI 1-001a registered with no name
I think this is happening in i2c probe. I was wanting to set the stream name dynamically to match the codec model number. I was planning to do the following : static int wm8580_playback_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { struct snd_soc_codec *codec = dai->codec; struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
strncpy(substream->name, wm8580->drvdata->name_playback,
sizeof(wm8580->drvdata->name_playback) - 1);
return snd_pcm_hw_constraint_single(substream->runtime, SNDRV_PCM_HW_PARAM_CHANNELS, wm8580->drvdata->num_dacs * 2);
}
Do you think perhaps I should set a new name in the snd_soc_dai_driver to the following : .name = "wm858x-hifi-playback", .name = "wm858x-hifi-capture",
I don't think you need to bother setting the DAI name to match the CODEC, I am happy with a generic name.
Thanks, Charles