aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt8
-rw-r--r--Documentation/sound/alsa/HD-Audio.txt7
-rw-r--r--sound/pci/hda/hda_intel.c10
3 files changed, 22 insertions, 3 deletions
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 936699e4f04b..9af64c508ab4 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -860,7 +860,8 @@ 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 (0 = auto, 1 = use LPIB, 2 = POSBUF,
864 3 = VIACOMBO, 4 = COMBO)
864 probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) 865 probe_mask - Bitmask to probe codecs (default = -1, meaning all slots)
865 When the bit 8 (0x100) is set, the lower 8 bits are used 866 When the bit 8 (0x100) is set, the lower 8 bits are used
866 as the "fixed" codec slots; i.e. the driver probes the 867 as the "fixed" codec slots; i.e. the driver probes the
@@ -925,6 +926,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
925 (Usually SD_LPIB register is more accurate than the 926 (Usually SD_LPIB register is more accurate than the
926 position buffer.) 927 position buffer.)
927 928
929 position_fix=3 is specific to VIA devices. The position
930 of the capture stream is checked from both LPIB and POSBUF
931 values. position_fix=4 is a combination mode, using LPIB
932 for playback and POSBUF for capture.
933
928 NB: If you get many "azx_get_response timeout" messages at 934 NB: If you get many "azx_get_response timeout" messages at
929 loading, it's likely a problem of interrupts (e.g. ACPI irq 935 loading, it's likely a problem of interrupts (e.g. ACPI irq
930 routing). Try to boot with options like "pci=noacpi". Also, you 936 routing). Try to boot with options like "pci=noacpi". Also, you
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt
index 91fee3b45fb8..7813c06a5c71 100644
--- a/Documentation/sound/alsa/HD-Audio.txt
+++ b/Documentation/sound/alsa/HD-Audio.txt
@@ -59,7 +59,12 @@ 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
62for some VIA and ATI controllers. 0 is the default value for all other 62for some VIA controllers. The capture stream position is corrected
63by comparing both LPIB and position-buffer values.
64`position_fix=4` is another combination available for all controllers,
65and uses LPIB for the playback and the position-buffer for the capture
66streams.
670 is the default value for all other
63controllers, the automatic check and fallback to LPIB as described in 68controllers, the automatic check and fallback to LPIB as described in
64the above. If you get a problem of repeated sounds, this option might 69the above. If you get a problem of repeated sounds, this option might
65help. 70help.
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index e354c1616541..6e958bf94191 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -84,7 +84,7 @@ module_param_array(model, charp, NULL, 0444);
84MODULE_PARM_DESC(model, "Use the given board model."); 84MODULE_PARM_DESC(model, "Use the given board model.");
85module_param_array(position_fix, int, NULL, 0444); 85module_param_array(position_fix, int, NULL, 0444);
86MODULE_PARM_DESC(position_fix, "DMA pointer read method." 86MODULE_PARM_DESC(position_fix, "DMA pointer read method."
87 "(0 = auto, 1 = LPIB, 2 = POSBUF, 3 = VIACOMBO)."); 87 "(0 = auto, 1 = LPIB, 2 = POSBUF, 3 = VIACOMBO, 4 = COMBO).");
88module_param_array(bdl_pos_adj, int, NULL, 0644); 88module_param_array(bdl_pos_adj, int, NULL, 0644);
89MODULE_PARM_DESC(bdl_pos_adj, "BDL position adjustment offset."); 89MODULE_PARM_DESC(bdl_pos_adj, "BDL position adjustment offset.");
90module_param_array(probe_mask, int, NULL, 0444); 90module_param_array(probe_mask, int, NULL, 0444);
@@ -330,6 +330,7 @@ enum {
330 POS_FIX_LPIB, 330 POS_FIX_LPIB,
331 POS_FIX_POSBUF, 331 POS_FIX_POSBUF,
332 POS_FIX_VIACOMBO, 332 POS_FIX_VIACOMBO,
333 POS_FIX_COMBO,
333}; 334};
334 335
335/* Defines for ATI HD Audio support in SB450 south bridge */ 336/* Defines for ATI HD Audio support in SB450 south bridge */
@@ -2520,6 +2521,7 @@ static int __devinit check_position_fix(struct azx *chip, int fix)
2520 case POS_FIX_LPIB: 2521 case POS_FIX_LPIB:
2521 case POS_FIX_POSBUF: 2522 case POS_FIX_POSBUF:
2522 case POS_FIX_VIACOMBO: 2523 case POS_FIX_VIACOMBO:
2524 case POS_FIX_COMBO:
2523 return fix; 2525 return fix;
2524 } 2526 }
2525 2527
@@ -2699,6 +2701,12 @@ static int __devinit azx_create(struct snd_card *card, struct pci_dev *pci,
2699 2701
2700 chip->position_fix[0] = chip->position_fix[1] = 2702 chip->position_fix[0] = chip->position_fix[1] =
2701 check_position_fix(chip, position_fix[dev]); 2703 check_position_fix(chip, position_fix[dev]);
2704 /* combo mode uses LPIB for playback */
2705 if (chip->position_fix[0] == POS_FIX_COMBO) {
2706 chip->position_fix[0] = POS_FIX_LPIB;
2707 chip->position_fix[1] = POS_FIX_AUTO;
2708 }
2709
2702 check_probe_mask(chip, dev); 2710 check_probe_mask(chip, dev);
2703 2711
2704 chip->single_cmd = single_cmd; 2712 chip->single_cmd = single_cmd;