Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
ALSA: hda - Allow all formats as default for Nvidia HDMI
ALSA: aaci: ARM1176 aaci-pl041 AC97 register read timeout
ALSA: hda - Fix volume-knob setup for Dell laptops with STAC9228
ALSA: hda - Fix mute sound with STAC9227/9228 codecs
ALSA: bt87x - Add a whitelist for Pinnacle PCTV (11bd:0012)
ALSA: hda - Fix overflow of spec->init_verbs in patch_realtek.c
ALSA: ice1724 - Make call to set hw params succeed on ESI Juli@
ALSA: ice1724: Fix surround on Chaintech AV-710
ALSA: hda - Add full rates/formats support for Nvidia HDMI

+64 -12
+1
Documentation/sound/alsa/HD-Audio-Models.txt
··· 359 359 5stack-no-fp D965 5stack without front panel 360 360 dell-3stack Dell Dimension E520 361 361 dell-bios Fixes with Dell BIOS setup 362 + volknob Fixes with volume-knob widget 0x24 362 363 auto BIOS setup (default) 363 364 364 365 STAC92HD71B*
+1
sound/arm/aaci.c
··· 937 937 struct snd_ac97 *ac97; 938 938 int ret; 939 939 940 + writel(0, aaci->base + AC97_POWERDOWN); 940 941 /* 941 942 * Assert AACIRESET for 2us 942 943 */
+2
sound/pci/bt87x.c
··· 808 808 BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_878, 0x1002, 0x0001, GENERIC), 809 809 /* Leadtek Winfast tv 2000xp delux */ 810 810 BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_878, 0x107d, 0x6606, GENERIC), 811 + /* Pinnacle PCTV */ 812 + BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_878, 0x11bd, 0x0012, GENERIC), 811 813 /* Voodoo TV 200 */ 812 814 BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_878, 0x121a, 0x3000, GENERIC), 813 815 /* Askey Computer Corp. MagicTView'99 */
+25 -6
sound/pci/hda/patch_nvhdmi.c
··· 29 29 #include "hda_codec.h" 30 30 #include "hda_local.h" 31 31 32 + /* define below to restrict the supported rates and formats */ 33 + /* #define LIMITED_RATE_FMT_SUPPORT */ 34 + 32 35 struct nvhdmi_spec { 33 36 struct hda_multi_out multiout; 34 37 ··· 62 59 { 0xd, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT | 0x5 }, 63 60 {} /* terminator */ 64 61 }; 62 + 63 + #ifdef LIMITED_RATE_FMT_SUPPORT 64 + /* support only the safe format and rate */ 65 + #define SUPPORTED_RATES SNDRV_PCM_RATE_48000 66 + #define SUPPORTED_MAXBPS 16 67 + #define SUPPORTED_FORMATS SNDRV_PCM_FMTBIT_S16_LE 68 + #else 69 + /* support all rates and formats */ 70 + #define SUPPORTED_RATES \ 71 + (SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\ 72 + SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |\ 73 + SNDRV_PCM_RATE_192000) 74 + #define SUPPORTED_MAXBPS 24 75 + #define SUPPORTED_FORMATS \ 76 + (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE) 77 + #endif 65 78 66 79 /* 67 80 * Controls ··· 277 258 .channels_min = 2, 278 259 .channels_max = 8, 279 260 .nid = Nv_Master_Convert_nid, 280 - .rates = SNDRV_PCM_RATE_48000, 281 - .maxbps = 16, 282 - .formats = SNDRV_PCM_FMTBIT_S16_LE, 261 + .rates = SUPPORTED_RATES, 262 + .maxbps = SUPPORTED_MAXBPS, 263 + .formats = SUPPORTED_FORMATS, 283 264 .ops = { 284 265 .open = nvhdmi_dig_playback_pcm_open, 285 266 .close = nvhdmi_dig_playback_pcm_close_8ch, ··· 292 273 .channels_min = 2, 293 274 .channels_max = 2, 294 275 .nid = Nv_Master_Convert_nid, 295 - .rates = SNDRV_PCM_RATE_48000, 296 - .maxbps = 16, 297 - .formats = SNDRV_PCM_FMTBIT_S16_LE, 276 + .rates = SUPPORTED_RATES, 277 + .maxbps = SUPPORTED_MAXBPS, 278 + .formats = SUPPORTED_FORMATS, 298 279 .ops = { 299 280 .open = nvhdmi_dig_playback_pcm_open, 300 281 .close = nvhdmi_dig_playback_pcm_close_2ch,
+1 -1
sound/pci/hda/patch_realtek.c
··· 275 275 struct snd_kcontrol_new *cap_mixer; /* capture mixer */ 276 276 unsigned int beep_amp; /* beep amp value, set via set_beep_amp() */ 277 277 278 - const struct hda_verb *init_verbs[5]; /* initialization verbs 278 + const struct hda_verb *init_verbs[10]; /* initialization verbs 279 279 * don't forget NULL 280 280 * termination! 281 281 */
+28 -1
sound/pci/hda/patch_sigmatel.c
··· 158 158 STAC_D965_5ST_NO_FP, 159 159 STAC_DELL_3ST, 160 160 STAC_DELL_BIOS, 161 + STAC_927X_VOLKNOB, 161 162 STAC_927X_MODELS 162 163 }; 163 164 ··· 908 907 {} 909 908 }; 910 909 910 + static struct hda_verb dell_3st_core_init[] = { 911 + /* don't set delta bit */ 912 + {0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0x7f}, 913 + /* unmute node 0x1b */ 914 + {0x1b, AC_VERB_SET_AMP_GAIN_MUTE, 0xb000}, 915 + /* select node 0x03 as DAC */ 916 + {0x0b, AC_VERB_SET_CONNECT_SEL, 0x01}, 917 + {} 918 + }; 919 + 911 920 static struct hda_verb stac927x_core_init[] = { 912 921 /* set master volume and direct control */ 913 922 { 0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, 914 923 /* enable analog pc beep path */ 915 924 { 0x01, AC_VERB_SET_DIGI_CONVERT_2, 1 << 5}, 925 + {} 926 + }; 927 + 928 + static struct hda_verb stac927x_volknob_core_init[] = { 929 + /* don't set delta bit */ 930 + {0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0x7f}, 931 + /* enable analog pc beep path */ 932 + {0x01, AC_VERB_SET_DIGI_CONVERT_2, 1 << 5}, 916 933 {} 917 934 }; 918 935 ··· 2018 1999 [STAC_D965_5ST_NO_FP] = d965_5st_no_fp_pin_configs, 2019 2000 [STAC_DELL_3ST] = dell_3st_pin_configs, 2020 2001 [STAC_DELL_BIOS] = NULL, 2002 + [STAC_927X_VOLKNOB] = NULL, 2021 2003 }; 2022 2004 2023 2005 static const char *stac927x_models[STAC_927X_MODELS] = { ··· 2030 2010 [STAC_D965_5ST_NO_FP] = "5stack-no-fp", 2031 2011 [STAC_DELL_3ST] = "dell-3stack", 2032 2012 [STAC_DELL_BIOS] = "dell-bios", 2013 + [STAC_927X_VOLKNOB] = "volknob", 2033 2014 }; 2034 2015 2035 2016 static struct snd_pci_quirk stac927x_cfg_tbl[] = { ··· 2066 2045 "Intel D965", STAC_D965_5ST), 2067 2046 SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_INTEL, 0xff00, 0x2500, 2068 2047 "Intel D965", STAC_D965_5ST), 2048 + /* volume-knob fixes */ 2049 + SND_PCI_QUIRK_VENDOR(0x10cf, "FSC", STAC_927X_VOLKNOB), 2069 2050 {} /* terminator */ 2070 2051 }; 2071 2052 ··· 5635 5612 spec->dmic_nids = stac927x_dmic_nids; 5636 5613 spec->num_dmics = STAC927X_NUM_DMICS; 5637 5614 5638 - spec->init = d965_core_init; 5615 + spec->init = dell_3st_core_init; 5639 5616 spec->dmux_nids = stac927x_dmux_nids; 5640 5617 spec->num_dmuxes = ARRAY_SIZE(stac927x_dmux_nids); 5618 + break; 5619 + case STAC_927X_VOLKNOB: 5620 + spec->num_dmics = 0; 5621 + spec->init = stac927x_volknob_core_init; 5641 5622 break; 5642 5623 default: 5643 5624 spec->num_dmics = 0;
+5 -3
sound/pci/ice1712/amp.c
··· 52 52 53 53 /* only use basic functionality for now */ 54 54 55 - ice->num_total_dacs = 2; /* only PSDOUT0 is connected */ 55 + /* VT1616 6ch codec connected to PSDOUT0 using packed mode */ 56 + ice->num_total_dacs = 6; 56 57 ice->num_total_adcs = 2; 57 58 58 - /* Chaintech AV-710 has another codecs, which need initialization */ 59 - /* initialize WM8728 codec */ 59 + /* Chaintech AV-710 has another WM8728 codec connected to PSDOUT4 60 + (shared with the SPDIF output). Mixer control for this codec 61 + is not yet supported. */ 60 62 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AV710) { 61 63 for (i = 0; i < ARRAY_SIZE(wm_inits); i += 2) 62 64 wm_put(ice, wm_inits[i], wm_inits[i+1]);
+1 -1
sound/pci/ice1712/ice1724.c
··· 648 648 (inb(ICEMT1724(ice, DMA_PAUSE)) & DMA_PAUSES)) { 649 649 /* running? we cannot change the rate now... */ 650 650 spin_unlock_irqrestore(&ice->reg_lock, flags); 651 - return -EBUSY; 651 + return ((rate == ice->cur_rate) && !force) ? 0 : -EBUSY; 652 652 } 653 653 if (!force && is_pro_rate_locked(ice)) { 654 654 spin_unlock_irqrestore(&ice->reg_lock, flags);