History

Merge tag 'sound-4.3-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai: "We see various small fixes, but nothing looks too scary, all are small gentle bug fixes: - Most of changes are for ASoC codecs: Realtek, SGTL5000, TAS2552, TLV320, WM8962 - A couple of dwc and imx-ssi fixes - Usual oneliner HD-audio quirks - An old emux synth code fix" * tag 'sound-4.3-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: MAINTAINERS: Remove wm97xx entry ASoC: tas2552: fix dBscale-min declaration ALSA: synth: Fix conflicting OSS device registration on AWE32 ALSA: hda - Disable power_save_node for IDT 92HD73xx chips ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 ALSA: hda: Add dock support for ThinkPad T550 ASoC: dwc: fix dma stop transferring issue ASoC: dwc: correct irq clear method ASoC: tlv320aic3x: Prevent writing reserved registers on tlv320aic3104 CODECs ASoC: rt5645: Correct the naming and setting of ADC Boost Volume Control ASoC: sgtl5000: fix wrong register MIC_BIAS_VOLTAGE setup on probe ASoC: wm8962: balance pm_runtime_enable ASoC: imx-ssi: Fix DAI hardware signal inversions ASoC: sgtl5000: fix error message output for MicBias voltage ASoC: db1200: Fix DAI link format for db1300 and db1550

Linus Torvalds committed 11 years ago

Commit f4ba1cf2 parents fe621fd 601d62914 files · +67 −49Browse files

Unified · Split

14 files
  1. MAINTAINERS +0 −9
  2. sound/pci/hda/patch_cirrus.c +1 −0
  3. sound/pci/hda/patch_realtek.c +1 −0
  4. sound/pci/hda/patch_sigmatel.c +5 −1
  5. sound/soc/au1x/db1200.c +4 −0
  6. sound/soc/codecs/rt5645.c +3 −3
  7. sound/soc/codecs/rt5645.h +9 −7
  8. sound/soc/codecs/sgtl5000.c +3 −3
  9. sound/soc/codecs/tas2552.c +1 −1
  10. sound/soc/codecs/tlv320aic3x.c +11 −8
  11. sound/soc/codecs/wm8962.c +4 −1
  12. sound/soc/dwc/designware_i2s.c +14 −5
  13. sound/soc/fsl/imx-ssi.c +9 −10
  14. sound/synth/emux/emux_oss.c +2 −1
MAINTAINERS+0−9
@@ -11378,15 +11378,6 @@ W: http://oops.ghostprotocols.net:81/blog · 11377 unmodified lines
1137811378 S: Maintained
1137911379 F: drivers/net/wireless/wl3501*
1138011380
11381−WM97XX TOUCHSCREEN DRIVERS
11382−M: Mark Brown <broonie@kernel.org>
11383−M: Liam Girdwood <lrg@slimlogic.co.uk>
11384−L: linux-input@vger.kernel.org
11385−W: https://github.com/CirrusLogic/linux-drivers/wiki
11386−S: Supported
11387−F: drivers/input/touchscreen/*wm97*
11388−F: include/linux/wm97xx.h
11389−
1139011381 WOLFSON MICROELECTRONICS DRIVERS
1139111382 L: patches@opensource.wolfsonmicro.com
1139211383 T: git https://github.com/CirrusLogic/linux-drivers.git
sound/pci/hda/patch_cirrus.c+1−0
@@ -633,6 +633,7 @@ static const struct snd_pci_quirk cs4208_mac_fixup_tbl[] = { · 632 unmodified lines
633633 SND_PCI_QUIRK(0x106b, 0x5e00, "MacBookPro 11,2", CS4208_MBP11),
634634 SND_PCI_QUIRK(0x106b, 0x7100, "MacBookAir 6,1", CS4208_MBA6),
635635 SND_PCI_QUIRK(0x106b, 0x7200, "MacBookAir 6,2", CS4208_MBA6),
636+ SND_PCI_QUIRK(0x106b, 0x7b00, "MacBookPro 12,1", CS4208_MBP11),
636637 {} /* terminator */
637638 };
638639
sound/pci/hda/patch_realtek.c+1−0
@@ -5306,6 +5306,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 5305 unmodified lines
53065306 SND_PCI_QUIRK(0x17aa, 0x2212, "Thinkpad T440", ALC292_FIXUP_TPT440_DOCK),
53075307 SND_PCI_QUIRK(0x17aa, 0x2214, "Thinkpad X240", ALC292_FIXUP_TPT440_DOCK),
53085308 SND_PCI_QUIRK(0x17aa, 0x2215, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
5309+ SND_PCI_QUIRK(0x17aa, 0x2223, "ThinkPad T550", ALC292_FIXUP_TPT440_DOCK),
53095310 SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK),
53105311 SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC),
53115312 SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP),
sound/pci/hda/patch_sigmatel.c+5−1
@@ -4520,7 +4520,11 @@ static int patch_stac92hd73xx(struct hda_codec *codec) · 4519 unmodified lines
45204520 return err;
45214521
45224522 spec = codec->spec;
4523− codec->power_save_node = 1;
4523+ /* enable power_save_node only for new 92HD89xx chips, as it causes
4524+ * click noises on old 92HD73xx chips.
4525+ */
4526+ if ((codec->core.vendor_id & 0xfffffff0) != 0x111d7670)
4527+ codec->power_save_node = 1;
45244528 spec->linear_tone_beep = 0;
45254529 spec->gen.mixer_nid = 0x1d;
45264530 spec->have_spdif_mux = 1;
sound/soc/au1x/db1200.c+4−0
@@ -129,6 +129,8 @@ static struct snd_soc_dai_link db1300_i2s_dai = { · 128 unmodified lines
129129 .cpu_dai_name = "au1xpsc_i2s.2",
130130 .platform_name = "au1xpsc-pcm.2",
131131 .codec_name = "wm8731.0-001b",
132+ .dai_fmt = SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF |
133+ SND_SOC_DAIFMT_CBM_CFM,
132134 .ops = &db1200_i2s_wm8731_ops,
133135 };
134136
@@ -146,6 +148,8 @@ static struct snd_soc_dai_link db1550_i2s_dai = { · 11 unmodified lines
146148 .cpu_dai_name = "au1xpsc_i2s.3",
147149 .platform_name = "au1xpsc-pcm.3",
148150 .codec_name = "wm8731.0-001b",
151+ .dai_fmt = SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF |
152+ SND_SOC_DAIFMT_CBM_CFM,
149153 .ops = &db1200_i2s_wm8731_ops,
150154 };
151155
sound/soc/codecs/rt5645.c+3−3
@@ -519,11 +519,11 @@ static const struct snd_kcontrol_new rt5645_snd_controls[] = { · 518 unmodified lines
519519 RT5645_L_VOL_SFT + 1, RT5645_R_VOL_SFT + 1, 63, 0, adc_vol_tlv),
520520
521521 /* ADC Boost Volume Control */
522− SOC_DOUBLE_TLV("STO1 ADC Boost Gain", RT5645_ADC_BST_VOL1,
522+ SOC_DOUBLE_TLV("ADC Boost Capture Volume", RT5645_ADC_BST_VOL1,
523523 RT5645_STO1_ADC_L_BST_SFT, RT5645_STO1_ADC_R_BST_SFT, 3, 0,
524524 adc_bst_tlv),
525− SOC_DOUBLE_TLV("STO2 ADC Boost Gain", RT5645_ADC_BST_VOL1,
526− RT5645_STO2_ADC_L_BST_SFT, RT5645_STO2_ADC_R_BST_SFT, 3, 0,
525+ SOC_DOUBLE_TLV("Mono ADC Boost Capture Volume", RT5645_ADC_BST_VOL2,
526+ RT5645_MONO_ADC_L_BST_SFT, RT5645_MONO_ADC_R_BST_SFT, 3, 0,
527527 adc_bst_tlv),
528528
529529 /* I2S2 function select */
sound/soc/codecs/rt5645.h+9−7
@@ -39,8 +39,8 @@ · 38 unmodified lines
3939 #define RT5645_STO1_ADC_DIG_VOL 0x1c
4040 #define RT5645_MONO_ADC_DIG_VOL 0x1d
4141 #define RT5645_ADC_BST_VOL1 0x1e
42−/* Mixer - D-D */
4342 #define RT5645_ADC_BST_VOL2 0x20
43+/* Mixer - D-D */
4444 #define RT5645_STO1_ADC_MIXER 0x27
4545 #define RT5645_MONO_ADC_MIXER 0x28
4646 #define RT5645_AD_DA_MIXER 0x29
@@ -315,12 +315,14 @@ · 268 unmodified lines
315315 #define RT5645_STO1_ADC_R_BST_SFT 12
316316 #define RT5645_STO1_ADC_COMP_MASK (0x3 << 10)
317317 #define RT5645_STO1_ADC_COMP_SFT 10
318−#define RT5645_STO2_ADC_L_BST_MASK (0x3 << 8)
319−#define RT5645_STO2_ADC_L_BST_SFT 8
320−#define RT5645_STO2_ADC_R_BST_MASK (0x3 << 6)
321−#define RT5645_STO2_ADC_R_BST_SFT 6
322−#define RT5645_STO2_ADC_COMP_MASK (0x3 << 4)
323−#define RT5645_STO2_ADC_COMP_SFT 4
318+
319+/* ADC Boost Volume Control (0x20) */
320+#define RT5645_MONO_ADC_L_BST_MASK (0x3 << 14)
321+#define RT5645_MONO_ADC_L_BST_SFT 14
322+#define RT5645_MONO_ADC_R_BST_MASK (0x3 << 12)
323+#define RT5645_MONO_ADC_R_BST_SFT 12
324+#define RT5645_MONO_ADC_COMP_MASK (0x3 << 10)
325+#define RT5645_MONO_ADC_COMP_SFT 10
324326
325327 /* Stereo2 ADC Mixer Control (0x26) */
326328 #define RT5645_STO2_ADC_SRC_MASK (0x1 << 15)
sound/soc/codecs/sgtl5000.c+3−3
@@ -1376,8 +1376,8 @@ static int sgtl5000_probe(struct snd_soc_codec *codec) · 1375 unmodified lines
13761376 sgtl5000->micbias_resistor << SGTL5000_BIAS_R_SHIFT);
13771377
13781378 snd_soc_update_bits(codec, SGTL5000_CHIP_MIC_CTRL,
1379− SGTL5000_BIAS_R_MASK,
1380− sgtl5000->micbias_voltage << SGTL5000_BIAS_R_SHIFT);
1379+ SGTL5000_BIAS_VOLT_MASK,
1380+ sgtl5000->micbias_voltage << SGTL5000_BIAS_VOLT_SHIFT);
13811381 /*
13821382 * disable DAP
13831383 * TODO:
@@ -1549,7 +1549,7 @@ static int sgtl5000_i2c_probe(struct i2c_client *client, · 165 unmodified lines
15491549 else {
15501550 sgtl5000->micbias_voltage = 0;
15511551 dev_err(&client->dev,
1552− "Unsuitable MicBias resistor\n");
1552+ "Unsuitable MicBias voltage\n");
15531553 }
15541554 } else {
15551555 sgtl5000->micbias_voltage = 0;
sound/soc/codecs/tas2552.c+1−1
@@ -549,7 +549,7 @@ static struct snd_soc_dai_driver tas2552_dai[] = { · 548 unmodified lines
549549 /*
550550 * DAC digital volumes. From -7 to 24 dB in 1 dB steps
551551 */
552−static DECLARE_TLV_DB_SCALE(dac_tlv, -7, 100, 0);
552+static DECLARE_TLV_DB_SCALE(dac_tlv, -700, 100, 0);
553553
554554 static const char * const tas2552_din_source_select[] = {
555555 "Muted",
sound/soc/codecs/tlv320aic3x.c+11−8
@@ -1509,14 +1509,17 @@ static int aic3x_init(struct snd_soc_codec *codec) · 1508 unmodified lines
15091509 snd_soc_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL);
15101510 snd_soc_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL);
15111511
1512− /* Line2 to HP Bypass default volume, disconnect from Output Mixer */
1513− snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL);
1514− snd_soc_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL);
1515− snd_soc_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL);
1516− snd_soc_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL);
1517− /* Line2 Line Out default volume, disconnect from Output Mixer */
1518− snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL);
1519− snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL);
1512+ /* On tlv320aic3104, these registers are reserved and must not be written */
1513+ if (aic3x->model != AIC3X_MODEL_3104) {
1514+ /* Line2 to HP Bypass default volume, disconnect from Output Mixer */
1515+ snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL);
1516+ snd_soc_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL);
1517+ snd_soc_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL);
1518+ snd_soc_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL);
1519+ /* Line2 Line Out default volume, disconnect from Output Mixer */
1520+ snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL);
1521+ snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL);
1522+ }
15201523
15211524 switch (aic3x->model) {
15221525 case AIC3X_MODEL_3X:
sound/soc/codecs/wm8962.c+4−1
@@ -3760,7 +3760,7 @@ static int wm8962_i2c_probe(struct i2c_client *i2c, · 3759 unmodified lines
37603760 ret = snd_soc_register_codec(&i2c->dev,
37613761 &soc_codec_dev_wm8962, &wm8962_dai, 1);
37623762 if (ret < 0)
3763− goto err_enable;
3763+ goto err_pm_runtime;
37643764
37653765 regcache_cache_only(wm8962->regmap, true);
37663766
@@ -3769,6 +3769,8 @@ static int wm8962_i2c_probe(struct i2c_client *i2c, · 2 unmodified lines
37693769
37703770 return 0;
37713771
3772+err_pm_runtime:
3773+ pm_runtime_disable(&i2c->dev);
37723774 err_enable:
37733775 regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
37743776 err:
@@ -3778,6 +3780,7 @@ err: · 3 unmodified lines
37783780 static int wm8962_i2c_remove(struct i2c_client *client)
37793781 {
37803782 snd_soc_unregister_codec(&client->dev);
3783+ pm_runtime_disable(&client->dev);
37813784 return 0;
37823785 }
37833786
sound/soc/dwc/designware_i2s.c+14−5
@@ -131,23 +131,32 @@ static inline void i2s_clear_irqs(struct dw_i2s_dev *dev, u32 stream) · 130 unmodified lines
131131
132132 if (stream == SNDRV_PCM_STREAM_PLAYBACK) {
133133 for (i = 0; i < 4; i++)
134− i2s_write_reg(dev->i2s_base, TOR(i), 0);
134+ i2s_read_reg(dev->i2s_base, TOR(i));
135135 } else {
136136 for (i = 0; i < 4; i++)
137− i2s_write_reg(dev->i2s_base, ROR(i), 0);
137+ i2s_read_reg(dev->i2s_base, ROR(i));
138138 }
139139 }
140140
141141 static void i2s_start(struct dw_i2s_dev *dev,
142142 struct snd_pcm_substream *substream)
143143 {
144−
144+ u32 i, irq;
145145 i2s_write_reg(dev->i2s_base, IER, 1);
146146
147− if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
147+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
148+ for (i = 0; i < 4; i++) {
149+ irq = i2s_read_reg(dev->i2s_base, IMR(i));
150+ i2s_write_reg(dev->i2s_base, IMR(i), irq & ~0x30);
151+ }
148152 i2s_write_reg(dev->i2s_base, ITER, 1);
149− else
153+ } else {
154+ for (i = 0; i < 4; i++) {
155+ irq = i2s_read_reg(dev->i2s_base, IMR(i));
156+ i2s_write_reg(dev->i2s_base, IMR(i), irq & ~0x03);
157+ }
150158 i2s_write_reg(dev->i2s_base, IRER, 1);
159+ }
151160
152161 i2s_write_reg(dev->i2s_base, CER, 1);
153162 }
sound/soc/fsl/imx-ssi.c+9−10
@@ -95,7 +95,8 @@ static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) · 94 unmodified lines
9595 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
9696 case SND_SOC_DAIFMT_I2S:
9797 /* data on rising edge of bclk, frame low 1clk before data */
98− strcr |= SSI_STCR_TFSI | SSI_STCR_TEFS | SSI_STCR_TXBIT0;
98+ strcr |= SSI_STCR_TXBIT0 | SSI_STCR_TSCKP | SSI_STCR_TFSI |
99+ SSI_STCR_TEFS;
99100 scr |= SSI_SCR_NET;
100101 if (ssi->flags & IMX_SSI_USE_I2S_SLAVE) {
101102 scr &= ~SSI_I2S_MODE_MASK;
@@ -104,33 +105,31 @@ static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) · 2 unmodified lines
104105 break;
105106 case SND_SOC_DAIFMT_LEFT_J:
106107 /* data on rising edge of bclk, frame high with data */
107− strcr |= SSI_STCR_TXBIT0;
108+ strcr |= SSI_STCR_TXBIT0 | SSI_STCR_TSCKP;
108109 break;
109110 case SND_SOC_DAIFMT_DSP_B:
110111 /* data on rising edge of bclk, frame high with data */
111− strcr |= SSI_STCR_TFSL | SSI_STCR_TXBIT0;
112+ strcr |= SSI_STCR_TXBIT0 | SSI_STCR_TSCKP | SSI_STCR_TFSL;
112113 break;
113114 case SND_SOC_DAIFMT_DSP_A:
114115 /* data on rising edge of bclk, frame high 1clk before data */
115− strcr |= SSI_STCR_TFSL | SSI_STCR_TXBIT0 | SSI_STCR_TEFS;
116+ strcr |= SSI_STCR_TXBIT0 | SSI_STCR_TSCKP | SSI_STCR_TFSL |
117+ SSI_STCR_TEFS;
116118 break;
117119 }
118120
119121 /* DAI clock inversion */
120122 switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
121123 case SND_SOC_DAIFMT_IB_IF:
122− strcr |= SSI_STCR_TFSI;
123− strcr &= ~SSI_STCR_TSCKP;
124+ strcr ^= SSI_STCR_TSCKP | SSI_STCR_TFSI;
124125 break;
125126 case SND_SOC_DAIFMT_IB_NF:
126− strcr &= ~(SSI_STCR_TSCKP | SSI_STCR_TFSI);
127+ strcr ^= SSI_STCR_TSCKP;
127128 break;
128129 case SND_SOC_DAIFMT_NB_IF:
129− strcr |= SSI_STCR_TFSI | SSI_STCR_TSCKP;
130+ strcr ^= SSI_STCR_TFSI;
130131 break;
131132 case SND_SOC_DAIFMT_NB_NF:
132− strcr &= ~SSI_STCR_TFSI;
133− strcr |= SSI_STCR_TSCKP;
134133 break;
135134 }
136135
sound/synth/emux/emux_oss.c+2−1
@@ -69,7 +69,8 @@ snd_emux_init_seq_oss(struct snd_emux *emu) · 68 unmodified lines
6969 struct snd_seq_oss_reg *arg;
7070 struct snd_seq_device *dev;
7171
72− if (snd_seq_device_new(emu->card, 0, SNDRV_SEQ_DEV_ID_OSS,
72+ /* using device#1 here for avoiding conflicts with OPL3 */
73+ if (snd_seq_device_new(emu->card, 1, SNDRV_SEQ_DEV_ID_OSS,
7374 sizeof(struct snd_seq_oss_reg), &dev) < 0)
7475 return;
7576