static int imx_ssi_probe(struct device *dev) { struct snd_soc_dai *dai = to_snd_soc_dai(dev); if (!strcmp(imx_ssi_1, dai->name)) dai->id = IMX_DAI_SSI0; else if (!strcmp(imx_ssi_2, dai->name)) dai->id = IMX_DAI_SSI1; else if (!strcmp(imx_ssi_3, dai->name)) dai->id = IMX_DAI_SSI2; else if (!strcmp(imx_ssi_4, dai->name)) dai->id = IMX_DAI_SSI3; else { printk(KERN_ERR "%s: invalid device %s\n", __func__, dai->name); return -ENODEV; } dai->type = SND_SOC_DAI_PCM; dai->ops = &imx_ssi_dai_ops; dai->audio_ops = &imx_ssi_audio_ops; dai->capture = &imx_ssi_capture; dai->playback = &imx_ssi_playback; snd_soc_register_cpu_dai(dai); if ((!strcmp(imx_ssi_1, dai->name)) || (!strcmp(imx_ssi_2, dai->name))) if (request_irq(MXC_INT_SSI1, ssi1_irq, 0, "ssi1", dai)) { printk(KERN_ERR "%s: failure requesting irq %s\n", __func__, "ssi1"); return -EBUSY; } return 0; }
static int imx_ssi_resume(struct device *dev) { struct snd_soc_dai *dai = to_snd_soc_dai(dev); if (!dai->active) return 0; // do we need to enable any clocks return 0; }
static int imx_ssi_suspend(struct device *dev, pm_message_t state) { struct snd_soc_dai *dai = to_snd_soc_dai(dev); if (!dai->active) return 0; // do we need to disable any clocks return 0; }
static int wm8350_hifi_dai_probe(struct device *dev) { struct snd_soc_dai *dai = to_snd_soc_dai(dev); dai->ops = &wm8350_hifi_dai_ops; dai->audio_ops = &wm8350_hifi_dai_audio_ops; dai->capture = &wm8350_hifi_dai_capture; dai->playback = &wm8350_hifi_dai_playback; snd_soc_register_codec_dai(dai); return 0; }
static int imx_ssi_remove(struct device *dev) { struct snd_soc_dai *dai = to_snd_soc_dai(dev); if ((!strcmp(imx_ssi_1, dai->name)) || (!strcmp(imx_ssi_2, dai->name))) { free_irq(MXC_INT_SSI1, dai); } if ((!strcmp(imx_ssi_3, dai->name)) || (!strcmp(imx_ssi_4, dai->name))) { free_irq(MXC_INT_SSI2, dai); } return 0; }