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 - Set function_id only on FG nodes
ALSA: MAINTAINERS - Update SOUND
ALSA: emu10k1 - off by 1 in snd_emu10k1_wait()
ASoC: OMAP: Fix FS polarity in OSK5912 machine driver
ASoC: OMAP: Fix DSP_B format in OMAP McBSP DAI driver
ASoC: Fix include build error in s3c2412-i2s.c
ASoC: Fix s3c-i2s-v2.c snd_soc_dai changes
ASoC: s3c-i2s-v2.c fix for s3c_i2sv2_iis_calc_rate
ASoC: Fix jive_wm8750.c build problems
ASoC: pxa-ssp: allow setting of dai format 0
ALSA: hda - Add upper-limit of mixer amp for AD1884A-laptop model, too
ALSA: hda - Fix headphone-detection on some machines with STAC/IDT codecs
ALSA: Intel8x0: Add hp_only quirk for SSID 0x1028016a (Dell Inspiron 8600)
ALSA: Intel8x0: Remove conflicting quirk for SSID 0x103c0934
ALSA: hda_intel.c - Consolidate bitfields

+56 -35
+5
MAINTAINERS
··· 5235 P: Takashi Iwai 5236 M: tiwai@suse.de 5237 L: alsa-devel@alsa-project.org (subscribers-only) 5238 S: Maintained 5239 F: sound/ 5240 5241 SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
··· 5235 P: Takashi Iwai 5236 M: tiwai@suse.de 5237 L: alsa-devel@alsa-project.org (subscribers-only) 5238 + W: http://www.alsa-project.org/ 5239 + T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git 5240 + T: git git://git.alsa-project.org/alsa-kernel.git 5241 S: Maintained 5242 + F: Documentation/sound/ 5243 + F: include/sound/ 5244 F: sound/ 5245 5246 SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
+1 -1
sound/pci/emu10k1/io.c
··· 490 if (newtime != curtime) 491 break; 492 } 493 - if (count >= 16384) 494 break; 495 curtime = newtime; 496 }
··· 490 if (newtime != curtime) 491 break; 492 } 493 + if (count > 16384) 494 break; 495 curtime = newtime; 496 }
+5 -3
sound/pci/hda/hda_codec.c
··· 642 */ 643 static void /*__devinit*/ setup_fg_nodes(struct hda_codec *codec) 644 { 645 - int i, total_nodes; 646 hda_nid_t nid; 647 648 total_nodes = snd_hda_get_sub_nodes(codec, AC_NODE_ROOT, &nid); 649 for (i = 0; i < total_nodes; i++, nid++) { 650 - codec->function_id = snd_hda_param_read(codec, nid, 651 AC_PAR_FUNCTION_TYPE) & 0xff; 652 - switch (codec->function_id) { 653 case AC_GRP_AUDIO_FUNCTION: 654 codec->afg = nid; 655 break; 656 case AC_GRP_MODEM_FUNCTION: 657 codec->mfg = nid; 658 break; 659 default: 660 break;
··· 642 */ 643 static void /*__devinit*/ setup_fg_nodes(struct hda_codec *codec) 644 { 645 + int i, total_nodes, function_id; 646 hda_nid_t nid; 647 648 total_nodes = snd_hda_get_sub_nodes(codec, AC_NODE_ROOT, &nid); 649 for (i = 0; i < total_nodes; i++, nid++) { 650 + function_id = snd_hda_param_read(codec, nid, 651 AC_PAR_FUNCTION_TYPE) & 0xff; 652 + switch (function_id) { 653 case AC_GRP_AUDIO_FUNCTION: 654 codec->afg = nid; 655 + codec->function_id = function_id; 656 break; 657 case AC_GRP_MODEM_FUNCTION: 658 codec->mfg = nid; 659 + codec->function_id = function_id; 660 break; 661 default: 662 break;
+1 -1
sound/pci/hda/hda_intel.c
··· 312 unsigned int period_bytes; /* size of the period in bytes */ 313 unsigned int frags; /* number for period in the play buffer */ 314 unsigned int fifo_size; /* FIFO size */ 315 - unsigned int start_flag: 1; /* stream full start flag */ 316 unsigned long start_jiffies; /* start + minimum jiffies */ 317 unsigned long min_jiffies; /* minimum jiffies before position is valid */ 318 ··· 332 unsigned int opened :1; 333 unsigned int running :1; 334 unsigned int irq_pending :1; 335 /* 336 * For VIA: 337 * A flag to ensure DMA position is 0
··· 312 unsigned int period_bytes; /* size of the period in bytes */ 313 unsigned int frags; /* number for period in the play buffer */ 314 unsigned int fifo_size; /* FIFO size */ 315 unsigned long start_jiffies; /* start + minimum jiffies */ 316 unsigned long min_jiffies; /* minimum jiffies before position is valid */ 317 ··· 333 unsigned int opened :1; 334 unsigned int running :1; 335 unsigned int irq_pending :1; 336 + unsigned int start_flag: 1; /* stream full start flag */ 337 /* 338 * For VIA: 339 * A flag to ensure DMA position is 0
+8
sound/pci/hda/patch_analog.c
··· 3977 spec->input_mux = &ad1884a_laptop_capture_source; 3978 codec->patch_ops.unsol_event = ad1884a_hp_unsol_event; 3979 codec->patch_ops.init = ad1884a_hp_init; 3980 break; 3981 case AD1884A_MOBILE: 3982 spec->mixers[0] = ad1884a_mobile_mixers;
··· 3977 spec->input_mux = &ad1884a_laptop_capture_source; 3978 codec->patch_ops.unsol_event = ad1884a_hp_unsol_event; 3979 codec->patch_ops.init = ad1884a_hp_init; 3980 + /* set the upper-limit for mixer amp to 0dB for avoiding the 3981 + * possible damage by overloading 3982 + */ 3983 + snd_hda_override_amp_caps(codec, 0x20, HDA_INPUT, 3984 + (0x17 << AC_AMPCAP_OFFSET_SHIFT) | 3985 + (0x17 << AC_AMPCAP_NUM_STEPS_SHIFT) | 3986 + (0x05 << AC_AMPCAP_STEP_SIZE_SHIFT) | 3987 + (1 << AC_AMPCAP_MUTE_SHIFT)); 3988 break; 3989 case AD1884A_MOBILE: 3990 spec->mixers[0] = ad1884a_mobile_mixers;
+5 -5
sound/pci/hda/patch_sigmatel.c
··· 3076 unsigned int wid_caps; 3077 3078 for (i = 0; i < num_outs && i < ARRAY_SIZE(chname); i++) { 3079 nid = dac_nids[i]; 3080 if (!nid) 3081 continue; ··· 3124 err = create_controls_idx(codec, name, idx, nid, 3); 3125 if (err < 0) 3126 return err; 3127 - if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) { 3128 - wid_caps = get_wcaps(codec, pins[i]); 3129 - if (wid_caps & AC_WCAP_UNSOL_CAP) 3130 - spec->hp_detect = 1; 3131 - } 3132 } 3133 } 3134 return 0;
··· 3076 unsigned int wid_caps; 3077 3078 for (i = 0; i < num_outs && i < ARRAY_SIZE(chname); i++) { 3079 + if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) { 3080 + wid_caps = get_wcaps(codec, pins[i]); 3081 + if (wid_caps & AC_WCAP_UNSOL_CAP) 3082 + spec->hp_detect = 1; 3083 + } 3084 nid = dac_nids[i]; 3085 if (!nid) 3086 continue; ··· 3119 err = create_controls_idx(codec, name, idx, nid, 3); 3120 if (err < 0) 3121 return err; 3122 } 3123 } 3124 return 0;
+6 -6
sound/pci/intel8x0.c
··· 1854 }, 1855 { 1856 .subvendor = 0x1028, 1857 .subdevice = 0x0186, 1858 .name = "Dell Latitude D810", /* cf. Malone #41015 */ 1859 .type = AC97_TUNE_HP_MUTE_LED ··· 1898 .subvendor = 0x103c, 1899 .subdevice = 0x0890, 1900 .name = "HP nc6000", 1901 - .type = AC97_TUNE_MUTE_LED 1902 - }, 1903 - { 1904 - .subvendor = 0x103c, 1905 - .subdevice = 0x0934, 1906 - .name = "HP nx8220", 1907 .type = AC97_TUNE_MUTE_LED 1908 }, 1909 {
··· 1854 }, 1855 { 1856 .subvendor = 0x1028, 1857 + .subdevice = 0x016a, 1858 + .name = "Dell Inspiron 8600", /* STAC9750/51 */ 1859 + .type = AC97_TUNE_HP_ONLY 1860 + }, 1861 + { 1862 + .subvendor = 0x1028, 1863 .subdevice = 0x0186, 1864 .name = "Dell Latitude D810", /* cf. Malone #41015 */ 1865 .type = AC97_TUNE_HP_MUTE_LED ··· 1892 .subvendor = 0x103c, 1893 .subdevice = 0x0890, 1894 .name = "HP nc6000", 1895 .type = AC97_TUNE_MUTE_LED 1896 }, 1897 {
+5 -2
sound/soc/omap/omap-mcbsp.c
··· 283 break; 284 case SND_SOC_DAIFMT_DSP_B: 285 regs->srgr2 |= FPER(wlen * channels - 1); 286 - regs->srgr1 |= FWID(wlen * channels - 2); 287 break; 288 } 289 ··· 302 { 303 struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data); 304 struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs; 305 306 if (mcbsp_data->configured) 307 return 0; ··· 329 /* 0-bit data delay */ 330 regs->rcr2 |= RDATDLY(0); 331 regs->xcr2 |= XDATDLY(0); 332 break; 333 default: 334 /* Unsupported data format */ ··· 354 } 355 356 /* Set bit clock (CLKX/CLKR) and FS polarities */ 357 - switch (fmt & SND_SOC_DAIFMT_INV_MASK) { 358 case SND_SOC_DAIFMT_NB_NF: 359 /* 360 * Normal BCLK + FS.
··· 283 break; 284 case SND_SOC_DAIFMT_DSP_B: 285 regs->srgr2 |= FPER(wlen * channels - 1); 286 + regs->srgr1 |= FWID(0); 287 break; 288 } 289 ··· 302 { 303 struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data); 304 struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs; 305 + unsigned int temp_fmt = fmt; 306 307 if (mcbsp_data->configured) 308 return 0; ··· 328 /* 0-bit data delay */ 329 regs->rcr2 |= RDATDLY(0); 330 regs->xcr2 |= XDATDLY(0); 331 + /* Invert FS polarity configuration */ 332 + temp_fmt ^= SND_SOC_DAIFMT_NB_IF; 333 break; 334 default: 335 /* Unsupported data format */ ··· 351 } 352 353 /* Set bit clock (CLKX/CLKR) and FS polarities */ 354 + switch (temp_fmt & SND_SOC_DAIFMT_INV_MASK) { 355 case SND_SOC_DAIFMT_NB_NF: 356 /* 357 * Normal BCLK + FS.
+2 -2
sound/soc/omap/osk5912.c
··· 62 /* Set codec DAI configuration */ 63 err = snd_soc_dai_set_fmt(codec_dai, 64 SND_SOC_DAIFMT_DSP_B | 65 - SND_SOC_DAIFMT_NB_IF | 66 SND_SOC_DAIFMT_CBM_CFM); 67 if (err < 0) { 68 printk(KERN_ERR "can't set codec DAI configuration\n"); ··· 72 /* Set cpu DAI configuration */ 73 err = snd_soc_dai_set_fmt(cpu_dai, 74 SND_SOC_DAIFMT_DSP_B | 75 - SND_SOC_DAIFMT_NB_IF | 76 SND_SOC_DAIFMT_CBM_CFM); 77 if (err < 0) { 78 printk(KERN_ERR "can't set cpu DAI configuration\n");
··· 62 /* Set codec DAI configuration */ 63 err = snd_soc_dai_set_fmt(codec_dai, 64 SND_SOC_DAIFMT_DSP_B | 65 + SND_SOC_DAIFMT_NB_NF | 66 SND_SOC_DAIFMT_CBM_CFM); 67 if (err < 0) { 68 printk(KERN_ERR "can't set codec DAI configuration\n"); ··· 72 /* Set cpu DAI configuration */ 73 err = snd_soc_dai_set_fmt(cpu_dai, 74 SND_SOC_DAIFMT_DSP_B | 75 + SND_SOC_DAIFMT_NB_NF | 76 SND_SOC_DAIFMT_CBM_CFM); 77 if (err < 0) { 78 printk(KERN_ERR "can't set cpu DAI configuration\n");
+1
sound/soc/pxa/pxa-ssp.c
··· 806 goto err_priv; 807 } 808 809 dai->private_data = priv; 810 811 return 0;
··· 806 goto err_priv; 807 } 808 809 + priv->dai_fmt = (unsigned int) -1; 810 dai->private_data = priv; 811 812 return 0;
+6 -6
sound/soc/s3c24xx/jive_wm8750.c
··· 69 break; 70 } 71 72 - s3c_i2sv2_calc_rate(&div, NULL, params_rate(params), 73 - s3c2412_get_iisclk()); 74 75 /* set codec DAI configuration */ 76 ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S | ··· 145 }; 146 147 /* jive audio machine driver */ 148 - static struct snd_soc_machine snd_soc_machine_jive = { 149 .name = "Jive", 150 .dai_link = &jive_dai, 151 .num_links = 1, 152 }; ··· 158 159 /* jive audio subsystem */ 160 static struct snd_soc_device jive_snd_devdata = { 161 - .machine = &snd_soc_machine_jive, 162 - .platform = &s3c24xx_soc_platform, 163 - .codec_dev = &soc_codec_dev_wm8750_spi, 164 .codec_data = &jive_wm8750_setup, 165 }; 166
··· 69 break; 70 } 71 72 + s3c_i2sv2_iis_calc_rate(&div, NULL, params_rate(params), 73 + s3c2412_get_iisclk()); 74 75 /* set codec DAI configuration */ 76 ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S | ··· 145 }; 146 147 /* jive audio machine driver */ 148 + static struct snd_soc_card snd_soc_machine_jive = { 149 .name = "Jive", 150 + .platform = &s3c24xx_soc_platform, 151 .dai_link = &jive_dai, 152 .num_links = 1, 153 }; ··· 157 158 /* jive audio subsystem */ 159 static struct snd_soc_device jive_snd_devdata = { 160 + .card = &snd_soc_machine_jive, 161 + .codec_dev = &soc_codec_dev_wm8750, 162 .codec_data = &jive_wm8750_setup, 163 }; 164
+10 -8
sound/soc/s3c24xx/s3c-i2s-v2.c
··· 473 /* default table of all avaialable root fs divisors */ 474 static unsigned int iis_fs_tab[] = { 256, 512, 384, 768 }; 475 476 - int s3c2412_iis_calc_rate(struct s3c_i2sv2_rate_calc *info, 477 - unsigned int *fstab, 478 - unsigned int rate, struct clk *clk) 479 { 480 unsigned long clkrate = clk_get_rate(clk); 481 unsigned int div; ··· 531 532 return 0; 533 } 534 - EXPORT_SYMBOL_GPL(s3c2412_iis_calc_rate); 535 536 int s3c_i2sv2_probe(struct platform_device *pdev, 537 struct snd_soc_dai *dai, ··· 624 625 int s3c_i2sv2_register_dai(struct snd_soc_dai *dai) 626 { 627 - dai->ops.trigger = s3c2412_i2s_trigger; 628 - dai->ops.hw_params = s3c2412_i2s_hw_params; 629 - dai->ops.set_fmt = s3c2412_i2s_set_fmt; 630 - dai->ops.set_clkdiv = s3c2412_i2s_set_clkdiv; 631 632 dai->suspend = s3c2412_i2s_suspend; 633 dai->resume = s3c2412_i2s_resume;
··· 473 /* default table of all avaialable root fs divisors */ 474 static unsigned int iis_fs_tab[] = { 256, 512, 384, 768 }; 475 476 + int s3c_i2sv2_iis_calc_rate(struct s3c_i2sv2_rate_calc *info, 477 + unsigned int *fstab, 478 + unsigned int rate, struct clk *clk) 479 { 480 unsigned long clkrate = clk_get_rate(clk); 481 unsigned int div; ··· 531 532 return 0; 533 } 534 + EXPORT_SYMBOL_GPL(s3c_i2sv2_iis_calc_rate); 535 536 int s3c_i2sv2_probe(struct platform_device *pdev, 537 struct snd_soc_dai *dai, ··· 624 625 int s3c_i2sv2_register_dai(struct snd_soc_dai *dai) 626 { 627 + struct snd_soc_dai_ops *ops = dai->ops; 628 + 629 + ops->trigger = s3c2412_i2s_trigger; 630 + ops->hw_params = s3c2412_i2s_hw_params; 631 + ops->set_fmt = s3c2412_i2s_set_fmt; 632 + ops->set_clkdiv = s3c2412_i2s_set_clkdiv; 633 634 dai->suspend = s3c2412_i2s_suspend; 635 dai->resume = s3c2412_i2s_resume;
+1 -1
sound/soc/s3c24xx/s3c2412-i2s.c
··· 33 34 #include <plat/regs-s3c2412-iis.h> 35 36 - #include <plat/regs-gpio.h> 37 #include <plat/audio.h> 38 #include <mach/dma.h> 39 40 #include "s3c24xx-pcm.h"
··· 33 34 #include <plat/regs-s3c2412-iis.h> 35 36 #include <plat/audio.h> 37 + #include <mach/regs-gpio.h> 38 #include <mach/dma.h> 39 40 #include "s3c24xx-pcm.h"