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

Configure Feed

Select the types of activity you want to include in your feed.

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

Pull sound fixes from Takashi Iwai:
"There is nothing to worry you much, only a few small & stable patches
are found for usual stuff, HD-audio (a Lenovo laptop quirk, a fix for
minor error handling) and ASoC (trivial fixes for RT298 and WM
codecs).

The only remaining major change is the fix for ASoC SX_TLV control
that was overseen during refactoring, but the fix itself is trivial
and safe"

* tag 'sound-4.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ASoC: wm8962: mark cache_dirty flag after software reset in pm_resume
ASoC: rt298: fix wrong setting of gpio2_en
ASoC: wm8904: Correct number of EQ registers
ALSA: hda - Fix deadlock at error in building PCM
ASoC: Add info callback for SX_TLV controls
ASoC: rt298: correct index default value
ALSA: hda - Fix inverted internal mic on Lenovo G50-80
ALSA: hdac: Explicitly add io.h

+51 -19
+4 -2
include/sound/soc.h
··· 86 86 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ 87 87 SNDRV_CTL_ELEM_ACCESS_READWRITE, \ 88 88 .tlv.p = (tlv_array),\ 89 - .info = snd_soc_info_volsw, \ 89 + .info = snd_soc_info_volsw_sx, \ 90 90 .get = snd_soc_get_volsw_sx,\ 91 91 .put = snd_soc_put_volsw_sx, \ 92 92 .private_value = (unsigned long)&(struct soc_mixer_control) \ ··· 156 156 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ 157 157 SNDRV_CTL_ELEM_ACCESS_READWRITE, \ 158 158 .tlv.p = (tlv_array), \ 159 - .info = snd_soc_info_volsw, \ 159 + .info = snd_soc_info_volsw_sx, \ 160 160 .get = snd_soc_get_volsw_sx, \ 161 161 .put = snd_soc_put_volsw_sx, \ 162 162 .private_value = (unsigned long)&(struct soc_mixer_control) \ ··· 574 574 struct snd_ctl_elem_value *ucontrol); 575 575 int snd_soc_info_volsw(struct snd_kcontrol *kcontrol, 576 576 struct snd_ctl_elem_info *uinfo); 577 + int snd_soc_info_volsw_sx(struct snd_kcontrol *kcontrol, 578 + struct snd_ctl_elem_info *uinfo); 577 579 #define snd_soc_info_bool_ext snd_ctl_boolean_mono_info 578 580 int snd_soc_get_volsw(struct snd_kcontrol *kcontrol, 579 581 struct snd_ctl_elem_value *ucontrol);
+1 -1
include/sound/wm8904.h
··· 119 119 #define WM8904_MIC_REGS 2 120 120 #define WM8904_GPIO_REGS 4 121 121 #define WM8904_DRC_REGS 4 122 - #define WM8904_EQ_REGS 25 122 + #define WM8904_EQ_REGS 24 123 123 124 124 /** 125 125 * DRC configurations are specified with a label and a set of register
+1
sound/hda/ext/hdac_ext_bus.c
··· 19 19 20 20 #include <linux/module.h> 21 21 #include <linux/slab.h> 22 + #include <linux/io.h> 22 23 #include <sound/hdaudio_ext.h> 23 24 24 25 MODULE_DESCRIPTION("HDA extended core");
+1 -3
sound/pci/hda/hda_codec.c
··· 3367 3367 int dev, err; 3368 3368 3369 3369 err = snd_hda_codec_parse_pcms(codec); 3370 - if (err < 0) { 3371 - snd_hda_codec_reset(codec); 3370 + if (err < 0) 3372 3371 return err; 3373 - } 3374 3372 3375 3373 /* attach a new PCM streams */ 3376 3374 list_for_each_entry(cpcm, &codec->pcm_list_head, list) {
+1
sound/pci/hda/patch_conexant.c
··· 819 819 SND_PCI_QUIRK(0x17aa, 0x21da, "Lenovo X220", CXT_PINCFG_LENOVO_TP410), 820 820 SND_PCI_QUIRK(0x17aa, 0x21db, "Lenovo X220-tablet", CXT_PINCFG_LENOVO_TP410), 821 821 SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo IdeaPad Z560", CXT_FIXUP_MUTE_LED_EAPD), 822 + SND_PCI_QUIRK(0x17aa, 0x390b, "Lenovo G50-80", CXT_FIXUP_STEREO_DMIC), 822 823 SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC), 823 824 SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_FIXUP_STEREO_DMIC), 824 825 SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC),
+13 -13
sound/soc/codecs/rt298.c
··· 50 50 }; 51 51 52 52 static struct reg_default rt298_index_def[] = { 53 - { 0x01, 0xaaaa }, 54 - { 0x02, 0x8aaa }, 53 + { 0x01, 0xa5a8 }, 54 + { 0x02, 0x8e95 }, 55 55 { 0x03, 0x0002 }, 56 - { 0x04, 0xaf01 }, 57 - { 0x08, 0x000d }, 58 - { 0x09, 0xd810 }, 59 - { 0x0a, 0x0120 }, 56 + { 0x04, 0xaf67 }, 57 + { 0x08, 0x200f }, 58 + { 0x09, 0xd010 }, 59 + { 0x0a, 0x0100 }, 60 60 { 0x0b, 0x0000 }, 61 61 { 0x0d, 0x2800 }, 62 - { 0x0f, 0x0000 }, 63 - { 0x19, 0x0a17 }, 62 + { 0x0f, 0x0022 }, 63 + { 0x19, 0x0217 }, 64 64 { 0x20, 0x0020 }, 65 65 { 0x33, 0x0208 }, 66 66 { 0x46, 0x0300 }, 67 - { 0x49, 0x0004 }, 68 - { 0x4f, 0x50e9 }, 69 - { 0x50, 0x2000 }, 70 - { 0x63, 0x2902 }, 67 + { 0x49, 0x4004 }, 68 + { 0x4f, 0x50c9 }, 69 + { 0x50, 0x3000 }, 70 + { 0x63, 0x1b02 }, 71 71 { 0x67, 0x1111 }, 72 72 { 0x68, 0x1016 }, 73 73 { 0x69, 0x273f }, ··· 1214 1214 mdelay(10); 1215 1215 1216 1216 if (!rt298->pdata.gpio2_en) 1217 - regmap_write(rt298->regmap, RT298_SET_DMIC2_DEFAULT, 0x4000); 1217 + regmap_write(rt298->regmap, RT298_SET_DMIC2_DEFAULT, 0x40); 1218 1218 else 1219 1219 regmap_write(rt298->regmap, RT298_SET_DMIC2_DEFAULT, 0); 1220 1220
+2
sound/soc/codecs/wm8962.c
··· 3808 3808 3809 3809 wm8962_reset(wm8962); 3810 3810 3811 + regcache_mark_dirty(wm8962->regmap); 3812 + 3811 3813 /* SYSCLK defaults to on; make sure it is off so we can safely 3812 3814 * write to registers if the device is declocked. 3813 3815 */
+28
sound/soc/soc-ops.c
··· 207 207 EXPORT_SYMBOL_GPL(snd_soc_info_volsw); 208 208 209 209 /** 210 + * snd_soc_info_volsw_sx - Mixer info callback for SX TLV controls 211 + * @kcontrol: mixer control 212 + * @uinfo: control element information 213 + * 214 + * Callback to provide information about a single mixer control, or a double 215 + * mixer control that spans 2 registers of the SX TLV type. SX TLV controls 216 + * have a range that represents both positive and negative values either side 217 + * of zero but without a sign bit. 218 + * 219 + * Returns 0 for success. 220 + */ 221 + int snd_soc_info_volsw_sx(struct snd_kcontrol *kcontrol, 222 + struct snd_ctl_elem_info *uinfo) 223 + { 224 + struct soc_mixer_control *mc = 225 + (struct soc_mixer_control *)kcontrol->private_value; 226 + 227 + snd_soc_info_volsw(kcontrol, uinfo); 228 + /* Max represents the number of levels in an SX control not the 229 + * maximum value, so add the minimum value back on 230 + */ 231 + uinfo->value.integer.max += mc->min; 232 + 233 + return 0; 234 + } 235 + EXPORT_SYMBOL_GPL(snd_soc_info_volsw_sx); 236 + 237 + /** 210 238 * snd_soc_get_volsw - single mixer get callback 211 239 * @kcontrol: mixer control 212 240 * @ucontrol: control element information