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 |
