diff options
| author | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-17 16:15:55 -0500 |
|---|---|---|
| committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-01-17 16:15:55 -0500 |
| commit | 8dea78da5cee153b8af9c07a2745f6c55057fe12 (patch) | |
| tree | a8f4d49d63b1ecc92f2fddceba0655b2472c5bd9 /Documentation/sound/alsa | |
| parent | 406089d01562f1e2bf9f089fd7637009ebaad589 (diff) | |
Patched in Tegra support.
Diffstat (limited to 'Documentation/sound/alsa')
| -rw-r--r-- | Documentation/sound/alsa/ALSA-Configuration.txt | 40 | ||||
| -rw-r--r-- | Documentation/sound/alsa/Audiophile-Usb.txt | 4 | ||||
| -rw-r--r-- | Documentation/sound/alsa/Channel-Mapping-API.txt | 153 | ||||
| -rw-r--r-- | Documentation/sound/alsa/HD-Audio-Controls.txt | 16 | ||||
| -rw-r--r-- | Documentation/sound/alsa/HD-Audio-Models.txt | 180 | ||||
| -rw-r--r-- | Documentation/sound/alsa/HD-Audio.txt | 70 | ||||
| -rw-r--r-- | Documentation/sound/alsa/MIXART.txt | 6 | ||||
| -rw-r--r-- | Documentation/sound/alsa/OSS-Emulation.txt | 2 | ||||
| -rw-r--r-- | Documentation/sound/alsa/compress_offload.txt | 188 | ||||
| -rw-r--r-- | Documentation/sound/alsa/hdspm.txt | 2 | ||||
| -rw-r--r-- | Documentation/sound/alsa/soc/machine.txt | 6 |
11 files changed, 187 insertions, 480 deletions
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index b9cfd339a6f..89757012c7f 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
| @@ -860,14 +860,7 @@ 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 | 863 | position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF) |
| 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 | ||
| 871 | probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) | 864 | probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) |
| 872 | When the bit 8 (0x100) is set, the lower 8 bits are used | 865 | When the bit 8 (0x100) is set, the lower 8 bits are used |
| 873 | as the "fixed" codec slots; i.e. the driver probes the | 866 | as the "fixed" codec slots; i.e. the driver probes the |
| @@ -881,7 +874,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 881 | setup before initializing the codecs. This option is | 874 | setup before initializing the codecs. This option is |
| 882 | available only when CONFIG_SND_HDA_PATCH_LOADER=y is set. | 875 | available only when CONFIG_SND_HDA_PATCH_LOADER=y is set. |
| 883 | See HD-Audio.txt for details. | 876 | See HD-Audio.txt for details. |
| 884 | beep_mode - Selects the beep registration mode (0=off, 1=on); default | 877 | beep_mode - Selects the beep registration mode (0=off, 1=on, 2= |
| 878 | dynamic registration via mute switch on/off); the default | ||
| 885 | value is set via CONFIG_SND_HDA_INPUT_BEEP_MODE kconfig. | 879 | value is set via CONFIG_SND_HDA_INPUT_BEEP_MODE kconfig. |
| 886 | 880 | ||
| 887 | [Single (global) options] | 881 | [Single (global) options] |
| @@ -892,12 +886,6 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 892 | disable) | 886 | disable) |
| 893 | power_save_controller - Reset HD-audio controller in power-saving mode | 887 | power_save_controller - Reset HD-audio controller in power-saving mode |
| 894 | (default = on) | 888 | (default = on) |
| 895 | align_buffer_size - Force rounding of buffer/period sizes to multiples | ||
| 896 | of 128 bytes. This is more efficient in terms of memory | ||
| 897 | access but isn't required by the HDA spec and prevents | ||
| 898 | users from specifying exact period/buffer sizes. | ||
| 899 | (default = on) | ||
| 900 | snoop - Enable/disable snooping (default = on) | ||
| 901 | 889 | ||
| 902 | This module supports multiple cards and autoprobe. | 890 | This module supports multiple cards and autoprobe. |
| 903 | 891 | ||
| @@ -931,11 +919,6 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 931 | (Usually SD_LPIB register is more accurate than the | 919 | (Usually SD_LPIB register is more accurate than the |
| 932 | position buffer.) | 920 | position buffer.) |
| 933 | 921 | ||
| 934 | position_fix=3 is specific to VIA devices. The position | ||
| 935 | of the capture stream is checked from both LPIB and POSBUF | ||
| 936 | values. position_fix=4 is a combination mode, using LPIB | ||
| 937 | for playback and POSBUF for capture. | ||
| 938 | |||
| 939 | NB: If you get many "azx_get_response timeout" messages at | 922 | NB: If you get many "azx_get_response timeout" messages at |
| 940 | loading, it's likely a problem of interrupts (e.g. ACPI irq | 923 | loading, it's likely a problem of interrupts (e.g. ACPI irq |
| 941 | routing). Try to boot with options like "pci=noacpi". Also, you | 924 | routing). Try to boot with options like "pci=noacpi". Also, you |
| @@ -1550,7 +1533,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 1550 | 1533 | ||
| 1551 | Module for sound cards based on the C-Media CMI8786/8787/8788 chip: | 1534 | Module for sound cards based on the C-Media CMI8786/8787/8788 chip: |
| 1552 | * Asound A-8788 | 1535 | * Asound A-8788 |
| 1553 | * Asus Xonar DG/DGX | 1536 | * Asus Xonar DG |
| 1554 | * AuzenTech X-Meridian | 1537 | * AuzenTech X-Meridian |
| 1555 | * AuzenTech X-Meridian 2G | 1538 | * AuzenTech X-Meridian 2G |
| 1556 | * Bgears b-Enspirer | 1539 | * Bgears b-Enspirer |
| @@ -1599,7 +1582,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 1599 | 1582 | ||
| 1600 | Module supports autoprobe a chip. | 1583 | Module supports autoprobe a chip. |
| 1601 | 1584 | ||
| 1602 | Note: the driver may have problems regarding endianness. | 1585 | Note: the driver may have problems regarding endianess. |
| 1603 | 1586 | ||
| 1604 | The power-management is supported. | 1587 | The power-management is supported. |
| 1605 | 1588 | ||
| @@ -1905,6 +1888,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 1905 | vid - Vendor ID for the device (optional) | 1888 | vid - Vendor ID for the device (optional) |
| 1906 | pid - Product ID for the device (optional) | 1889 | pid - Product ID for the device (optional) |
| 1907 | nrpacks - Max. number of packets per URB (default: 8) | 1890 | nrpacks - Max. number of packets per URB (default: 8) |
| 1891 | async_unlink - Use async unlink mode (default: yes) | ||
| 1908 | device_setup - Device specific magic number (optional) | 1892 | device_setup - Device specific magic number (optional) |
| 1909 | - Influence depends on the device | 1893 | - Influence depends on the device |
| 1910 | - Default: 0x0000 | 1894 | - Default: 0x0000 |
| @@ -1916,6 +1900,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 1916 | NB: nrpacks parameter can be modified dynamically via sysfs. | 1900 | NB: nrpacks parameter can be modified dynamically via sysfs. |
| 1917 | Don't put the value over 20. Changing via sysfs has no sanity | 1901 | Don't put the value over 20. Changing via sysfs has no sanity |
| 1918 | check. | 1902 | check. |
| 1903 | NB: async_unlink=0 would cause Oops. It remains just for | ||
| 1904 | debugging purpose (if any). | ||
| 1919 | NB: ignore_ctl_error=1 may help when you get an error at accessing | 1905 | NB: ignore_ctl_error=1 may help when you get an error at accessing |
| 1920 | the mixer element such as URB error -22. This happens on some | 1906 | the mixer element such as URB error -22. This happens on some |
| 1921 | buggy USB device or the controller. | 1907 | buggy USB device or the controller. |
| @@ -2046,7 +2032,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
| 2046 | Install the necessary firmware files in alsa-firmware package. | 2032 | Install the necessary firmware files in alsa-firmware package. |
| 2047 | When no hotplug fw loader is available, you need to load the | 2033 | When no hotplug fw loader is available, you need to load the |
| 2048 | firmware via vxloader utility in alsa-tools package. To invoke | 2034 | firmware via vxloader utility in alsa-tools package. To invoke |
| 2049 | vxloader automatically, add the following to /etc/modprobe.d/alsa.conf | 2035 | vxloader automatically, add the following to /etc/modprobe.conf |
| 2050 | 2036 | ||
| 2051 | install snd-vx222 /sbin/modprobe --first-time -i snd-vx222 && /usr/bin/vxloader | 2037 | install snd-vx222 /sbin/modprobe --first-time -i snd-vx222 && /usr/bin/vxloader |
| 2052 | 2038 | ||
| @@ -2170,10 +2156,10 @@ corresponds to the card index of ALSA. Usually, define this | |||
| 2170 | as the same card module. | 2156 | as the same card module. |
| 2171 | 2157 | ||
| 2172 | An example configuration for a single emu10k1 card is like below: | 2158 | An example configuration for a single emu10k1 card is like below: |
| 2173 | ----- /etc/modprobe.d/alsa.conf | 2159 | ----- /etc/modprobe.conf |
| 2174 | alias snd-card-0 snd-emu10k1 | 2160 | alias snd-card-0 snd-emu10k1 |
| 2175 | alias sound-slot-0 snd-emu10k1 | 2161 | alias sound-slot-0 snd-emu10k1 |
| 2176 | ----- /etc/modprobe.d/alsa.conf | 2162 | ----- /etc/modprobe.conf |
| 2177 | 2163 | ||
| 2178 | The available number of auto-loaded sound cards depends on the module | 2164 | The available number of auto-loaded sound cards depends on the module |
| 2179 | option "cards_limit" of snd module. As default it's set to 1. | 2165 | option "cards_limit" of snd module. As default it's set to 1. |
| @@ -2186,7 +2172,7 @@ cards is kept consistent. | |||
| 2186 | 2172 | ||
| 2187 | An example configuration for two sound cards is like below: | 2173 | An example configuration for two sound cards is like below: |
| 2188 | 2174 | ||
| 2189 | ----- /etc/modprobe.d/alsa.conf | 2175 | ----- /etc/modprobe.conf |
| 2190 | # ALSA portion | 2176 | # ALSA portion |
| 2191 | options snd cards_limit=2 | 2177 | options snd cards_limit=2 |
| 2192 | alias snd-card-0 snd-interwave | 2178 | alias snd-card-0 snd-interwave |
| @@ -2196,7 +2182,7 @@ options snd-ens1371 index=1 | |||
| 2196 | # OSS/Free portion | 2182 | # OSS/Free portion |
| 2197 | alias sound-slot-0 snd-interwave | 2183 | alias sound-slot-0 snd-interwave |
| 2198 | alias sound-slot-1 snd-ens1371 | 2184 | alias sound-slot-1 snd-ens1371 |
| 2199 | ----- /etc/modprobe.d/alsa.conf | 2185 | ----- /etc/modprobe.conf |
| 2200 | 2186 | ||
| 2201 | In this example, the interwave card is always loaded as the first card | 2187 | In this example, the interwave card is always loaded as the first card |
| 2202 | (index 0) and ens1371 as the second (index 1). | 2188 | (index 0) and ens1371 as the second (index 1). |
diff --git a/Documentation/sound/alsa/Audiophile-Usb.txt b/Documentation/sound/alsa/Audiophile-Usb.txt index 654dd3b694a..a4c53d8961e 100644 --- a/Documentation/sound/alsa/Audiophile-Usb.txt +++ b/Documentation/sound/alsa/Audiophile-Usb.txt | |||
| @@ -232,7 +232,7 @@ The parameter can be given: | |||
| 232 | # modprobe snd-usb-audio index=1 device_setup=0x09 | 232 | # modprobe snd-usb-audio index=1 device_setup=0x09 |
| 233 | 233 | ||
| 234 | * Or while configuring the modules options in your modules configuration file | 234 | * Or while configuring the modules options in your modules configuration file |
| 235 | (tipically a .conf file in /etc/modprobe.d/ directory: | 235 | - For Fedora distributions, edit the /etc/modprobe.conf file: |
| 236 | alias snd-card-1 snd-usb-audio | 236 | alias snd-card-1 snd-usb-audio |
| 237 | options snd-usb-audio index=1 device_setup=0x09 | 237 | options snd-usb-audio index=1 device_setup=0x09 |
| 238 | 238 | ||
| @@ -253,7 +253,7 @@ CAUTION when initializing the device | |||
| 253 | - first turn off the device | 253 | - first turn off the device |
| 254 | - de-register the snd-usb-audio module (modprobe -r) | 254 | - de-register the snd-usb-audio module (modprobe -r) |
| 255 | - change the device_setup parameter by changing the device_setup | 255 | - change the device_setup parameter by changing the device_setup |
| 256 | option in /etc/modprobe.d/*.conf | 256 | option in /etc/modprobe.conf |
| 257 | - turn on the device | 257 | - turn on the device |
| 258 | * A workaround for this last issue has been applied to kernel 2.6.23, but it may not | 258 | * A workaround for this last issue has been applied to kernel 2.6.23, but it may not |
| 259 | be enough to ensure the 'stability' of the device initialization. | 259 | be enough to ensure the 'stability' of the device initialization. |
diff --git a/Documentation/sound/alsa/Channel-Mapping-API.txt b/Documentation/sound/alsa/Channel-Mapping-API.txt deleted file mode 100644 index 3c43d1a4ca0..00000000000 --- a/Documentation/sound/alsa/Channel-Mapping-API.txt +++ /dev/null | |||
| @@ -1,153 +0,0 @@ | |||
| 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-Controls.txt b/Documentation/sound/alsa/HD-Audio-Controls.txt index e9621e349e1..1482035243e 100644 --- a/Documentation/sound/alsa/HD-Audio-Controls.txt +++ b/Documentation/sound/alsa/HD-Audio-Controls.txt | |||
| @@ -98,19 +98,3 @@ Conexant codecs | |||
| 98 | 98 | ||
| 99 | * Auto-Mute Mode | 99 | * Auto-Mute Mode |
| 100 | See Reatek codecs. | 100 | See Reatek codecs. |
| 101 | |||
| 102 | |||
| 103 | Analog codecs | ||
| 104 | -------------- | ||
| 105 | |||
| 106 | * Channel Mode | ||
| 107 | This is an enum control to change the surround-channel setup, | ||
| 108 | appears only when the surround channels are available. | ||
| 109 | It gives the number of channels to be used, "2ch", "4ch" and "6ch". | ||
| 110 | According to the configuration, this also controls the | ||
| 111 | jack-retasking of multi-I/O jacks. | ||
| 112 | |||
| 113 | * Independent HP | ||
| 114 | When this enum control is enabled, the headphone output is routed | ||
| 115 | from an individual stream (the third PCM such as hw:0,2) instead of | ||
| 116 | the primary stream. | ||
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index 16dfe57f173..f8961402a85 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
| @@ -8,31 +8,101 @@ ALC880 | |||
| 8 | 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out | 8 | 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out |
| 9 | 6stack 6-jack in back, 2-jack in front | 9 | 6stack 6-jack in back, 2-jack in front |
| 10 | 6stack-digout 6-jack with a SPDIF out | 10 | 6stack-digout 6-jack with a SPDIF out |
| 11 | w810 3-jack | ||
| 12 | z71v 3-jack (HP shared SPDIF) | ||
| 13 | asus 3-jack (ASUS Mobo) | ||
| 14 | asus-w1v ASUS W1V | ||
| 15 | asus-dig ASUS with SPDIF out | ||
| 16 | asus-dig2 ASUS with SPDIF out (using GPIO2) | ||
| 17 | uniwill 3-jack | ||
| 18 | fujitsu Fujitsu Laptops (Pi1536) | ||
| 19 | F1734 2-jack | ||
| 20 | lg LG laptop (m1 express dual) | ||
| 21 | lg-lw LG LW20/LW25 laptop | ||
| 22 | tcl TCL S700 | ||
| 23 | clevo Clevo laptops (m520G, m665n) | ||
| 24 | medion Medion Rim 2150 | ||
| 25 | test for testing/debugging purpose, almost all controls can be | ||
| 26 | adjusted. Appearing only when compiled with | ||
| 27 | $CONFIG_SND_DEBUG=y | ||
| 28 | auto auto-config reading BIOS (default) | ||
| 11 | 29 | ||
| 12 | ALC260 | 30 | ALC260 |
| 13 | ====== | 31 | ====== |
| 14 | N/A | 32 | hp HP machines |
| 33 | hp-3013 HP machines (3013-variant) | ||
| 34 | hp-dc7600 HP DC7600 | ||
| 35 | fujitsu Fujitsu S7020 | ||
| 36 | acer Acer TravelMate | ||
| 37 | will Will laptops (PB V7900) | ||
| 38 | replacer Replacer 672V | ||
| 39 | favorit100 Maxdata Favorit 100XS | ||
| 40 | basic fixed pin assignment (old default model) | ||
| 41 | test for testing/debugging purpose, almost all controls can | ||
| 42 | adjusted. Appearing only when compiled with | ||
| 43 | $CONFIG_SND_DEBUG=y | ||
| 44 | auto auto-config reading BIOS (default) | ||
| 15 | 45 | ||
| 16 | ALC262 | 46 | ALC262 |
| 17 | ====== | 47 | ====== |
| 18 | inv-dmic Inverted internal mic workaround | 48 | fujitsu Fujitsu Laptop |
| 49 | hp-bpc HP xw4400/6400/8400/9400 laptops | ||
| 50 | hp-bpc-d7000 HP BPC D7000 | ||
| 51 | hp-tc-t5735 HP Thin Client T5735 | ||
| 52 | hp-rp5700 HP RP5700 | ||
| 53 | benq Benq ED8 | ||
| 54 | benq-t31 Benq T31 | ||
| 55 | hippo Hippo (ATI) with jack detection, Sony UX-90s | ||
| 56 | hippo_1 Hippo (Benq) with jack detection | ||
| 57 | sony-assamd Sony ASSAMD | ||
| 58 | toshiba-s06 Toshiba S06 | ||
| 59 | toshiba-rx1 Toshiba RX1 | ||
| 60 | tyan Tyan Thunder n6650W (S2915-E) | ||
| 61 | ultra Samsung Q1 Ultra Vista model | ||
| 62 | lenovo-3000 Lenovo 3000 y410 | ||
| 63 | nec NEC Versa S9100 | ||
| 64 | basic fixed pin assignment w/o SPDIF | ||
| 65 | auto auto-config reading BIOS (default) | ||
| 19 | 66 | ||
| 20 | ALC267/268 | 67 | ALC267/268 |
| 21 | ========== | 68 | ========== |
| 22 | inv-dmic Inverted internal mic workaround | 69 | quanta-il1 Quanta IL1 mini-notebook |
| 70 | 3stack 3-stack model | ||
| 71 | toshiba Toshiba A205 | ||
| 72 | acer Acer laptops | ||
| 73 | acer-dmic Acer laptops with digital-mic | ||
| 74 | acer-aspire Acer Aspire One | ||
| 75 | dell Dell OEM laptops (Vostro 1200) | ||
| 76 | zepto Zepto laptops | ||
| 77 | test for testing/debugging purpose, almost all controls can | ||
| 78 | adjusted. Appearing only when compiled with | ||
| 79 | $CONFIG_SND_DEBUG=y | ||
| 80 | auto auto-config reading BIOS (default) | ||
| 23 | 81 | ||
| 24 | ALC269/270/275/276/280/282 | 82 | ALC269 |
| 25 | ====== | 83 | ====== |
| 84 | basic Basic preset | ||
| 85 | quanta Quanta FL1 | ||
| 26 | laptop-amic Laptops with analog-mic input | 86 | laptop-amic Laptops with analog-mic input |
| 27 | laptop-dmic Laptops with digital-mic input | 87 | laptop-dmic Laptops with digital-mic input |
| 28 | alc269-dmic Enable ALC269(VA) digital mic workaround | 88 | fujitsu FSC Amilo |
| 29 | alc271-dmic Enable ALC271X digital mic workaround | 89 | lifebook Fujitsu Lifebook S6420 |
| 30 | inv-dmic Inverted internal mic workaround | 90 | auto auto-config reading BIOS (default) |
| 31 | lenovo-dock Enables docking station I/O for some Lenovos | ||
| 32 | 91 | ||
| 33 | ALC662/663/272 | 92 | ALC662/663/272 |
| 34 | ============== | 93 | ============== |
| 35 | mario Chromebook mario model fixup | 94 | 3stack-dig 3-stack (2-channel) with SPDIF |
| 95 | 3stack-6ch 3-stack (6-channel) | ||
| 96 | 3stack-6ch-dig 3-stack (6-channel) with SPDIF | ||
| 97 | 5stack-dig 5-stack with SPDIF | ||
| 98 | lenovo-101e Lenovo laptop | ||
| 99 | eeepc-p701 ASUS Eeepc P701 | ||
| 100 | eeepc-ep20 ASUS Eeepc EP20 | ||
| 101 | ecs ECS/Foxconn mobo | ||
| 102 | m51va ASUS M51VA | ||
| 103 | g71v ASUS G71V | ||
| 104 | h13 ASUS H13 | ||
| 105 | g50v ASUS G50V | ||
| 36 | asus-mode1 ASUS | 106 | asus-mode1 ASUS |
| 37 | asus-mode2 ASUS | 107 | asus-mode2 ASUS |
| 38 | asus-mode3 ASUS | 108 | asus-mode3 ASUS |
| @@ -41,27 +111,92 @@ ALC662/663/272 | |||
| 41 | asus-mode6 ASUS | 111 | asus-mode6 ASUS |
| 42 | asus-mode7 ASUS | 112 | asus-mode7 ASUS |
| 43 | asus-mode8 ASUS | 113 | asus-mode8 ASUS |
| 44 | inv-dmic Inverted internal mic workaround | 114 | dell Dell with ALC272 |
| 115 | dell-zm1 Dell ZM1 with ALC272 | ||
| 116 | samsung-nc10 Samsung NC10 mini notebook | ||
| 117 | auto auto-config reading BIOS (default) | ||
| 45 | 118 | ||
| 46 | ALC680 | 119 | ALC680 |
| 47 | ====== | 120 | ====== |
| 48 | N/A | 121 | base Base model (ASUS NX90) |
| 122 | auto auto-config reading BIOS (default) | ||
| 49 | 123 | ||
| 50 | ALC882/883/885/888/889 | 124 | ALC882/883/885/888/889 |
| 51 | ====================== | 125 | ====================== |
| 52 | acer-aspire-4930g Acer Aspire 4930G/5930G/6530G/6930G/7730G | 126 | 3stack-dig 3-jack with SPDIF I/O |
| 53 | acer-aspire-8930g Acer Aspire 8330G/6935G | 127 | 6stack-dig 6-jack digital with SPDIF I/O |
| 54 | acer-aspire Acer Aspire others | 128 | arima Arima W820Di1 |
| 55 | inv-dmic Inverted internal mic workaround | 129 | targa Targa T8, MSI-1049 T8 |
| 56 | no-primary-hp VAIO Z workaround (for fixed speaker DAC) | 130 | asus-a7j ASUS A7J |
| 131 | asus-a7m ASUS A7M | ||
| 132 | macpro MacPro support | ||
| 133 | mb5 Macbook 5,1 | ||
| 134 | macmini3 Macmini 3,1 | ||
| 135 | mba21 Macbook Air 2,1 | ||
| 136 | mbp3 Macbook Pro rev3 | ||
| 137 | imac24 iMac 24'' with jack detection | ||
| 138 | imac91 iMac 9,1 | ||
| 139 | w2jc ASUS W2JC | ||
| 140 | 3stack-2ch-dig 3-jack with SPDIF I/O (ALC883) | ||
| 141 | alc883-6stack-dig 6-jack digital with SPDIF I/O (ALC883) | ||
| 142 | 3stack-6ch 3-jack 6-channel | ||
| 143 | 3stack-6ch-dig 3-jack 6-channel with SPDIF I/O | ||
| 144 | 6stack-dig-demo 6-jack digital for Intel demo board | ||
| 145 | acer Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc) | ||
| 146 | acer-aspire Acer Aspire 9810 | ||
| 147 | acer-aspire-4930g Acer Aspire 4930G | ||
| 148 | acer-aspire-6530g Acer Aspire 6530G | ||
| 149 | acer-aspire-7730g Acer Aspire 7730G | ||
| 150 | acer-aspire-8930g Acer Aspire 8930G | ||
| 151 | medion Medion Laptops | ||
| 152 | targa-dig Targa/MSI | ||
| 153 | targa-2ch-dig Targa/MSI with 2-channel | ||
| 154 | targa-8ch-dig Targa/MSI with 8-channel (MSI GX620) | ||
| 155 | laptop-eapd 3-jack with SPDIF I/O and EAPD (Clevo M540JE, M550JE) | ||
| 156 | lenovo-101e Lenovo 101E | ||
| 157 | lenovo-nb0763 Lenovo NB0763 | ||
| 158 | lenovo-ms7195-dig Lenovo MS7195 | ||
| 159 | lenovo-sky Lenovo Sky | ||
| 160 | haier-w66 Haier W66 | ||
| 161 | 3stack-hp HP machines with 3stack (Lucknow, Samba boards) | ||
| 162 | 6stack-dell Dell machines with 6stack (Inspiron 530) | ||
| 163 | mitac Mitac 8252D | ||
| 164 | clevo-m540r Clevo M540R (6ch + digital) | ||
| 165 | clevo-m720 Clevo M720 laptop series | ||
| 166 | fujitsu-pi2515 Fujitsu AMILO Pi2515 | ||
| 167 | fujitsu-xa3530 Fujitsu AMILO XA3530 | ||
| 168 | 3stack-6ch-intel Intel DG33* boards | ||
| 169 | intel-alc889a Intel IbexPeak with ALC889A | ||
| 170 | intel-x58 Intel DX58 with ALC889 | ||
| 171 | asus-p5q ASUS P5Q-EM boards | ||
| 172 | mb31 MacBook 3,1 | ||
| 173 | sony-vaio-tt Sony VAIO TT | ||
| 174 | auto auto-config reading BIOS (default) | ||
| 57 | 175 | ||
| 58 | ALC861/660 | 176 | ALC861/660 |
| 59 | ========== | 177 | ========== |
| 60 | N/A | 178 | 3stack 3-jack |
| 179 | 3stack-dig 3-jack with SPDIF I/O | ||
| 180 | 6stack-dig 6-jack with SPDIF I/O | ||
| 181 | 3stack-660 3-jack (for ALC660) | ||
| 182 | uniwill-m31 Uniwill M31 laptop | ||
| 183 | toshiba Toshiba laptop support | ||
| 184 | asus Asus laptop support | ||
| 185 | asus-laptop ASUS F2/F3 laptops | ||
| 186 | auto auto-config reading BIOS (default) | ||
| 61 | 187 | ||
| 62 | ALC861VD/660VD | 188 | ALC861VD/660VD |
| 63 | ============== | 189 | ============== |
| 64 | N/A | 190 | 3stack 3-jack |
| 191 | 3stack-dig 3-jack with SPDIF OUT | ||
| 192 | 6stack-dig 6-jack with SPDIF OUT | ||
| 193 | 3stack-660 3-jack (for ALC660VD) | ||
| 194 | 3stack-660-digout 3-jack with SPDIF OUT (for ALC660VD) | ||
| 195 | lenovo Lenovo 3000 C200 | ||
| 196 | dallas Dallas laptops | ||
| 197 | hp HP TX1000 | ||
| 198 | asus-v1s ASUS V1Sn | ||
| 199 | auto auto-config reading BIOS (default) | ||
| 65 | 200 | ||
| 66 | CMI9880 | 201 | CMI9880 |
| 67 | ======= | 202 | ======= |
| @@ -74,8 +209,7 @@ CMI9880 | |||
| 74 | 209 | ||
| 75 | AD1882 / AD1882A | 210 | AD1882 / AD1882A |
| 76 | ================ | 211 | ================ |
| 77 | 3stack 3-stack mode | 212 | 3stack 3-stack mode (default) |
| 78 | 3stack-automute 3-stack with automute front HP (default) | ||
| 79 | 6stack 6-stack mode | 213 | 6stack 6-stack mode |
| 80 | 214 | ||
| 81 | AD1884A / AD1883 / AD1984A / AD1984B | 215 | AD1884A / AD1883 / AD1984A / AD1984B |
| @@ -155,6 +289,7 @@ Conexant 5051 | |||
| 155 | hp-dv6736 HP dv6736 | 289 | hp-dv6736 HP dv6736 |
| 156 | hp-f700 HP Compaq Presario F700 | 290 | hp-f700 HP Compaq Presario F700 |
| 157 | ideapad Lenovo IdeaPad laptop | 291 | ideapad Lenovo IdeaPad laptop |
| 292 | lenovo-x200 Lenovo X200 laptop | ||
| 158 | toshiba Toshiba Satellite M300 | 293 | toshiba Toshiba Satellite M300 |
| 159 | 294 | ||
| 160 | Conexant 5066 | 295 | Conexant 5066 |
| @@ -274,11 +409,8 @@ STAC92HD83* | |||
| 274 | mic-ref Reference board with power management for ports | 409 | mic-ref Reference board with power management for ports |
| 275 | dell-s14 Dell laptop | 410 | dell-s14 Dell laptop |
| 276 | dell-vostro-3500 Dell Vostro 3500 laptop | 411 | dell-vostro-3500 Dell Vostro 3500 laptop |
| 412 | hp HP laptops with (inverted) mute-LED | ||
| 277 | hp-dv7-4000 HP dv-7 4000 | 413 | hp-dv7-4000 HP dv-7 4000 |
| 278 | hp_cNB11_intquad HP CNB models with 4 speakers | ||
| 279 | hp-zephyr HP Zephyr | ||
| 280 | hp-led HP with broken BIOS for mute LED | ||
| 281 | hp-inv-led HP with broken BIOS for inverted mute LED | ||
| 282 | auto BIOS setup (default) | 414 | auto BIOS setup (default) |
| 283 | 415 | ||
| 284 | STAC9872 | 416 | STAC9872 |
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt index 7813c06a5c7..c82beb00763 100644 --- a/Documentation/sound/alsa/HD-Audio.txt +++ b/Documentation/sound/alsa/HD-Audio.txt | |||
| @@ -59,12 +59,7 @@ a case, you can change the default method via `position_fix` option. | |||
| 59 | `position_fix=1` means to use LPIB method explicitly. | 59 | `position_fix=1` means to use LPIB method explicitly. |
| 60 | `position_fix=2` means to use the position-buffer. | 60 | `position_fix=2` means to use the position-buffer. |
| 61 | `position_fix=3` means to use a combination of both methods, needed | 61 | `position_fix=3` means to use a combination of both methods, needed |
| 62 | for some VIA controllers. The capture stream position is corrected | 62 | for some VIA and ATI controllers. 0 is the default value for all other |
| 63 | by comparing both LPIB and position-buffer values. | ||
| 64 | `position_fix=4` is another combination available for all controllers, | ||
| 65 | and uses LPIB for the playback and the position-buffer for the capture | ||
| 66 | streams. | ||
| 67 | 0 is the default value for all other | ||
| 68 | controllers, the automatic check and fallback to LPIB as described in | 63 | controllers, the automatic check and fallback to LPIB as described in |
| 69 | the above. If you get a problem of repeated sounds, this option might | 64 | the above. If you get a problem of repeated sounds, this option might |
| 70 | help. | 65 | help. |
| @@ -452,10 +447,7 @@ The file needs to have a line `[codec]`. The next line should contain | |||
| 452 | three numbers indicating the codec vendor-id (0x12345678 in the | 447 | three numbers indicating the codec vendor-id (0x12345678 in the |
| 453 | example), the codec subsystem-id (0xabcd1234) and the address (2) of | 448 | example), the codec subsystem-id (0xabcd1234) and the address (2) of |
| 454 | the codec. The rest patch entries are applied to this specified codec | 449 | the codec. The rest patch entries are applied to this specified codec |
| 455 | until another codec entry is given. Passing 0 or a negative number to | 450 | until another codec entry is given. |
| 456 | the first or the second value will make the check of the corresponding | ||
| 457 | field be skipped. It'll be useful for really broken devices that don't | ||
| 458 | initialize SSID properly. | ||
| 459 | 451 | ||
| 460 | The `[model]` line allows to change the model name of the each codec. | 452 | The `[model]` line allows to change the model name of the each codec. |
| 461 | In the example above, it will be changed to model=auto. | 453 | In the example above, it will be changed to model=auto. |
| @@ -499,7 +491,7 @@ Also, the codec chip name can be rewritten via `[chip_name]` line. | |||
| 499 | The hd-audio driver reads the file via request_firmware(). Thus, | 491 | The hd-audio driver reads the file via request_firmware(). Thus, |
| 500 | a patch file has to be located on the appropriate firmware path, | 492 | a patch file has to be located on the appropriate firmware path, |
| 501 | typically, /lib/firmware. For example, when you pass the option | 493 | typically, /lib/firmware. For example, when you pass the option |
| 502 | `patch=hda-init.fw`, the file /lib/firmware/hda-init.fw must be | 494 | `patch=hda-init.fw`, the file /lib/firmware/hda-init-fw must be |
| 503 | present. | 495 | present. |
| 504 | 496 | ||
| 505 | The patch module option is specific to each card instance, and you | 497 | The patch module option is specific to each card instance, and you |
| @@ -532,59 +524,11 @@ power-saving. See /sys/module/snd_hda_intel/parameters/power_save to | |||
| 532 | check the current value. If it's non-zero, the feature is turned on. | 524 | check the current value. If it's non-zero, the feature is turned on. |
| 533 | 525 | ||
| 534 | 526 | ||
| 535 | Tracepoints | ||
| 536 | ~~~~~~~~~~~ | ||
| 537 | The hd-audio driver gives a few basic tracepoints. | ||
| 538 | `hda:hda_send_cmd` traces each CORB write while `hda:hda_get_response` | ||
| 539 | traces the response from RIRB (only when read from the codec driver). | ||
| 540 | `hda:hda_bus_reset` traces the bus-reset due to fatal error, etc, | ||
| 541 | `hda:hda_unsol_event` traces the unsolicited events, and | ||
| 542 | `hda:hda_power_down` and `hda:hda_power_up` trace the power down/up | ||
| 543 | via power-saving behavior. | ||
| 544 | |||
| 545 | Enabling all tracepoints can be done like | ||
| 546 | ------------------------------------------------------------------------ | ||
| 547 | # echo 1 > /sys/kernel/debug/tracing/events/hda/enable | ||
| 548 | ------------------------------------------------------------------------ | ||
| 549 | then after some commands, you can traces from | ||
| 550 | /sys/kernel/debug/tracing/trace file. For example, when you want to | ||
| 551 | trace what codec command is sent, enable the tracepoint like: | ||
| 552 | ------------------------------------------------------------------------ | ||
| 553 | # cat /sys/kernel/debug/tracing/trace | ||
| 554 | # tracer: nop | ||
| 555 | # | ||
| 556 | # TASK-PID CPU# TIMESTAMP FUNCTION | ||
| 557 | # | | | | | | ||
| 558 | <...>-7807 [002] 105147.774889: hda_send_cmd: [0:0] val=e3a019 | ||
| 559 | <...>-7807 [002] 105147.774893: hda_send_cmd: [0:0] val=e39019 | ||
| 560 | <...>-7807 [002] 105147.999542: hda_send_cmd: [0:0] val=e3a01a | ||
| 561 | <...>-7807 [002] 105147.999543: hda_send_cmd: [0:0] val=e3901a | ||
| 562 | <...>-26764 [001] 349222.837143: hda_send_cmd: [0:0] val=e3a019 | ||
| 563 | <...>-26764 [001] 349222.837148: hda_send_cmd: [0:0] val=e39019 | ||
| 564 | <...>-26764 [001] 349223.058539: hda_send_cmd: [0:0] val=e3a01a | ||
| 565 | <...>-26764 [001] 349223.058541: hda_send_cmd: [0:0] val=e3901a | ||
| 566 | ------------------------------------------------------------------------ | ||
| 567 | Here `[0:0]` indicates the card number and the codec address, and | ||
| 568 | `val` shows the value sent to the codec, respectively. The value is | ||
| 569 | a packed value, and you can decode it via hda-decode-verb program | ||
| 570 | included in hda-emu package below. For example, the value e3a019 is | ||
| 571 | to set the left output-amp value to 25. | ||
| 572 | ------------------------------------------------------------------------ | ||
| 573 | % hda-decode-verb 0xe3a019 | ||
| 574 | raw value = 0x00e3a019 | ||
| 575 | cid = 0, nid = 0x0e, verb = 0x3a0, parm = 0x19 | ||
| 576 | raw value: verb = 0x3a0, parm = 0x19 | ||
| 577 | verbname = set_amp_gain_mute | ||
| 578 | amp raw val = 0xa019 | ||
| 579 | output, left, idx=0, mute=0, val=25 | ||
| 580 | ------------------------------------------------------------------------ | ||
| 581 | |||
| 582 | |||
| 583 | Development Tree | 527 | Development Tree |
| 584 | ~~~~~~~~~~~~~~~~ | 528 | ~~~~~~~~~~~~~~~~ |
| 585 | The latest development codes for HD-audio are found on sound git tree: | 529 | The latest development codes for HD-audio are found on sound git tree: |
| 586 | 530 | ||
| 587 | - git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git | 531 | - git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git |
| 588 | 532 | ||
| 589 | The master branch or for-next branches can be used as the main | 533 | The master branch or for-next branches can be used as the main |
| 590 | development branches in general while the HD-audio specific patches | 534 | development branches in general while the HD-audio specific patches |
| @@ -599,7 +543,7 @@ is, installed via the usual spells: configure, make and make | |||
| 599 | install(-modules). See INSTALL in the package. The snapshot tarballs | 543 | install(-modules). See INSTALL in the package. The snapshot tarballs |
| 600 | are found at: | 544 | are found at: |
| 601 | 545 | ||
| 602 | - ftp://ftp.suse.com/pub/people/tiwai/snapshot/ | 546 | - ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/ |
| 603 | 547 | ||
| 604 | 548 | ||
| 605 | Sending a Bug Report | 549 | Sending a Bug Report |
| @@ -701,7 +645,7 @@ via hda-verb won't change the mixer value. | |||
| 701 | 645 | ||
| 702 | The hda-verb program is found in the ftp directory: | 646 | The hda-verb program is found in the ftp directory: |
| 703 | 647 | ||
| 704 | - ftp://ftp.suse.com/pub/people/tiwai/misc/ | 648 | - ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/misc/ |
| 705 | 649 | ||
| 706 | Also a git repository is available: | 650 | Also a git repository is available: |
| 707 | 651 | ||
| @@ -769,7 +713,7 @@ operation, the jack plugging simulation, etc. | |||
| 769 | 713 | ||
| 770 | The package is found in: | 714 | The package is found in: |
| 771 | 715 | ||
| 772 | - ftp://ftp.suse.com/pub/people/tiwai/misc/ | 716 | - ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/misc/ |
| 773 | 717 | ||
| 774 | A git repository is available: | 718 | A git repository is available: |
| 775 | 719 | ||
diff --git a/Documentation/sound/alsa/MIXART.txt b/Documentation/sound/alsa/MIXART.txt index 4ee35b4fbe4..ef42c44fa1f 100644 --- a/Documentation/sound/alsa/MIXART.txt +++ b/Documentation/sound/alsa/MIXART.txt | |||
| @@ -76,9 +76,9 @@ FIRMWARE | |||
| 76 | when CONFIG_FW_LOADER is set. The mixartloader is necessary only | 76 | when CONFIG_FW_LOADER is set. The mixartloader is necessary only |
| 77 | for older versions or when you build the driver into kernel.] | 77 | for older versions or when you build the driver into kernel.] |
| 78 | 78 | ||
| 79 | For loading the firmware automatically after the module is loaded, use a | 79 | For loading the firmware automatically after the module is loaded, use |
| 80 | install command. For example, add the following entry to | 80 | the post-install command. For example, add the following entry to |
| 81 | /etc/modprobe.d/mixart.conf for miXart driver: | 81 | /etc/modprobe.conf for miXart driver: |
| 82 | 82 | ||
| 83 | install snd-mixart /sbin/modprobe --first-time -i snd-mixart && \ | 83 | install snd-mixart /sbin/modprobe --first-time -i snd-mixart && \ |
| 84 | /usr/bin/mixartloader | 84 | /usr/bin/mixartloader |
diff --git a/Documentation/sound/alsa/OSS-Emulation.txt b/Documentation/sound/alsa/OSS-Emulation.txt index 152ca2a3f1b..022aaeb0e9d 100644 --- a/Documentation/sound/alsa/OSS-Emulation.txt +++ b/Documentation/sound/alsa/OSS-Emulation.txt | |||
| @@ -19,7 +19,7 @@ the card number and the minor unit number. Usually you don't have to | |||
| 19 | define these aliases by yourself. | 19 | define these aliases by yourself. |
| 20 | 20 | ||
| 21 | Only necessary step for auto-loading of OSS modules is to define the | 21 | Only necessary step for auto-loading of OSS modules is to define the |
| 22 | card alias in /etc/modprobe.d/alsa.conf, such as | 22 | card alias in /etc/modprobe.conf, such as |
| 23 | 23 | ||
| 24 | alias sound-slot-0 snd-emu10k1 | 24 | alias sound-slot-0 snd-emu10k1 |
| 25 | 25 | ||
diff --git a/Documentation/sound/alsa/compress_offload.txt b/Documentation/sound/alsa/compress_offload.txt deleted file mode 100644 index 90e9b3a11ab..00000000000 --- a/Documentation/sound/alsa/compress_offload.txt +++ /dev/null | |||
| @@ -1,188 +0,0 @@ | |||
| 1 | compress_offload.txt | ||
| 2 | ===================== | ||
| 3 | Pierre-Louis.Bossart <pierre-louis.bossart@linux.intel.com> | ||
| 4 | Vinod Koul <vinod.koul@linux.intel.com> | ||
| 5 | |||
| 6 | Overview | ||
| 7 | |||
| 8 | Since its early days, the ALSA API was defined with PCM support or | ||
| 9 | constant bitrates payloads such as IEC61937 in mind. Arguments and | ||
| 10 | returned values in frames are the norm, making it a challenge to | ||
| 11 | extend the existing API to compressed data streams. | ||
| 12 | |||
| 13 | In recent years, audio digital signal processors (DSP) were integrated | ||
| 14 | in system-on-chip designs, and DSPs are also integrated in audio | ||
| 15 | codecs. Processing compressed data on such DSPs results in a dramatic | ||
| 16 | reduction of power consumption compared to host-based | ||
| 17 | processing. Support for such hardware has not been very good in Linux, | ||
| 18 | mostly because of a lack of a generic API available in the mainline | ||
| 19 | kernel. | ||
| 20 | |||
| 21 | Rather than requiring a compatibility break with an API change of the | ||
| 22 | ALSA PCM interface, a new 'Compressed Data' API is introduced to | ||
| 23 | provide a control and data-streaming interface for audio DSPs. | ||
| 24 | |||
| 25 | The design of this API was inspired by the 2-year experience with the | ||
| 26 | Intel Moorestown SOC, with many corrections required to upstream the | ||
| 27 | API in the mainline kernel instead of the staging tree and make it | ||
| 28 | usable by others. | ||
| 29 | |||
| 30 | Requirements | ||
| 31 | |||
| 32 | The main requirements are: | ||
| 33 | |||
| 34 | - separation between byte counts and time. Compressed formats may have | ||
| 35 | a header per file, per frame, or no header at all. The payload size | ||
| 36 | may vary from frame-to-frame. As a result, it is not possible to | ||
| 37 | estimate reliably the duration of audio buffers when handling | ||
| 38 | compressed data. Dedicated mechanisms are required to allow for | ||
| 39 | reliable audio-video synchronization, which requires precise | ||
| 40 | reporting of the number of samples rendered at any given time. | ||
| 41 | |||
| 42 | - Handling of multiple formats. PCM data only requires a specification | ||
| 43 | of the sampling rate, number of channels and bits per sample. In | ||
| 44 | contrast, compressed data comes in a variety of formats. Audio DSPs | ||
| 45 | may also provide support for a limited number of audio encoders and | ||
| 46 | decoders embedded in firmware, or may support more choices through | ||
| 47 | dynamic download of libraries. | ||
| 48 | |||
| 49 | - Focus on main formats. This API provides support for the most | ||
| 50 | popular formats used for audio and video capture and playback. It is | ||
| 51 | likely that as audio compression technology advances, new formats | ||
| 52 | will be added. | ||
| 53 | |||
| 54 | - Handling of multiple configurations. Even for a given format like | ||
| 55 | AAC, some implementations may support AAC multichannel but HE-AAC | ||
| 56 | stereo. Likewise WMA10 level M3 may require too much memory and cpu | ||
| 57 | cycles. The new API needs to provide a generic way of listing these | ||
| 58 | formats. | ||
| 59 | |||
| 60 | - Rendering/Grabbing only. This API does not provide any means of | ||
| 61 | hardware acceleration, where PCM samples are provided back to | ||
| 62 | user-space for additional processing. This API focuses instead on | ||
| 63 | streaming compressed data to a DSP, with the assumption that the | ||
| 64 | decoded samples are routed to a physical output or logical back-end. | ||
| 65 | |||
| 66 | - Complexity hiding. Existing user-space multimedia frameworks all | ||
| 67 | have existing enums/structures for each compressed format. This new | ||
| 68 | API assumes the existence of a platform-specific compatibility layer | ||
| 69 | to expose, translate and make use of the capabilities of the audio | ||
| 70 | DSP, eg. Android HAL or PulseAudio sinks. By construction, regular | ||
| 71 | applications are not supposed to make use of this API. | ||
| 72 | |||
| 73 | |||
| 74 | Design | ||
| 75 | |||
| 76 | The new API shares a number of concepts with with the PCM API for flow | ||
| 77 | control. Start, pause, resume, drain and stop commands have the same | ||
| 78 | semantics no matter what the content is. | ||
| 79 | |||
| 80 | The concept of memory ring buffer divided in a set of fragments is | ||
| 81 | borrowed from the ALSA PCM API. However, only sizes in bytes can be | ||
| 82 | specified. | ||
| 83 | |||
| 84 | Seeks/trick modes are assumed to be handled by the host. | ||
| 85 | |||
| 86 | The notion of rewinds/forwards is not supported. Data committed to the | ||
| 87 | ring buffer cannot be invalidated, except when dropping all buffers. | ||
| 88 | |||
| 89 | The Compressed Data API does not make any assumptions on how the data | ||
| 90 | is transmitted to the audio DSP. DMA transfers from main memory to an | ||
| 91 | embedded audio cluster or to a SPI interface for external DSPs are | ||
| 92 | possible. As in the ALSA PCM case, a core set of routines is exposed; | ||
| 93 | each driver implementer will have to write support for a set of | ||
| 94 | mandatory routines and possibly make use of optional ones. | ||
| 95 | |||
| 96 | The main additions are | ||
| 97 | |||
| 98 | - get_caps | ||
| 99 | This routine returns the list of audio formats supported. Querying the | ||
| 100 | codecs on a capture stream will return encoders, decoders will be | ||
| 101 | listed for playback streams. | ||
| 102 | |||
| 103 | - get_codec_caps For each codec, this routine returns a list of | ||
| 104 | capabilities. The intent is to make sure all the capabilities | ||
| 105 | correspond to valid settings, and to minimize the risks of | ||
| 106 | configuration failures. For example, for a complex codec such as AAC, | ||
| 107 | the number of channels supported may depend on a specific profile. If | ||
| 108 | the capabilities were exposed with a single descriptor, it may happen | ||
| 109 | that a specific combination of profiles/channels/formats may not be | ||
| 110 | supported. Likewise, embedded DSPs have limited memory and cpu cycles, | ||
| 111 | it is likely that some implementations make the list of capabilities | ||
| 112 | dynamic and dependent on existing workloads. In addition to codec | ||
| 113 | settings, this routine returns the minimum buffer size handled by the | ||
| 114 | implementation. This information can be a function of the DMA buffer | ||
| 115 | sizes, the number of bytes required to synchronize, etc, and can be | ||
| 116 | used by userspace to define how much needs to be written in the ring | ||
| 117 | buffer before playback can start. | ||
| 118 | |||
| 119 | - set_params | ||
| 120 | This routine sets the configuration chosen for a specific codec. The | ||
| 121 | most important field in the parameters is the codec type; in most | ||
| 122 | cases decoders will ignore other fields, while encoders will strictly | ||
| 123 | comply to the settings | ||
| 124 | |||
| 125 | - get_params | ||
| 126 | This routines returns the actual settings used by the DSP. Changes to | ||
| 127 | the settings should remain the exception. | ||
| 128 | |||
| 129 | - get_timestamp | ||
| 130 | The timestamp becomes a multiple field structure. It lists the number | ||
| 131 | of bytes transferred, the number of samples processed and the number | ||
| 132 | of samples rendered/grabbed. All these values can be used to determine | ||
| 133 | the avarage bitrate, figure out if the ring buffer needs to be | ||
| 134 | refilled or the delay due to decoding/encoding/io on the DSP. | ||
| 135 | |||
| 136 | Note that the list of codecs/profiles/modes was derived from the | ||
| 137 | OpenMAX AL specification instead of reinventing the wheel. | ||
| 138 | Modifications include: | ||
| 139 | - Addition of FLAC and IEC formats | ||
| 140 | - Merge of encoder/decoder capabilities | ||
| 141 | - Profiles/modes listed as bitmasks to make descriptors more compact | ||
| 142 | - Addition of set_params for decoders (missing in OpenMAX AL) | ||
| 143 | - Addition of AMR/AMR-WB encoding modes (missing in OpenMAX AL) | ||
| 144 | - Addition of format information for WMA | ||
| 145 | - Addition of encoding options when required (derived from OpenMAX IL) | ||
| 146 | - Addition of rateControlSupported (missing in OpenMAX AL) | ||
| 147 | |||
| 148 | Not supported: | ||
| 149 | |||
| 150 | - Support for VoIP/circuit-switched calls is not the target of this | ||
| 151 | API. Support for dynamic bit-rate changes would require a tight | ||
| 152 | coupling between the DSP and the host stack, limiting power savings. | ||
| 153 | |||
| 154 | - Packet-loss concealment is not supported. This would require an | ||
| 155 | additional interface to let the decoder synthesize data when frames | ||
| 156 | are lost during transmission. This may be added in the future. | ||
| 157 | |||
| 158 | - Volume control/routing is not handled by this API. Devices exposing a | ||
| 159 | compressed data interface will be considered as regular ALSA devices; | ||
| 160 | volume changes and routing information will be provided with regular | ||
| 161 | ALSA kcontrols. | ||
| 162 | |||
| 163 | - Embedded audio effects. Such effects should be enabled in the same | ||
| 164 | manner, no matter if the input was PCM or compressed. | ||
| 165 | |||
| 166 | - multichannel IEC encoding. Unclear if this is required. | ||
| 167 | |||
| 168 | - Encoding/decoding acceleration is not supported as mentioned | ||
| 169 | above. It is possible to route the output of a decoder to a capture | ||
| 170 | stream, or even implement transcoding capabilities. This routing | ||
| 171 | would be enabled with ALSA kcontrols. | ||
| 172 | |||
| 173 | - Audio policy/resource management. This API does not provide any | ||
| 174 | hooks to query the utilization of the audio DSP, nor any premption | ||
| 175 | mechanisms. | ||
| 176 | |||
| 177 | - No notion of underun/overrun. Since the bytes written are compressed | ||
| 178 | in nature and data written/read doesn't translate directly to | ||
| 179 | rendered output in time, this does not deal with underrun/overun and | ||
| 180 | maybe dealt in user-library | ||
| 181 | |||
| 182 | Credits: | ||
| 183 | - Mark Brown and Liam Girdwood for discussions on the need for this API | ||
| 184 | - Harsha Priya for her work on intel_sst compressed API | ||
| 185 | - Rakesh Ughreja for valuable feedback | ||
| 186 | - Sing Nallasellan, Sikkandar Madar and Prasanna Samaga for | ||
| 187 | demonstrating and quantifying the benefits of audio offload on a | ||
| 188 | real platform. | ||
diff --git a/Documentation/sound/alsa/hdspm.txt b/Documentation/sound/alsa/hdspm.txt index 7ba31948dea..7a67ff71a9f 100644 --- a/Documentation/sound/alsa/hdspm.txt +++ b/Documentation/sound/alsa/hdspm.txt | |||
| @@ -359,4 +359,4 @@ Calling Parameter: | |||
| 359 | enable_monitor int array (min = 1, max = 8), | 359 | enable_monitor int array (min = 1, max = 8), |
| 360 | "Enable Analog Out on Channel 63/64 by default." | 360 | "Enable Analog Out on Channel 63/64 by default." |
| 361 | 361 | ||
| 362 | note: here the analog output is enabled (but not routed). | 362 | note: here the analog output is enabled (but not routed). \ No newline at end of file |
diff --git a/Documentation/sound/alsa/soc/machine.txt b/Documentation/sound/alsa/soc/machine.txt index d50c14df341..3e2ec9cbf39 100644 --- a/Documentation/sound/alsa/soc/machine.txt +++ b/Documentation/sound/alsa/soc/machine.txt | |||
| @@ -50,7 +50,8 @@ Machine DAI Configuration | |||
| 50 | The machine DAI configuration glues all the codec and CPU DAIs together. It can | 50 | The machine DAI configuration glues all the codec and CPU DAIs together. It can |
| 51 | also be used to set up the DAI system clock and for any machine related DAI | 51 | also be used to set up the DAI system clock and for any machine related DAI |
| 52 | initialisation e.g. the machine audio map can be connected to the codec audio | 52 | initialisation e.g. the machine audio map can be connected to the codec audio |
| 53 | map, unconnected codec pins can be set as such. | 53 | map, unconnected codec pins can be set as such. Please see corgi.c, spitz.c |
| 54 | for examples. | ||
| 54 | 55 | ||
| 55 | struct snd_soc_dai_link is used to set up each DAI in your machine. e.g. | 56 | struct snd_soc_dai_link is used to set up each DAI in your machine. e.g. |
| 56 | 57 | ||
| @@ -82,7 +83,8 @@ Machine Power Map | |||
| 82 | The machine driver can optionally extend the codec power map and to become an | 83 | The machine driver can optionally extend the codec power map and to become an |
| 83 | audio power map of the audio subsystem. This allows for automatic power up/down | 84 | audio power map of the audio subsystem. This allows for automatic power up/down |
| 84 | of speaker/HP amplifiers, etc. Codec pins can be connected to the machines jack | 85 | of speaker/HP amplifiers, etc. Codec pins can be connected to the machines jack |
| 85 | sockets in the machine init function. | 86 | sockets in the machine init function. See soc/pxa/spitz.c and dapm.txt for |
| 87 | details. | ||
| 86 | 88 | ||
| 87 | 89 | ||
| 88 | Machine Controls | 90 | Machine Controls |
