1 ==================== 1 ==================== 2 ASoC Platform Driver 2 ASoC Platform Driver 3 ==================== 3 ==================== 4 4 5 An ASoC platform driver class can be divided i 5 An ASoC platform driver class can be divided into audio DMA drivers, SoC DAI 6 drivers and DSP drivers. The platform drivers 6 drivers and DSP drivers. The platform drivers only target the SoC CPU and must 7 have no board specific code. 7 have no board specific code. 8 8 9 Audio DMA 9 Audio DMA 10 ========= 10 ========= 11 11 12 The platform DMA driver optionally supports th 12 The platform DMA driver optionally supports the following ALSA operations:- 13 :: 13 :: 14 14 15 /* SoC audio ops */ 15 /* SoC audio ops */ 16 struct snd_soc_ops { 16 struct snd_soc_ops { 17 int (*startup)(struct snd_pcm_substrea 17 int (*startup)(struct snd_pcm_substream *); 18 void (*shutdown)(struct snd_pcm_substr 18 void (*shutdown)(struct snd_pcm_substream *); 19 int (*hw_params)(struct snd_pcm_substr 19 int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *); 20 int (*hw_free)(struct snd_pcm_substrea 20 int (*hw_free)(struct snd_pcm_substream *); 21 int (*prepare)(struct snd_pcm_substrea 21 int (*prepare)(struct snd_pcm_substream *); 22 int (*trigger)(struct snd_pcm_substrea 22 int (*trigger)(struct snd_pcm_substream *, int); 23 }; 23 }; 24 24 25 The platform driver exports its DMA functional 25 The platform driver exports its DMA functionality via struct 26 snd_soc_component_driver:- 26 snd_soc_component_driver:- 27 :: 27 :: 28 28 29 struct snd_soc_component_driver { 29 struct snd_soc_component_driver { 30 const char *name; 30 const char *name; 31 31 32 ... 32 ... 33 int (*probe)(struct snd_soc_component 33 int (*probe)(struct snd_soc_component *); 34 void (*remove)(struct snd_soc_componen 34 void (*remove)(struct snd_soc_component *); 35 int (*suspend)(struct snd_soc_componen 35 int (*suspend)(struct snd_soc_component *); 36 int (*resume)(struct snd_soc_component 36 int (*resume)(struct snd_soc_component *); 37 37 38 /* pcm creation and destruction */ 38 /* pcm creation and destruction */ 39 int (*pcm_new)(struct snd_soc_pcm_runt 39 int (*pcm_new)(struct snd_soc_pcm_runtime *); 40 void (*pcm_free)(struct snd_pcm *); 40 void (*pcm_free)(struct snd_pcm *); 41 41 42 ... 42 ... 43 const struct snd_pcm_ops *ops; 43 const struct snd_pcm_ops *ops; 44 const struct snd_compr_ops *compr_ops; 44 const struct snd_compr_ops *compr_ops; 45 ... 45 ... 46 }; 46 }; 47 47 48 Please refer to the ALSA driver documentation 48 Please refer to the ALSA driver documentation for details of audio DMA. 49 https://www.kernel.org/doc/html/latest/sound/k !! 49 http://www.alsa-project.org/~iwai/writing-an-alsa-driver/ 50 50 51 An example DMA driver is soc/pxa/pxa2xx-pcm.c 51 An example DMA driver is soc/pxa/pxa2xx-pcm.c 52 52 53 53 54 SoC DAI Drivers 54 SoC DAI Drivers 55 =============== 55 =============== 56 56 57 Each SoC DAI driver must provide the following 57 Each SoC DAI driver must provide the following features:- 58 58 59 1. Digital audio interface (DAI) description 59 1. Digital audio interface (DAI) description 60 2. Digital audio interface configuration 60 2. Digital audio interface configuration 61 3. PCM's description 61 3. PCM's description 62 4. SYSCLK configuration 62 4. SYSCLK configuration 63 5. Suspend and resume (optional) 63 5. Suspend and resume (optional) 64 64 65 Please see codec.rst for a description of item 65 Please see codec.rst for a description of items 1 - 4. 66 66 67 67 68 SoC DSP Drivers 68 SoC DSP Drivers 69 =============== 69 =============== 70 70 71 Each SoC DSP driver usually supplies the follo 71 Each SoC DSP driver usually supplies the following features :- 72 72 73 1. DAPM graph 73 1. DAPM graph 74 2. Mixer controls 74 2. Mixer controls 75 3. DMA IO to/from DSP buffers (if applicable) 75 3. DMA IO to/from DSP buffers (if applicable) 76 4. Definition of DSP front end (FE) PCM device 76 4. Definition of DSP front end (FE) PCM devices. 77 77 78 Please see DPCM.txt for a description of item 78 Please see DPCM.txt for a description of item 4.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.