Clocking and formatting considerations
Before delving deeper into this section, let's spend some time on the snd_soc_dai_link->ops field. This field is of type struct snd_soc_ops, defined as follows:
struct snd_soc_ops {
int (*startup)(struct snd_pcm_substream *);
void (*shutdown)(struct snd_pcm_substream *);
int (*hw_params)(struct snd_pcm_substream *,
struct snd_pcm_hw_params *);
int (*hw_free)(struct snd_pcm_substream *);
int (*prepare)(struct snd_pcm_substream *);
int (*trigger)(struct snd_pcm_substream *, int);
};
These callback fields in this structure should remind you of those defined in the snd_soc_dai_driver->ops field, which is of type struct snd_soc_dai_ops. From within the DAI link, these...