Commit | Line | Data |
---|---|---|
d8a5d624 | 1 | ==================== |
eb1a6af3 LG |
2 | ASoC Platform Driver |
3 | ==================== | |
4 | ||
3eb01283 LG |
5 | An ASoC platform driver class can be divided into audio DMA drivers, SoC DAI |
6 | drivers and DSP drivers. The platform drivers only target the SoC CPU and must | |
7 | have no board specific code. | |
eb1a6af3 LG |
8 | |
9 | Audio DMA | |
10 | ========= | |
11 | ||
7c4dbbd8 | 12 | The 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 | 25 | The platform driver exports its DMA functionality via struct |
d9f29e9e | 26 | snd_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 | 48 | Please refer to the ALSA driver documentation for details of audio DMA. |
0ea6e611 | 49 | http://www.alsa-project.org/~iwai/writing-an-alsa-driver/ |
eb1a6af3 LG |
50 | |
51 | An example DMA driver is soc/pxa/pxa2xx-pcm.c | |
52 | ||
53 | ||
54 | SoC DAI Drivers | |
55 | =============== | |
56 | ||
57 | Each SoC DAI driver must provide the following features:- | |
58 | ||
d8a5d624 TI |
59 | 1. Digital audio interface (DAI) description |
60 | 2. Digital audio interface configuration | |
61 | 3. PCM's description | |
62 | 4. SYSCLK configuration | |
63 | 5. Suspend and resume (optional) | |
eb1a6af3 | 64 | |
9225e4e0 | 65 | Please see codec.rst for a description of items 1 - 4. |
3eb01283 LG |
66 | |
67 | ||
68 | SoC DSP Drivers | |
69 | =============== | |
70 | ||
71 | Each SoC DSP driver usually supplies the following features :- | |
72 | ||
d8a5d624 TI |
73 | 1. DAPM graph |
74 | 2. Mixer controls | |
75 | 3. DMA IO to/from DSP buffers (if applicable) | |
76 | 4. Definition of DSP front end (FE) PCM devices. | |
3eb01283 LG |
77 | |
78 | Please see DPCM.txt for a description of item 4. |