aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_intel.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-02-28 05:58:40 -0500
committerTakashi Iwai <tiwai@suse.de>2012-02-28 06:18:15 -0500
commita6f2fd557f993aecc93d51afd9e339524107937f (patch)
tree052ca4166b132a4228d3f6694aba24235660b4b1 /sound/pci/hda/hda_intel.c
parent5556e147083fb4d473d5c1a82f73205b8b145cd9 (diff)
ALSA: hda - Add position_fix=4 (COMBO) option
This patch adds a new position_fix option value, 4, as a combo mode to use LPIB for playbacks and POSBUF for captures. It's the way recommended by Intel hardware guys. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r--sound/pci/hda/hda_intel.c10
1 files changed, 9 insertions, 1 deletions
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;