diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-02-28 05:58:40 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-02-28 06:18:15 -0500 |
commit | a6f2fd557f993aecc93d51afd9e339524107937f (patch) | |
tree | 052ca4166b132a4228d3f6694aba24235660b4b1 /sound/pci/hda/hda_intel.c | |
parent | 5556e147083fb4d473d5c1a82f73205b8b145cd9 (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.c | 10 |
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); | |||
84 | MODULE_PARM_DESC(model, "Use the given board model."); | 84 | MODULE_PARM_DESC(model, "Use the given board model."); |
85 | module_param_array(position_fix, int, NULL, 0444); | 85 | module_param_array(position_fix, int, NULL, 0444); |
86 | MODULE_PARM_DESC(position_fix, "DMA pointer read method." | 86 | MODULE_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)."); |
88 | module_param_array(bdl_pos_adj, int, NULL, 0644); | 88 | module_param_array(bdl_pos_adj, int, NULL, 0644); |
89 | MODULE_PARM_DESC(bdl_pos_adj, "BDL position adjustment offset."); | 89 | MODULE_PARM_DESC(bdl_pos_adj, "BDL position adjustment offset."); |
90 | module_param_array(probe_mask, int, NULL, 0444); | 90 | module_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; |