]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - Documentation/sound/soc/platform.rst
Merge tag 'dmaengine-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul...
[mirror_ubuntu-jammy-kernel.git] / Documentation / sound / soc / platform.rst
CommitLineData
d8a5d624 1====================
eb1a6af3
LG
2ASoC Platform Driver
3====================
4
3eb01283
LG
5An ASoC platform driver class can be divided into audio DMA drivers, SoC DAI
6drivers and DSP drivers. The platform drivers only target the SoC CPU and must
7have no board specific code.
eb1a6af3
LG
8
9Audio DMA
10=========
11
7c4dbbd8 12The platform DMA driver optionally supports the following ALSA operations:-
d8a5d624 13::
eb1a6af3 14
d8a5d624
TI
15 /* SoC audio ops */
16 struct snd_soc_ops {
5b78efd2
TI
17 int (*startup)(struct snd_pcm_substream *);
18 void (*shutdown)(struct snd_pcm_substream *);
19 int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *);
20 int (*hw_free)(struct snd_pcm_substream *);
21 int (*prepare)(struct snd_pcm_substream *);
22 int (*trigger)(struct snd_pcm_substream *, int);
d8a5d624 23 };
eb1a6af3 24
379c4bf1 25The platform driver exports its DMA functionality via struct
d9f29e9e 26snd_soc_component_driver:-
d8a5d624 27::
eb1a6af3 28
d9f29e9e
KM
29 struct snd_soc_component_driver {
30 const char *name;
eb1a6af3 31
d9f29e9e
KM
32 ...
33 int (*probe)(struct snd_soc_component *);
34 void (*remove)(struct snd_soc_component *);
35 int (*suspend)(struct snd_soc_component *);
36 int (*resume)(struct snd_soc_component *);
eb1a6af3
LG
37
38 /* pcm creation and destruction */
d9f29e9e 39 int (*pcm_new)(struct snd_soc_pcm_runtime *);
5b78efd2 40 void (*pcm_free)(struct snd_pcm *);
eb1a6af3 41
d9f29e9e
KM
42 ...
43 const struct snd_pcm_ops *ops;
44 const struct snd_compr_ops *compr_ops;
45 ...
d8a5d624 46 };
eb1a6af3 47
7c4dbbd8 48Please refer to the ALSA driver documentation for details of audio DMA.
0ea6e611 49http://www.alsa-project.org/~iwai/writing-an-alsa-driver/
eb1a6af3
LG
50
51An example DMA driver is soc/pxa/pxa2xx-pcm.c
52
53
54SoC DAI Drivers
55===============
56
57Each SoC DAI driver must provide the following features:-
58
d8a5d624
TI
591. Digital audio interface (DAI) description
602. Digital audio interface configuration
613. PCM's description
624. SYSCLK configuration
635. Suspend and resume (optional)
eb1a6af3 64
9225e4e0 65Please see codec.rst for a description of items 1 - 4.
3eb01283
LG
66
67
68SoC DSP Drivers
69===============
70
71Each SoC DSP driver usually supplies the following features :-
72
d8a5d624
TI
731. DAPM graph
742. Mixer controls
753. DMA IO to/from DSP buffers (if applicable)
764. Definition of DSP front end (FE) PCM devices.
3eb01283
LG
77
78Please see DPCM.txt for a description of item 4.