Skip to content

Commit 03c850e

Browse files
committed
Merge tag 'sound-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "This update contains overall only driver-specific fixes. Slightly large LOC are seen in usb-audio driver for a couple of new device quirks and cs42l71 ASoC driver for enhanced features. The others are a few small (regression) fixes HD-audio, and yet other small / trival ASoC fixes." * tag 'sound-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: usb-audio: Support for Digidesign Mbox 2 USB sound card: ALSA: HDA: Fix sound resume hang ALSA: hda - bug fix for invalid connection list of Haswell HDMI codec pins ALSA: hda - Fix the wrong pincaps set in ALC861VD dallas/hp fixup ALSA: hda - Set codec->single_adc_amp flag for Realtek codecs ASoC: atmel-ssc: change disable to disable in dts node ASoC: Prevent pop_wait overwrite ALSA: usb-audio: ignore-quirk for HP Wireless Audio ALSA: hda - Always turn on pins for HDMI/DP ALSA: hda - Fix pin configuration of HP Pavilion dv7 ASoC: core: Fix splitting of log messages ASoC: cs42l73: Change VSPIN/VSPOUT to VSPINOUT ASoC: cs42l73: Add DAPM events for power down. ASoC: cs42l73: Add DMIC's as DAPM inputs. ASoC: sigmadsp: Fix endianness conversion issue ASoC: tpa6130a2: Use devm_* APIs
2 parents 85d5b70 + cb99864 commit 03c850e

File tree

19 files changed

+371
-82
lines changed

19 files changed

+371
-82
lines changed

arch/arm/boot/dts/at91sam9263.dtsi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,14 +368,14 @@
368368
compatible = "atmel,at91rm9200-ssc";
369369
reg = <0xfff98000 0x4000>;
370370
interrupts = <16 4 5>;
371-
status = "disable";
371+
status = "disabled";
372372
};
373373

374374
ssc1: ssc@fff9c000 {
375375
compatible = "atmel,at91rm9200-ssc";
376376
reg = <0xfff9c000 0x4000>;
377377
interrupts = <17 4 5>;
378-
status = "disable";
378+
status = "disabled";
379379
};
380380

381381
macb0: ethernet@fffbc000 {

arch/arm/boot/dts/at91sam9g45.dtsi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,14 +425,14 @@
425425
compatible = "atmel,at91sam9g45-ssc";
426426
reg = <0xfff9c000 0x4000>;
427427
interrupts = <16 4 5>;
428-
status = "disable";
428+
status = "disabled";
429429
};
430430

431431
ssc1: ssc@fffa0000 {
432432
compatible = "atmel,at91sam9g45-ssc";
433433
reg = <0xfffa0000 0x4000>;
434434
interrupts = <17 4 5>;
435-
status = "disable";
435+
status = "disabled";
436436
};
437437

438438
adc0: adc@fffb0000 {

arch/arm/boot/dts/at91sam9x5.dtsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
compatible = "atmel,at91sam9g45-ssc";
9393
reg = <0xf0010000 0x4000>;
9494
interrupts = <28 4 5>;
95-
status = "disable";
95+
status = "disabled";
9696
};
9797

9898
tcb0: timer@f8008000 {

include/sound/soc-dai.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,6 @@ struct snd_soc_dai {
242242
unsigned int symmetric_rates:1;
243243
struct snd_pcm_runtime *runtime;
244244
unsigned int active;
245-
unsigned char pop_wait:1;
246245
unsigned char probed:1;
247246

248247
struct snd_soc_dapm_widget *playback_widget;

include/sound/soc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,6 +1039,7 @@ struct snd_soc_pcm_runtime {
10391039
struct snd_soc_dpcm_runtime dpcm[2];
10401040

10411041
long pmdown_time;
1042+
unsigned char pop_wait:1;
10421043

10431044
/* runtime devices */
10441045
struct snd_pcm *pcm;

sound/pci/hda/hda_intel.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2876,7 +2876,7 @@ static int azx_free(struct azx *chip)
28762876
azx_notifier_unregister(chip);
28772877

28782878
chip->init_failed = 1; /* to be sure */
2879-
complete(&chip->probe_wait);
2879+
complete_all(&chip->probe_wait);
28802880

28812881
if (use_vga_switcheroo(chip)) {
28822882
if (chip->disabled && chip->bus)
@@ -3504,7 +3504,7 @@ static int azx_probe(struct pci_dev *pci,
35043504
pm_runtime_put_noidle(&pci->dev);
35053505

35063506
dev++;
3507-
complete(&chip->probe_wait);
3507+
complete_all(&chip->probe_wait);
35083508
return 0;
35093509

35103510
out_free:

sound/pci/hda/patch_hdmi.c

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -431,9 +431,11 @@ static void hdmi_init_pin(struct hda_codec *codec, hda_nid_t pin_nid)
431431
if (get_wcaps(codec, pin_nid) & AC_WCAP_OUT_AMP)
432432
snd_hda_codec_write(codec, pin_nid, 0,
433433
AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
434-
/* Disable pin out until stream is active*/
434+
/* Enable pin out: some machines with GM965 gets broken output when
435+
* the pin is disabled or changed while using with HDMI
436+
*/
435437
snd_hda_codec_write(codec, pin_nid, 0,
436-
AC_VERB_SET_PIN_WIDGET_CONTROL, 0);
438+
AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
437439
}
438440

439441
static int hdmi_get_channel_count(struct hda_codec *codec, hda_nid_t cvt_nid)
@@ -1341,7 +1343,6 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
13411343
struct hdmi_spec *spec = codec->spec;
13421344
int pin_idx = hinfo_to_pin_index(spec, hinfo);
13431345
hda_nid_t pin_nid = spec->pins[pin_idx].pin_nid;
1344-
int pinctl;
13451346
bool non_pcm;
13461347

13471348
non_pcm = check_non_pcm_per_cvt(codec, cvt_nid);
@@ -1350,11 +1351,6 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
13501351

13511352
hdmi_setup_audio_infoframe(codec, pin_idx, non_pcm, substream);
13521353

1353-
pinctl = snd_hda_codec_read(codec, pin_nid, 0,
1354-
AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
1355-
snd_hda_codec_write(codec, pin_nid, 0,
1356-
AC_VERB_SET_PIN_WIDGET_CONTROL, pinctl | PIN_OUT);
1357-
13581354
return hdmi_setup_stream(codec, cvt_nid, pin_nid, stream_tag, format);
13591355
}
13601356

@@ -1374,7 +1370,6 @@ static int hdmi_pcm_close(struct hda_pcm_stream *hinfo,
13741370
int cvt_idx, pin_idx;
13751371
struct hdmi_spec_per_cvt *per_cvt;
13761372
struct hdmi_spec_per_pin *per_pin;
1377-
int pinctl;
13781373

13791374
if (hinfo->nid) {
13801375
cvt_idx = cvt_nid_to_cvt_index(spec, hinfo->nid);
@@ -1391,11 +1386,6 @@ static int hdmi_pcm_close(struct hda_pcm_stream *hinfo,
13911386
return -EINVAL;
13921387
per_pin = &spec->pins[pin_idx];
13931388

1394-
pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0,
1395-
AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
1396-
snd_hda_codec_write(codec, per_pin->pin_nid, 0,
1397-
AC_VERB_SET_PIN_WIDGET_CONTROL,
1398-
pinctl & ~PIN_OUT);
13991389
snd_hda_spdif_ctls_unassign(codec, pin_idx);
14001390
per_pin->chmap_set = false;
14011391
memset(per_pin->chmap, 0, sizeof(per_pin->chmap));
@@ -1691,6 +1681,30 @@ static const struct hda_codec_ops generic_hdmi_patch_ops = {
16911681
.unsol_event = hdmi_unsol_event,
16921682
};
16931683

1684+
static void intel_haswell_fixup_connect_list(struct hda_codec *codec)
1685+
{
1686+
unsigned int vendor_param;
1687+
hda_nid_t list[3] = {0x2, 0x3, 0x4};
1688+
1689+
vendor_param = snd_hda_codec_read(codec, 0x08, 0, 0xf81, 0);
1690+
if (vendor_param == -1 || vendor_param & 0x02)
1691+
return;
1692+
1693+
/* enable DP1.2 mode */
1694+
vendor_param |= 0x02;
1695+
snd_hda_codec_read(codec, 0x08, 0, 0x781, vendor_param);
1696+
1697+
vendor_param = snd_hda_codec_read(codec, 0x08, 0, 0xf81, 0);
1698+
if (vendor_param == -1 || !(vendor_param & 0x02))
1699+
return;
1700+
1701+
/* override 3 pins connection list */
1702+
snd_hda_override_conn_list(codec, 0x05, 3, list);
1703+
snd_hda_override_conn_list(codec, 0x06, 3, list);
1704+
snd_hda_override_conn_list(codec, 0x07, 3, list);
1705+
}
1706+
1707+
16941708
static int patch_generic_hdmi(struct hda_codec *codec)
16951709
{
16961710
struct hdmi_spec *spec;
@@ -1700,6 +1714,10 @@ static int patch_generic_hdmi(struct hda_codec *codec)
17001714
return -ENOMEM;
17011715

17021716
codec->spec = spec;
1717+
1718+
if (codec->vendor_id == 0x80862807)
1719+
intel_haswell_fixup_connect_list(codec);
1720+
17031721
if (hdmi_parse_codec(codec) < 0) {
17041722
codec->spec = NULL;
17051723
kfree(spec);

sound/pci/hda/patch_realtek.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4373,6 +4373,7 @@ static int alc_alloc_spec(struct hda_codec *codec, hda_nid_t mixer_nid)
43734373
if (!spec)
43744374
return -ENOMEM;
43754375
codec->spec = spec;
4376+
codec->single_adc_amp = 1;
43764377
spec->mixer_nid = mixer_nid;
43774378
snd_hda_gen_init(&spec->gen);
43784379
snd_array_init(&spec->kctls, sizeof(struct snd_kcontrol_new), 32);
@@ -6569,8 +6570,8 @@ static void alc861vd_fixup_dallas(struct hda_codec *codec,
65696570
const struct alc_fixup *fix, int action)
65706571
{
65716572
if (action == ALC_FIXUP_ACT_PRE_PROBE) {
6572-
snd_hda_override_pin_caps(codec, 0x18, 0x00001714);
6573-
snd_hda_override_pin_caps(codec, 0x19, 0x0000171c);
6573+
snd_hda_override_pin_caps(codec, 0x18, 0x00000734);
6574+
snd_hda_override_pin_caps(codec, 0x19, 0x0000073c);
65746575
}
65756576
}
65766577

sound/pci/hda/patch_sigmatel.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1725,7 +1725,7 @@ static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = {
17251725
SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1658,
17261726
"HP", STAC_92HD83XXX_HP_cNB11_INTQUAD),
17271727
SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1659,
1728-
"HP", STAC_92HD83XXX_HP_cNB11_INTQUAD),
1728+
"HP Pavilion dv7", STAC_HP_DV7_4000),
17291729
SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x165A,
17301730
"HP", STAC_92HD83XXX_HP_cNB11_INTQUAD),
17311731
SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x165B,

0 commit comments

Comments
 (0)