aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-08 18:07:14 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-08 18:07:14 -0400
commitf5a246eab9a268f51ba8189ea5b098a1bfff200e (patch)
treea6ff7169e0bcaca498d9aec8b0624de1b74eaecb /Documentation
parentd5bbd43d5f450c3fca058f5b85f3dfb4e8cc88c9 (diff)
parent7ff34ad80b7080fafaac8efa9ef0061708eddd51 (diff)
Merge tag 'sound-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound updates from Takashi Iwai: "This contains pretty many small commits covering fairly large range of files in sound/ directory. Partly because of additional API support and partly because of constantly developed ASoC and ARM stuff. Some highlights: - Introduced the helper function and documentation for exposing the channel map via control API, as discussed in Plumbers; most of PCI drivers are covered, will follow more drivers later - Most of drivers have been replaced with the new PM callbacks (if the bus is supported) - HD-audio controller got the support of runtime PM and the support of D3 clock-stop. Also changing the power_save option in sysfs kicks off immediately to enable / disable the power-save mode. - Another significant code change in HD-audio is the rewrite of firmware loading code. Other than that, most of changes in HD-audio are continued cleanups and standardization for the generic auto parser and bug fixes (HBR, device-specific fixups), in addition to the support of channel-map API. - Addition of ASoC bindings for the compressed API, used by the mid-x86 drivers. - Lots of cleanups and API refreshes for ASoC codec drivers and DaVinci. - Conversion of OMAP to dmaengine. - New machine driver for Wolfson Microelectronics Bells. - New CODEC driver for Wolfson Microelectronics WM0010. - Enhancements to the ux500 and wm2000 drivers - A new driver for DA9055 and the support for regulator bypass mode." Fix up various arm soc header file reorg conflicts. * tag 'sound-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (339 commits) ALSA: hda - Add new codec ALC283 ALC290 support ALSA: hda - avoid unneccesary indices on "Headphone Jack" controls ALSA: hda - fix indices on boost volume on Conexant ALSA: aloop - add locking to timer access ALSA: hda - Fix hang caused by race during suspend. sound: Remove unnecessary semicolon ALSA: hda/realtek - Fix detection of ALC271X codec ALSA: hda - Add inverted internal mic quirk for Lenovo IdeaPad U310 ALSA: hda - make Realtek/Sigmatel/Conexant use the generic unsol event ALSA: hda - make a generic unsol event handler ASoC: codecs: Add DA9055 codec driver ASoC: eukrea-tlv320: Convert it to platform driver ALSA: ASoC: add DT bindings for CS4271 ASoC: wm_hubs: Ensure volume updates are handled during class W startup ASoC: wm5110: Adding missing volume update bits ASoC: wm5110: Add OUT3R support ASoC: wm5110: Add AEC loopback support ASoC: wm5110: Rename EPOUT to HPOUT3 ASoC: arizona: Add more clock rates ASoC: arizona: Add more DSP options for mixer input muxes ...
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/devicetree/bindings/sound/cs4270.txt21
-rw-r--r--Documentation/devicetree/bindings/sound/cs4271.txt36
-rw-r--r--Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt45
-rw-r--r--Documentation/devicetree/bindings/sound/omap-abe-twl6040.txt91
-rw-r--r--Documentation/devicetree/bindings/sound/omap-mcbsp.txt37
-rw-r--r--Documentation/devicetree/bindings/sound/omap-twl4030.txt17
-rw-r--r--Documentation/devicetree/bindings/sound/tlv320aic3x.txt20
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt10
-rw-r--r--Documentation/sound/alsa/Channel-Mapping-API.txt153
-rw-r--r--Documentation/sound/alsa/HD-Audio-Models.txt3
10 files changed, 430 insertions, 3 deletions
diff --git a/Documentation/devicetree/bindings/sound/cs4270.txt b/Documentation/devicetree/bindings/sound/cs4270.txt
new file mode 100644
index 000000000000..6b222f9b8ef5
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/cs4270.txt
@@ -0,0 +1,21 @@
1CS4270 audio CODEC
2
3The driver for this device currently only supports I2C.
4
5Required properties:
6
7 - compatible : "cirrus,cs4270"
8
9 - reg : the I2C address of the device for I2C
10
11Optional properties:
12
13 - reset-gpio : a GPIO spec for the reset pin. If specified, it will be
14 deasserted before communication to the codec starts.
15
16Example:
17
18codec: cs4270@48 {
19 compatible = "cirrus,cs4270";
20 reg = <0x48>;
21};
diff --git a/Documentation/devicetree/bindings/sound/cs4271.txt b/Documentation/devicetree/bindings/sound/cs4271.txt
new file mode 100644
index 000000000000..c81b5fd5a5bc
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/cs4271.txt
@@ -0,0 +1,36 @@
1Cirrus Logic CS4271 DT bindings
2
3This driver supports both the I2C and the SPI bus.
4
5Required properties:
6
7 - compatible: "cirrus,cs4271"
8
9For required properties on SPI, please consult
10Documentation/devicetree/bindings/spi/spi-bus.txt
11
12Required properties on I2C:
13
14 - reg: the i2c address
15
16
17Optional properties:
18
19 - reset-gpio: a GPIO spec to define which pin is connected to the chip's
20 !RESET pin
21
22Examples:
23
24 codec_i2c: cs4271@10 {
25 compatible = "cirrus,cs4271";
26 reg = <0x10>;
27 reset-gpio = <&gpio 23 0>;
28 };
29
30 codec_spi: cs4271@0 {
31 compatible = "cirrus,cs4271";
32 reg = <0x0>;
33 reset-gpio = <&gpio 23 0>;
34 spi-max-frequency = <6000000>;
35 };
36
diff --git a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
new file mode 100644
index 000000000000..374e145c2ef1
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
@@ -0,0 +1,45 @@
1Texas Instruments McASP controller
2
3Required properties:
4- compatible :
5 "ti,dm646x-mcasp-audio" : for DM646x platforms
6 "ti,da830-mcasp-audio" : for both DA830 & DA850 platforms
7 "ti,omap2-mcasp-audio" : for OMAP2 platforms (TI81xx, AM33xx)
8
9- reg : Should contain McASP registers offset and length
10- interrupts : Interrupt number for McASP
11- op-mode : I2S/DIT ops mode.
12- tdm-slots : Slots for TDM operation.
13- num-serializer : Serializers used by McASP.
14- serial-dir : A list of serializer pin mode. The list number should be equal
15 to "num-serializer" parameter. Each entry is a number indication
16 serializer pin direction. (0 - INACTIVE, 1 - TX, 2 - RX)
17
18
19Optional properties:
20
21- ti,hwmods : Must be "mcasp<n>", n is controller instance starting 0
22- tx-num-evt : FIFO levels.
23- rx-num-evt : FIFO levels.
24- sram-size-playback : size of sram to be allocated during playback
25- sram-size-capture : size of sram to be allocated during capture
26
27Example:
28
29mcasp0: mcasp0@1d00000 {
30 compatible = "ti,da830-mcasp-audio";
31 #address-cells = <1>;
32 #size-cells = <0>;
33 reg = <0x100000 0x3000>;
34 interrupts = <82 83>;
35 op-mode = <0>; /* MCASP_IIS_MODE */
36 tdm-slots = <2>;
37 num-serializer = <16>;
38 serial-dir = <
39 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */
40 0 0 0 0
41 0 0 0 1
42 2 0 0 0 >;
43 tx-num-evt = <1>;
44 rx-num-evt = <1>;
45};
diff --git a/Documentation/devicetree/bindings/sound/omap-abe-twl6040.txt b/Documentation/devicetree/bindings/sound/omap-abe-twl6040.txt
new file mode 100644
index 000000000000..65dec876cb2d
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/omap-abe-twl6040.txt
@@ -0,0 +1,91 @@
1* Texas Instruments OMAP4+ and twl6040 based audio setups
2
3Required properties:
4- compatible: "ti,abe-twl6040"
5- ti,model: Name of the sound card ( for example "SDP4430")
6- ti,mclk-freq: MCLK frequency for HPPLL operation
7- ti,mcpdm: phandle for the McPDM node
8- ti,twl6040: phandle for the twl6040 core node
9- ti,audio-routing: List of connections between audio components.
10 Each entry is a pair of strings, the first being the connection's sink,
11 the second being the connection's source.
12
13Optional properties:
14- ti,dmic: phandle for the OMAP dmic node if the machine have it connected
15- ti,jack_detection: Need to be set to <1> if the board capable to detect jack
16 insertion, removal.
17
18Available audio endpoints for the audio-routing table:
19
20Board connectors:
21 * Headset Stereophone
22 * Earphone Spk
23 * Ext Spk
24 * Line Out
25 * Vibrator
26 * Headset Mic
27 * Main Handset Mic
28 * Sub Handset Mic
29 * Line In
30 * Digital Mic
31
32twl6040 pins:
33 * HSOL
34 * HSOR
35 * EP
36 * HFL
37 * HFR
38 * AUXL
39 * AUXR
40 * VIBRAL
41 * VIBRAR
42 * HSMIC
43 * MAINMIC
44 * SUBMIC
45 * AFML
46 * AFMR
47
48 * Headset Mic Bias
49 * Main Mic Bias
50 * Digital Mic1 Bias
51 * Digital Mic2 Bias
52
53Digital mic pins:
54 * DMic
55
56Example:
57
58sound {
59 compatible = "ti,abe-twl6040";
60 ti,model = "SDP4430";
61
62 ti,jack-detection = <1>;
63 ti,mclk-freq = <38400000>;
64
65 ti,mcpdm = <&mcpdm>;
66 ti,dmic = <&dmic>;
67
68 ti,twl6040 = <&twl6040>;
69
70 /* Audio routing */
71 ti,audio-routing =
72 "Headset Stereophone", "HSOL",
73 "Headset Stereophone", "HSOR",
74 "Earphone Spk", "EP",
75 "Ext Spk", "HFL",
76 "Ext Spk", "HFR",
77 "Line Out", "AUXL",
78 "Line Out", "AUXR",
79 "Vibrator", "VIBRAL",
80 "Vibrator", "VIBRAR",
81 "HSMIC", "Headset Mic",
82 "Headset Mic", "Headset Mic Bias",
83 "MAINMIC", "Main Handset Mic",
84 "Main Handset Mic", "Main Mic Bias",
85 "SUBMIC", "Sub Handset Mic",
86 "Sub Handset Mic", "Main Mic Bias",
87 "AFML", "Line In",
88 "AFMR", "Line In",
89 "DMic", "Digital Mic",
90 "Digital Mic", "Digital Mic1 Bias";
91};
diff --git a/Documentation/devicetree/bindings/sound/omap-mcbsp.txt b/Documentation/devicetree/bindings/sound/omap-mcbsp.txt
new file mode 100644
index 000000000000..17cce4490456
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/omap-mcbsp.txt
@@ -0,0 +1,37 @@
1* Texas Instruments OMAP2+ McBSP module
2
3Required properties:
4- compatible: "ti,omap2420-mcbsp" for McBSP on OMAP2420
5 "ti,omap2430-mcbsp" for McBSP on OMAP2430
6 "ti,omap3-mcbsp" for McBSP on OMAP3
7 "ti,omap4-mcbsp" for McBSP on OMAP4 and newer SoC
8- reg: Register location and size, for OMAP4+ as an array:
9 <MPU access base address, size>,
10 <L3 interconnect address, size>;
11- reg-names: Array of strings associated with the address space
12- interrupts: Interrupt numbers for the McBSP port, as an array in case the
13 McBSP IP have more interrupt lines:
14 <OCP compliant irq>,
15 <TX irq>,
16 <RX irq>;
17- interrupt-names: Array of strings associated with the interrupt numbers
18- interrupt-parent: The parent interrupt controller
19- ti,buffer-size: Size of the FIFO on the port (OMAP2430 and newer SoC)
20- ti,hwmods: Name of the hwmod associated to the McBSP port
21
22Example:
23
24mcbsp2: mcbsp@49022000 {
25 compatible = "ti,omap3-mcbsp";
26 reg = <0x49022000 0xff>,
27 <0x49028000 0xff>;
28 reg-names = "mpu", "sidetone";
29 interrupts = <0 17 0x4>, /* OCP compliant interrupt */
30 <0 62 0x4>, /* TX interrupt */
31 <0 63 0x4>, /* RX interrupt */
32 <0 4 0x4>; /* Sidetone */
33 interrupt-names = "common", "tx", "rx", "sidetone";
34 interrupt-parent = <&intc>;
35 ti,buffer-size = <1280>;
36 ti,hwmods = "mcbsp2";
37};
diff --git a/Documentation/devicetree/bindings/sound/omap-twl4030.txt b/Documentation/devicetree/bindings/sound/omap-twl4030.txt
new file mode 100644
index 000000000000..6fae51c7f766
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/omap-twl4030.txt
@@ -0,0 +1,17 @@
1* Texas Instruments SoC with twl4030 based audio setups
2
3Required properties:
4- compatible: "ti,omap-twl4030"
5- ti,model: Name of the sound card (for example "omap3beagle")
6- ti,mcbsp: phandle for the McBSP node
7- ti,codec: phandle for the twl4030 audio node
8
9Example:
10
11sound {
12 compatible = "ti,omap-twl4030";
13 ti,model = "omap3beagle";
14
15 ti,mcbsp = <&mcbsp2>;
16 ti,codec = <&twl_audio>;
17};
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
new file mode 100644
index 000000000000..e7b98f41fa5f
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt
@@ -0,0 +1,20 @@
1Texas Instruments - tlv320aic3x Codec module
2
3The tlv320aic3x serial control bus communicates through I2C protocols
4
5Required properties:
6- compatible - "string" - "ti,tlv320aic3x"
7- reg - <int> - I2C slave address
8
9
10Optional properties:
11
12- gpio-reset - gpio pin number used for codec reset
13- ai3x-gpio-func - <array of 2 int> - AIC3X_GPIO1 & AIC3X_GPIO2 Functionality
14
15Example:
16
17tlv320aic3x: tlv320aic3x@1b {
18 compatible = "ti,tlv320aic3x";
19 reg = <0x1b>;
20};
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 4e4d0bc9816f..d90d8ec2853d 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -860,8 +860,14 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
860 860
861 [Multiple options for each card instance] 861 [Multiple options for each card instance]
862 model - force the model name 862 model - force the model name
863 position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF, 863 position_fix - Fix DMA pointer
864 3 = VIACOMBO, 4 = COMBO) 864 -1 = system default: choose appropriate one per controller
865 hardware
866 0 = auto: falls back to LPIB when POSBUF doesn't work
867 1 = use LPIB
868 2 = POSBUF: use position buffer
869 3 = VIACOMBO: VIA-specific workaround for capture
870 4 = COMBO: use LPIB for playback, auto for capture stream
865 probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) 871 probe_mask - Bitmask to probe codecs (default = -1, meaning all slots)
866 When the bit 8 (0x100) is set, the lower 8 bits are used 872 When the bit 8 (0x100) is set, the lower 8 bits are used
867 as the "fixed" codec slots; i.e. the driver probes the 873 as the "fixed" codec slots; i.e. the driver probes the
diff --git a/Documentation/sound/alsa/Channel-Mapping-API.txt b/Documentation/sound/alsa/Channel-Mapping-API.txt
new file mode 100644
index 000000000000..3c43d1a4ca0e
--- /dev/null
+++ b/Documentation/sound/alsa/Channel-Mapping-API.txt
@@ -0,0 +1,153 @@
1ALSA PCM channel-mapping API
2============================
3 Takashi Iwai <tiwai@suse.de>
4
5GENERAL
6-------
7
8The channel mapping API allows user to query the possible channel maps
9and the current channel map, also optionally to modify the channel map
10of the current stream.
11
12A channel map is an array of position for each PCM channel.
13Typically, a stereo PCM stream has a channel map of
14 { front_left, front_right }
15while a 4.0 surround PCM stream has a channel map of
16 { front left, front right, rear left, rear right }.
17
18The problem, so far, was that we had no standard channel map
19explicitly, and applications had no way to know which channel
20corresponds to which (speaker) position. Thus, applications applied
21wrong channels for 5.1 outputs, and you hear suddenly strange sound
22from rear. Or, some devices secretly assume that center/LFE is the
23third/fourth channels while others that C/LFE as 5th/6th channels.
24
25Also, some devices such as HDMI are configurable for different speaker
26positions even with the same number of total channels. However, there
27was no way to specify this because of lack of channel map
28specification. These are the main motivations for the new channel
29mapping API.
30
31
32DESIGN
33------
34
35Actually, "the channel mapping API" doesn't introduce anything new in
36the kernel/user-space ABI perspective. It uses only the existing
37control element features.
38
39As a ground design, each PCM substream may contain a control element
40providing the channel mapping information and configuration. This
41element is specified by:
42 iface = SNDRV_CTL_ELEM_IFACE_PCM
43 name = "Playback Channel Map" or "Capture Channel Map"
44 device = the same device number for the assigned PCM substream
45 index = the same index number for the assigned PCM substream
46
47Note the name is different depending on the PCM substream direction.
48
49Each control element provides at least the TLV read operation and the
50read operation. Optionally, the write operation can be provided to
51allow user to change the channel map dynamically.
52
53* TLV
54
55The TLV operation gives the list of available channel
56maps. A list item of a channel map is usually a TLV of
57 type data-bytes ch0 ch1 ch2...
58where type is the TLV type value, the second argument is the total
59bytes (not the numbers) of channel values, and the rest are the
60position value for each channel.
61
62As a TLV type, either SNDRV_CTL_TLVT_CHMAP_FIXED,
63SNDRV_CTL_TLV_CHMAP_VAR or SNDRV_CTL_TLVT_CHMAP_PAIRED can be used.
64The _FIXED type is for a channel map with the fixed channel position
65while the latter two are for flexible channel positions. _VAR type is
66for a channel map where all channels are freely swappable and _PAIRED
67type is where pair-wise channels are swappable. For example, when you
68have {FL/FR/RL/RR} channel map, _PAIRED type would allow you to swap
69only {RL/RR/FL/FR} while _VAR type would allow even swapping FL and
70RR.
71
72These new TLV types are defined in sound/tlv.h.
73
74The available channel position values are defined in sound/asound.h,
75here is a cut:
76
77/* channel positions */
78enum {
79 SNDRV_CHMAP_UNKNOWN = 0,
80 SNDRV_CHMAP_NA, /* N/A, silent */
81 SNDRV_CHMAP_MONO, /* mono stream */
82 /* this follows the alsa-lib mixer channel value + 3 */
83 SNDRV_CHMAP_FL, /* front left */
84 SNDRV_CHMAP_FR, /* front right */
85 SNDRV_CHMAP_RL, /* rear left */
86 SNDRV_CHMAP_RR, /* rear right */
87 SNDRV_CHMAP_FC, /* front center */
88 SNDRV_CHMAP_LFE, /* LFE */
89 SNDRV_CHMAP_SL, /* side left */
90 SNDRV_CHMAP_SR, /* side right */
91 SNDRV_CHMAP_RC, /* rear center */
92 /* new definitions */
93 SNDRV_CHMAP_FLC, /* front left center */
94 SNDRV_CHMAP_FRC, /* front right center */
95 SNDRV_CHMAP_RLC, /* rear left center */
96 SNDRV_CHMAP_RRC, /* rear right center */
97 SNDRV_CHMAP_FLW, /* front left wide */
98 SNDRV_CHMAP_FRW, /* front right wide */
99 SNDRV_CHMAP_FLH, /* front left high */
100 SNDRV_CHMAP_FCH, /* front center high */
101 SNDRV_CHMAP_FRH, /* front right high */
102 SNDRV_CHMAP_TC, /* top center */
103 SNDRV_CHMAP_TFL, /* top front left */
104 SNDRV_CHMAP_TFR, /* top front right */
105 SNDRV_CHMAP_TFC, /* top front center */
106 SNDRV_CHMAP_TRL, /* top rear left */
107 SNDRV_CHMAP_TRR, /* top rear right */
108 SNDRV_CHMAP_TRC, /* top rear center */
109 SNDRV_CHMAP_LAST = SNDRV_CHMAP_TRC,
110};
111
112When a PCM stream can provide more than one channel map, you can
113provide multiple channel maps in a TLV container type. The TLV data
114to be returned will contain such as:
115 SNDRV_CTL_TLVT_CONTAINER 96
116 SNDRV_CTL_TLVT_CHMAP_FIXED 4 SNDRV_CHMAP_FC
117 SNDRV_CTL_TLVT_CHMAP_FIXED 8 SNDRV_CHMAP_FL SNDRV_CHMAP_FR
118 SNDRV_CTL_TLVT_CHMAP_FIXED 16 NDRV_CHMAP_FL SNDRV_CHMAP_FR \
119 SNDRV_CHMAP_RL SNDRV_CHMAP_RR
120
121The channel position is provided in LSB 16bits. The upper bits are
122used for bit flags.
123
124#define SNDRV_CHMAP_POSITION_MASK 0xffff
125#define SNDRV_CHMAP_PHASE_INVERSE (0x01 << 16)
126#define SNDRV_CHMAP_DRIVER_SPEC (0x02 << 16)
127
128SNDRV_CHMAP_PHASE_INVERSE indicates the channel is phase inverted,
129(thus summing left and right channels would result in almost silence).
130Some digital mic devices have this.
131
132When SNDRV_CHMAP_DRIVER_SPEC is set, all the channel position values
133don't follow the standard definition above but driver-specific.
134
135* READ OPERATION
136
137The control read operation is for providing the current channel map of
138the given stream. The control element returns an integer array
139containing the position of each channel.
140
141When this is performed before the number of the channel is specified
142(i.e. hw_params is set), it should return all channels set to
143UNKNOWN.
144
145* WRITE OPERATION
146
147The control write operation is optional, and only for devices that can
148change the channel configuration on the fly, such as HDMI. User needs
149to pass an integer value containing the valid channel positions for
150all channels of the assigned PCM substream.
151
152This operation is allowed only at PCM PREPARED state. When called in
153other states, it shall return an error.
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt
index a92bba816843..16dfe57f1731 100644
--- a/Documentation/sound/alsa/HD-Audio-Models.txt
+++ b/Documentation/sound/alsa/HD-Audio-Models.txt
@@ -74,7 +74,8 @@ CMI9880
74 74
75AD1882 / AD1882A 75AD1882 / AD1882A
76================ 76================
77 3stack 3-stack mode (default) 77 3stack 3-stack mode
78 3stack-automute 3-stack with automute front HP (default)
78 6stack 6-stack mode 79 6stack 6-stack mode
79 80
80AD1884A / AD1883 / AD1984A / AD1984B 81AD1884A / AD1883 / AD1984A / AD1984B