I have now added these to tegra_machine_driver_mobile.c and the error has been resolved.
static int tegra_machine_wm8904_init(struct snd_soc_pcm_runtime *rtd)
{
struct device *dev = rtd->card->dev;
int err;
err = snd_soc_dai_set_sysclk(rtd->codec_dai, WM8904_CLK_MCLK, 12288000,
SND_SOC_CLOCK_IN);
if (err) {
dev_err(dev, “failed to wm8904 sysclk!\n”);
return err;
}
return 0;
}
static int codec_init(struct tegra_machine *machine)
{
struct snd_soc_dai_link *dai_links = machine->asoc->dai_links;
unsigned int num_links = machine->asoc->num_links, i;
if (!dai_links || !num_links)
return -EINVAL;
for (i = 0; i < num_links; i++) {
if (!dai_links[i].name)
continue;
if (strstr(dai_links[i].name, “rt565x-playback”) ||
strstr(dai_links[i].name, “rt565x-codec-sysclk-bclk1”))
dai_links[i].init = tegra_machine_rt565x_init;
else if (strstr(dai_links[i].name, “fe-pi-audio-z-v2”))
dai_links[i].init = tegra_machine_fepi_init;
else if (strstr(dai_links[i].name, “respeaker-4-mic-array”))
dai_links[i].init = tegra_machine_respeaker_init;
else if (strstr(dai_links[i].name, “wm8904-playback”))
dai_links[i].init = tegra_machine_wm8904_init;
}
return 0;
}
But now there is a new error in dmesg
[ 55.905952] wm8904 7-001a: DC servo timed out
[ 62.065945] wm8904 7-001a: DC servo timed out
[ 68.233955] wm8904 7-001a: DC servo timed out
[ 76.721952] wm8904 7-001a: DC servo timed out
Here is the complete log
dmesg.txt (53.2 KB)