ovl: create ovl_need_index() helper
[linux/fpc-iii.git] / Documentation / sound / soc / platform.rst
blobd5574904d981d59e1b2a23afbfcc71262f50edbe
1 ====================
2 ASoC Platform Driver
3 ====================
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.
9 Audio DMA
10 =========
12 The platform DMA driver optionally supports the following ALSA operations:-
15   /* SoC audio ops */
16   struct snd_soc_ops {
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);
23   };
25 The platform driver exports its DMA functionality via struct
26 snd_soc_platform_driver:-
29   struct snd_soc_platform_driver {
30         char *name;
32         int (*probe)(struct platform_device *pdev);
33         int (*remove)(struct platform_device *pdev);
34         int (*suspend)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai);
35         int (*resume)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai);
37         /* pcm creation and destruction */
38         int (*pcm_new)(struct snd_card *, struct snd_soc_codec_dai *, struct snd_pcm *);
39         void (*pcm_free)(struct snd_pcm *);
41         /*
42          * For platform caused delay reporting.
43          * Optional.
44          */
45         snd_pcm_sframes_t (*delay)(struct snd_pcm_substream *,
46                 struct snd_soc_dai *);
48         /* platform stream ops */
49         struct snd_pcm_ops *pcm_ops;
50   };
52 Please refer to the ALSA driver documentation for details of audio DMA.
53 http://www.alsa-project.org/~iwai/writing-an-alsa-driver/
55 An example DMA driver is soc/pxa/pxa2xx-pcm.c
58 SoC DAI Drivers
59 ===============
61 Each SoC DAI driver must provide the following features:-
63 1. Digital audio interface (DAI) description
64 2. Digital audio interface configuration
65 3. PCM's description
66 4. SYSCLK configuration
67 5. Suspend and resume (optional)
69 Please see codec.txt for a description of items 1 - 4.
72 SoC DSP Drivers
73 ===============
75 Each SoC DSP driver usually supplies the following features :-
77 1. DAPM graph
78 2. Mixer controls
79 3. DMA IO to/from DSP buffers (if applicable)
80 4. Definition of DSP front end (FE) PCM devices.
82 Please see DPCM.txt for a description of item 4.