Hello,
I wrote ASoC driver with interacts with WM8750 codec chip. It does not work, no sound at all. Some codec registers are not programmed right, and the check_power callback (in soc-dapm.c) always return 0. I think the problem may not be in the driver, instead, amixer should be used to select the codec mixer settings to build a complete audio path (like the LEFT MIXER in wm8750). I have following questions:
1. Is my understanding correct? amixer has to be used before aplay?
2. Is there way to do it in the code instead of using amixer?
3. If amixer has to be used, where I can find sample wm8750 amixer setting usage for a simple playback from I2S in to Lout1 & Rout1 out?
Here's the simple code in my driver, just FYI: static const struct snd_soc_dapm_widget wm8750_dapm_widgets[] = { SND_SOC_DAPM_SPK("Ext Speaker", NULL), }; static const struct snd_soc_dapm_route wm8750_audio_map[] = { { "Ext Speaker", NULL, "LOUT1" }, { "Ext Speaker", NULL, "ROUT1" }, }; ... (in dai_link init function): err = snd_soc_dapm_new_controls(codec, wm8750_dapm_widgets, ARRAY_SIZE(wm8750_dapm_widgets)); ... snd_soc_dapm_add_routes(codec, wm8750_audio_map, ARRAY_SIZE(wm8750_audio_map)); snd_soc_dapm_sync(codec); ... (in snd_soc_ops startup function): snd_soc_dapm_enable_pin(codec, "Ext Speaker");
Thanks, Feng