Liam,
Shutdown() vectors is missing in ASoC, we need this to ensure proper shutdown of the system.
* codec device */ struct snd_soc_codec_device { int (*probe)(struct platform_device *pdev); int (*remove)(struct platform_device *pdev); int (*suspend)(struct platform_device *pdev, pm_message_t state); int (*resume)(struct platform_device *pdev); };
/* SoC CPU DAI */ struct snd_soc_cpu_dai {
/* DAI description */ char *name; unsigned int id; unsigned char type;
/* DAI callbacks */ int (*probe)(struct platform_device *pdev); void (*remove)(struct platform_device *pdev); int (*suspend)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai); int (*resume)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai); unsigned int (*config_sysclk)(struct snd_soc_cpu_dai *cpu_dai, struct snd_soc_clock_info *info, unsigned int clk);
/* DAI capabilities */ struct snd_soc_pcm_stream capture; struct snd_soc_pcm_stream playback; struct snd_soc_dai_cap caps;
/* SoC platform interface */ struct snd_soc_platform { char *name;
int (*probe)(struct platform_device *pdev); int (*remove)(struct platform_device *pdev); int (*suspend)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai); int (*resume)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai);
/* pcm creation and destruction */
/* SoC machine */ struct snd_soc_machine { char *name;
int (*probe)(struct platform_device *pdev); int (*remove)(struct platform_device *pdev);
/* the pre and post PM functions are used to do any PM work before and * after the codec and DAI's do any PM work. */ int (*suspend_pre)(struct platform_device *pdev, pm_message_t state); int (*suspend_post)(struct platform_device *pdev, pm_message_t state); int (*resume_pre)(struct platform_device *pdev); int (*resume_post)(struct platform_device *pdev);
Nobin Mathew