diff options
Diffstat (limited to 'Documentation/sound/alsa/soc/overview.txt')
-rw-r--r-- | Documentation/sound/alsa/soc/overview.txt | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/Documentation/sound/alsa/soc/overview.txt b/Documentation/sound/alsa/soc/overview.txt index c47ce9530677..1e4c6d3655f2 100644 --- a/Documentation/sound/alsa/soc/overview.txt +++ b/Documentation/sound/alsa/soc/overview.txt | |||
@@ -1,25 +1,26 @@ | |||
1 | ALSA SoC Layer | 1 | ALSA SoC Layer |
2 | ============== | 2 | ============== |
3 | 3 | ||
4 | The overall project goal of the ALSA System on Chip (ASoC) layer is to provide | 4 | The overall project goal of the ALSA System on Chip (ASoC) layer is to |
5 | better ALSA support for embedded system-on-chip processors (e.g. pxa2xx, au1x00, | 5 | provide better ALSA support for embedded system-on-chip processors (e.g. |
6 | iMX, etc) and portable audio codecs. Currently there is some support in the | 6 | pxa2xx, au1x00, iMX, etc) and portable audio codecs. Prior to the ASoC |
7 | kernel for SoC audio, however it has some limitations:- | 7 | subsystem there was some support in the kernel for SoC audio, however it |
8 | had some limitations:- | ||
8 | 9 | ||
9 | * Currently, codec drivers are often tightly coupled to the underlying SoC | 10 | * Codec drivers were often tightly coupled to the underlying SoC |
10 | CPU. This is not ideal and leads to code duplication i.e. Linux now has 4 | 11 | CPU. This is not ideal and leads to code duplication - for example, |
11 | different wm8731 drivers for 4 different SoC platforms. | 12 | Linux had different wm8731 drivers for 4 different SoC platforms. |
12 | 13 | ||
13 | * There is no standard method to signal user initiated audio events (e.g. | 14 | * There was no standard method to signal user initiated audio events (e.g. |
14 | Headphone/Mic insertion, Headphone/Mic detection after an insertion | 15 | Headphone/Mic insertion, Headphone/Mic detection after an insertion |
15 | event). These are quite common events on portable devices and often require | 16 | event). These are quite common events on portable devices and often require |
16 | machine specific code to re-route audio, enable amps, etc., after such an | 17 | machine specific code to re-route audio, enable amps, etc., after such an |
17 | event. | 18 | event. |
18 | 19 | ||
19 | * Current drivers tend to power up the entire codec when playing | 20 | * Drivers tended to power up the entire codec when playing (or |
20 | (or recording) audio. This is fine for a PC, but tends to waste a lot of | 21 | recording) audio. This is fine for a PC, but tends to waste a lot of |
21 | power on portable devices. There is also no support for saving power via | 22 | power on portable devices. There was also no support for saving |
22 | changing codec oversampling rates, bias currents, etc. | 23 | power via changing codec oversampling rates, bias currents, etc. |
23 | 24 | ||
24 | 25 | ||
25 | ASoC Design | 26 | ASoC Design |
@@ -31,12 +32,13 @@ features :- | |||
31 | * Codec independence. Allows reuse of codec drivers on other platforms | 32 | * Codec independence. Allows reuse of codec drivers on other platforms |
32 | and machines. | 33 | and machines. |
33 | 34 | ||
34 | * Easy I2S/PCM audio interface setup between codec and SoC. Each SoC interface | 35 | * Easy I2S/PCM audio interface setup between codec and SoC. Each SoC |
35 | and codec registers it's audio interface capabilities with the core and are | 36 | interface and codec registers it's audio interface capabilities with the |
36 | subsequently matched and configured when the application hw params are known. | 37 | core and are subsequently matched and configured when the application |
38 | hardware parameters are known. | ||
37 | 39 | ||
38 | * Dynamic Audio Power Management (DAPM). DAPM automatically sets the codec to | 40 | * Dynamic Audio Power Management (DAPM). DAPM automatically sets the codec to |
39 | it's minimum power state at all times. This includes powering up/down | 41 | its minimum power state at all times. This includes powering up/down |
40 | internal power blocks depending on the internal codec audio routing and any | 42 | internal power blocks depending on the internal codec audio routing and any |
41 | active streams. | 43 | active streams. |
42 | 44 | ||
@@ -45,16 +47,16 @@ features :- | |||
45 | signals the codec when to change power states. | 47 | signals the codec when to change power states. |
46 | 48 | ||
47 | * Machine specific controls: Allow machines to add controls to the sound card | 49 | * Machine specific controls: Allow machines to add controls to the sound card |
48 | (e.g. volume control for speaker amp). | 50 | (e.g. volume control for speaker amplifier). |
49 | 51 | ||
50 | To achieve all this, ASoC basically splits an embedded audio system into 3 | 52 | To achieve all this, ASoC basically splits an embedded audio system into 3 |
51 | components :- | 53 | components :- |
52 | 54 | ||
53 | * Codec driver: The codec driver is platform independent and contains audio | 55 | * Codec driver: The codec driver is platform independent and contains audio |
54 | controls, audio interface capabilities, codec dapm definition and codec IO | 56 | controls, audio interface capabilities, codec DAPM definition and codec IO |
55 | functions. | 57 | functions. |
56 | 58 | ||
57 | * Platform driver: The platform driver contains the audio dma engine and audio | 59 | * Platform driver: The platform driver contains the audio DMA engine and audio |
58 | interface drivers (e.g. I2S, AC97, PCM) for that platform. | 60 | interface drivers (e.g. I2S, AC97, PCM) for that platform. |
59 | 61 | ||
60 | * Machine driver: The machine driver handles any machine specific controls and | 62 | * Machine driver: The machine driver handles any machine specific controls and |
@@ -81,4 +83,4 @@ machine.txt: Machine driver internals. | |||
81 | 83 | ||
82 | pop_clicks.txt: How to minimise audio artifacts. | 84 | pop_clicks.txt: How to minimise audio artifacts. |
83 | 85 | ||
84 | clocking.txt: ASoC clocking for best power performance. \ No newline at end of file | 86 | clocking.txt: ASoC clocking for best power performance. |