mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.0 KiB
78 lines
2.0 KiB
==================== |
|
ASoC Platform Driver |
|
==================== |
|
|
|
An ASoC platform driver class can be divided into audio DMA drivers, SoC DAI |
|
drivers and DSP drivers. The platform drivers only target the SoC CPU and must |
|
have no board specific code. |
|
|
|
Audio DMA |
|
========= |
|
|
|
The platform DMA driver optionally supports the following ALSA operations:- |
|
:: |
|
|
|
/* SoC audio ops */ |
|
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); |
|
}; |
|
|
|
The platform driver exports its DMA functionality via struct |
|
snd_soc_component_driver:- |
|
:: |
|
|
|
struct snd_soc_component_driver { |
|
const char *name; |
|
|
|
... |
|
int (*probe)(struct snd_soc_component *); |
|
void (*remove)(struct snd_soc_component *); |
|
int (*suspend)(struct snd_soc_component *); |
|
int (*resume)(struct snd_soc_component *); |
|
|
|
/* pcm creation and destruction */ |
|
int (*pcm_new)(struct snd_soc_pcm_runtime *); |
|
void (*pcm_free)(struct snd_pcm *); |
|
|
|
... |
|
const struct snd_pcm_ops *ops; |
|
const struct snd_compr_ops *compr_ops; |
|
... |
|
}; |
|
|
|
Please refer to the ALSA driver documentation for details of audio DMA. |
|
http://www.alsa-project.org/~iwai/writing-an-alsa-driver/ |
|
|
|
An example DMA driver is soc/pxa/pxa2xx-pcm.c |
|
|
|
|
|
SoC DAI Drivers |
|
=============== |
|
|
|
Each SoC DAI driver must provide the following features:- |
|
|
|
1. Digital audio interface (DAI) description |
|
2. Digital audio interface configuration |
|
3. PCM's description |
|
4. SYSCLK configuration |
|
5. Suspend and resume (optional) |
|
|
|
Please see codec.rst for a description of items 1 - 4. |
|
|
|
|
|
SoC DSP Drivers |
|
=============== |
|
|
|
Each SoC DSP driver usually supplies the following features :- |
|
|
|
1. DAPM graph |
|
2. Mixer controls |
|
3. DMA IO to/from DSP buffers (if applicable) |
|
4. Definition of DSP front end (FE) PCM devices. |
|
|
|
Please see DPCM.txt for a description of item 4.
|
|
|