diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-08 18:07:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-08 18:07:14 -0400 |
commit | f5a246eab9a268f51ba8189ea5b098a1bfff200e (patch) | |
tree | a6ff7169e0bcaca498d9aec8b0624de1b74eaecb /Documentation | |
parent | d5bbd43d5f450c3fca058f5b85f3dfb4e8cc88c9 (diff) | |
parent | 7ff34ad80b7080fafaac8efa9ef0061708eddd51 (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')
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 @@ | |||
1 | CS4270 audio CODEC | ||
2 | |||
3 | The driver for this device currently only supports I2C. | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible : "cirrus,cs4270" | ||
8 | |||
9 | - reg : the I2C address of the device for I2C | ||
10 | |||
11 | Optional 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 | |||
16 | Example: | ||
17 | |||
18 | codec: 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 @@ | |||
1 | Cirrus Logic CS4271 DT bindings | ||
2 | |||
3 | This driver supports both the I2C and the SPI bus. | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible: "cirrus,cs4271" | ||
8 | |||
9 | For required properties on SPI, please consult | ||
10 | Documentation/devicetree/bindings/spi/spi-bus.txt | ||
11 | |||
12 | Required properties on I2C: | ||
13 | |||
14 | - reg: the i2c address | ||
15 | |||
16 | |||
17 | Optional properties: | ||
18 | |||
19 | - reset-gpio: a GPIO spec to define which pin is connected to the chip's | ||
20 | !RESET pin | ||
21 | |||
22 | Examples: | ||
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 @@ | |||
1 | Texas Instruments McASP controller | ||
2 | |||
3 | Required 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 | |||
19 | Optional 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 | |||
27 | Example: | ||
28 | |||
29 | mcasp0: 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 | |||
3 | Required 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 | |||
13 | Optional 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 | |||
18 | Available audio endpoints for the audio-routing table: | ||
19 | |||
20 | Board 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 | |||
32 | twl6040 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 | |||
53 | Digital mic pins: | ||
54 | * DMic | ||
55 | |||
56 | Example: | ||
57 | |||
58 | sound { | ||
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 | |||
3 | Required 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 | |||
22 | Example: | ||
23 | |||
24 | mcbsp2: 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 | |||
3 | Required 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 | |||
9 | Example: | ||
10 | |||
11 | sound { | ||
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 @@ | |||
1 | Texas Instruments - tlv320aic3x Codec module | ||
2 | |||
3 | The tlv320aic3x serial control bus communicates through I2C protocols | ||
4 | |||
5 | Required properties: | ||
6 | - compatible - "string" - "ti,tlv320aic3x" | ||
7 | - reg - <int> - I2C slave address | ||
8 | |||
9 | |||
10 | Optional 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 | |||
15 | Example: | ||
16 | |||
17 | tlv320aic3x: 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 @@ | |||
1 | ALSA PCM channel-mapping API | ||
2 | ============================ | ||
3 | Takashi Iwai <tiwai@suse.de> | ||
4 | |||
5 | GENERAL | ||
6 | ------- | ||
7 | |||
8 | The channel mapping API allows user to query the possible channel maps | ||
9 | and the current channel map, also optionally to modify the channel map | ||
10 | of the current stream. | ||
11 | |||
12 | A channel map is an array of position for each PCM channel. | ||
13 | Typically, a stereo PCM stream has a channel map of | ||
14 | { front_left, front_right } | ||
15 | while a 4.0 surround PCM stream has a channel map of | ||
16 | { front left, front right, rear left, rear right }. | ||
17 | |||
18 | The problem, so far, was that we had no standard channel map | ||
19 | explicitly, and applications had no way to know which channel | ||
20 | corresponds to which (speaker) position. Thus, applications applied | ||
21 | wrong channels for 5.1 outputs, and you hear suddenly strange sound | ||
22 | from rear. Or, some devices secretly assume that center/LFE is the | ||
23 | third/fourth channels while others that C/LFE as 5th/6th channels. | ||
24 | |||
25 | Also, some devices such as HDMI are configurable for different speaker | ||
26 | positions even with the same number of total channels. However, there | ||
27 | was no way to specify this because of lack of channel map | ||
28 | specification. These are the main motivations for the new channel | ||
29 | mapping API. | ||
30 | |||
31 | |||
32 | DESIGN | ||
33 | ------ | ||
34 | |||
35 | Actually, "the channel mapping API" doesn't introduce anything new in | ||
36 | the kernel/user-space ABI perspective. It uses only the existing | ||
37 | control element features. | ||
38 | |||
39 | As a ground design, each PCM substream may contain a control element | ||
40 | providing the channel mapping information and configuration. This | ||
41 | element 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 | |||
47 | Note the name is different depending on the PCM substream direction. | ||
48 | |||
49 | Each control element provides at least the TLV read operation and the | ||
50 | read operation. Optionally, the write operation can be provided to | ||
51 | allow user to change the channel map dynamically. | ||
52 | |||
53 | * TLV | ||
54 | |||
55 | The TLV operation gives the list of available channel | ||
56 | maps. A list item of a channel map is usually a TLV of | ||
57 | type data-bytes ch0 ch1 ch2... | ||
58 | where type is the TLV type value, the second argument is the total | ||
59 | bytes (not the numbers) of channel values, and the rest are the | ||
60 | position value for each channel. | ||
61 | |||
62 | As a TLV type, either SNDRV_CTL_TLVT_CHMAP_FIXED, | ||
63 | SNDRV_CTL_TLV_CHMAP_VAR or SNDRV_CTL_TLVT_CHMAP_PAIRED can be used. | ||
64 | The _FIXED type is for a channel map with the fixed channel position | ||
65 | while the latter two are for flexible channel positions. _VAR type is | ||
66 | for a channel map where all channels are freely swappable and _PAIRED | ||
67 | type is where pair-wise channels are swappable. For example, when you | ||
68 | have {FL/FR/RL/RR} channel map, _PAIRED type would allow you to swap | ||
69 | only {RL/RR/FL/FR} while _VAR type would allow even swapping FL and | ||
70 | RR. | ||
71 | |||
72 | These new TLV types are defined in sound/tlv.h. | ||
73 | |||
74 | The available channel position values are defined in sound/asound.h, | ||
75 | here is a cut: | ||
76 | |||
77 | /* channel positions */ | ||
78 | enum { | ||
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 | |||
112 | When a PCM stream can provide more than one channel map, you can | ||
113 | provide multiple channel maps in a TLV container type. The TLV data | ||
114 | to 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 | |||
121 | The channel position is provided in LSB 16bits. The upper bits are | ||
122 | used 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 | |||
128 | SNDRV_CHMAP_PHASE_INVERSE indicates the channel is phase inverted, | ||
129 | (thus summing left and right channels would result in almost silence). | ||
130 | Some digital mic devices have this. | ||
131 | |||
132 | When SNDRV_CHMAP_DRIVER_SPEC is set, all the channel position values | ||
133 | don't follow the standard definition above but driver-specific. | ||
134 | |||
135 | * READ OPERATION | ||
136 | |||
137 | The control read operation is for providing the current channel map of | ||
138 | the given stream. The control element returns an integer array | ||
139 | containing the position of each channel. | ||
140 | |||
141 | When 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 | ||
143 | UNKNOWN. | ||
144 | |||
145 | * WRITE OPERATION | ||
146 | |||
147 | The control write operation is optional, and only for devices that can | ||
148 | change the channel configuration on the fly, such as HDMI. User needs | ||
149 | to pass an integer value containing the valid channel positions for | ||
150 | all channels of the assigned PCM substream. | ||
151 | |||
152 | This operation is allowed only at PCM PREPARED state. When called in | ||
153 | other 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 | ||
75 | AD1882 / AD1882A | 75 | AD1882 / 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 | ||
80 | AD1884A / AD1883 / AD1984A / AD1984B | 81 | AD1884A / AD1883 / AD1984A / AD1984B |