Commit 8654844c authored by Takashi Iwai's avatar Takashi Iwai

Merge branch 'for-linus' into for-next

Resolve the non-trivial conflict due to the hdac regmap API changes.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parents 01ec65c8 132bd96b
...@@ -436,8 +436,9 @@ static unsigned int get_num_devices(struct hda_codec *codec, hda_nid_t nid) ...@@ -436,8 +436,9 @@ static unsigned int get_num_devices(struct hda_codec *codec, hda_nid_t nid)
get_wcaps_type(wcaps) != AC_WID_PIN) get_wcaps_type(wcaps) != AC_WID_PIN)
return 0; return 0;
if (_snd_hdac_read_parm(&codec->core, nid, AC_PAR_DEVLIST_LEN, &parm)) parm = snd_hdac_read_parm_uncached(&codec->core, nid, AC_PAR_DEVLIST_LEN);
return 0; /* error */ if (parm == -1)
parm = 0;
return parm & AC_DEV_LIST_LEN_MASK; return parm & AC_DEV_LIST_LEN_MASK;
} }
......
...@@ -2166,6 +2166,7 @@ static const struct hda_fixup alc882_fixups[] = { ...@@ -2166,6 +2166,7 @@ static const struct hda_fixup alc882_fixups[] = {
static const struct snd_pci_quirk alc882_fixup_tbl[] = { static const struct snd_pci_quirk alc882_fixup_tbl[] = {
SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_FIXUP_ACER_EAPD), SND_PCI_QUIRK(0x1025, 0x006c, "Acer Aspire 9810", ALC883_FIXUP_ACER_EAPD),
SND_PCI_QUIRK(0x1025, 0x0090, "Acer Aspire", ALC883_FIXUP_ACER_EAPD), SND_PCI_QUIRK(0x1025, 0x0090, "Acer Aspire", ALC883_FIXUP_ACER_EAPD),
SND_PCI_QUIRK(0x1025, 0x0107, "Acer Aspire", ALC883_FIXUP_ACER_EAPD),
SND_PCI_QUIRK(0x1025, 0x010a, "Acer Ferrari 5000", ALC883_FIXUP_ACER_EAPD), SND_PCI_QUIRK(0x1025, 0x010a, "Acer Ferrari 5000", ALC883_FIXUP_ACER_EAPD),
SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_FIXUP_ACER_EAPD), SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_FIXUP_ACER_EAPD),
SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_FIXUP_ACER_EAPD), SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_FIXUP_ACER_EAPD),
...@@ -5402,6 +5403,13 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { ...@@ -5402,6 +5403,13 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
{0x17, 0x40000000}, {0x17, 0x40000000},
{0x1d, 0x40700001}, {0x1d, 0x40700001},
{0x21, 0x02211040}), {0x21, 0x02211040}),
SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
ALC255_STANDARD_PINS,
{0x12, 0x90a60160},
{0x14, 0x90170120},
{0x17, 0x40000000},
{0x1d, 0x40700001},
{0x21, 0x02211030}),
SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
ALC256_STANDARD_PINS, ALC256_STANDARD_PINS,
{0x13, 0x40000000}), {0x13, 0x40000000}),
......
...@@ -452,6 +452,15 @@ static int via_suspend(struct hda_codec *codec) ...@@ -452,6 +452,15 @@ static int via_suspend(struct hda_codec *codec)
return 0; return 0;
} }
static int via_resume(struct hda_codec *codec)
{
/* some delay here to make jack detection working (bko#98921) */
msleep(10);
codec->patch_ops.init(codec);
regcache_sync(codec->core.regmap);
return 0;
}
#endif #endif
#ifdef CONFIG_PM #ifdef CONFIG_PM
...@@ -477,6 +486,7 @@ static const struct hda_codec_ops via_patch_ops = { ...@@ -477,6 +486,7 @@ static const struct hda_codec_ops via_patch_ops = {
.unsol_event = snd_hda_jack_unsol_event, .unsol_event = snd_hda_jack_unsol_event,
#ifdef CONFIG_PM #ifdef CONFIG_PM
.suspend = via_suspend, .suspend = via_suspend,
.resume = via_resume,
.check_power_status = via_check_power_status, .check_power_status = via_check_power_status,
#endif #endif
}; };
......
...@@ -918,6 +918,7 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval, ...@@ -918,6 +918,7 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval,
case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */ case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */
case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */ case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */
case USB_ID(0x046d, 0x0826): /* HD Webcam c525 */ case USB_ID(0x046d, 0x0826): /* HD Webcam c525 */
case USB_ID(0x046d, 0x08ca): /* Logitech Quickcam Fusion */
case USB_ID(0x046d, 0x0991): case USB_ID(0x046d, 0x0991):
/* Most audio usb devices lie about volume resolution. /* Most audio usb devices lie about volume resolution.
* Most Logitech webcams have res = 384. * Most Logitech webcams have res = 384.
...@@ -1582,12 +1583,6 @@ static int parse_audio_mixer_unit(struct mixer_build *state, int unitid, ...@@ -1582,12 +1583,6 @@ static int parse_audio_mixer_unit(struct mixer_build *state, int unitid,
unitid); unitid);
return -EINVAL; return -EINVAL;
} }
/* no bmControls field (e.g. Maya44) -> ignore */
if (desc->bLength <= 10 + input_pins) {
usb_audio_dbg(state->chip, "MU %d has no bmControls field\n",
unitid);
return 0;
}
num_ins = 0; num_ins = 0;
ich = 0; ich = 0;
...@@ -1595,6 +1590,9 @@ static int parse_audio_mixer_unit(struct mixer_build *state, int unitid, ...@@ -1595,6 +1590,9 @@ static int parse_audio_mixer_unit(struct mixer_build *state, int unitid,
err = parse_audio_unit(state, desc->baSourceID[pin]); err = parse_audio_unit(state, desc->baSourceID[pin]);
if (err < 0) if (err < 0)
continue; continue;
/* no bmControls field (e.g. Maya44) -> ignore */
if (desc->bLength <= 10 + input_pins)
continue;
err = check_input_term(state, desc->baSourceID[pin], &iterm); err = check_input_term(state, desc->baSourceID[pin], &iterm);
if (err < 0) if (err < 0)
return err; return err;
......
...@@ -436,6 +436,11 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = { ...@@ -436,6 +436,11 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = {
.id = USB_ID(0x200c, 0x1018), .id = USB_ID(0x200c, 0x1018),
.map = ebox44_map, .map = ebox44_map,
}, },
{
/* MAYA44 USB+ */
.id = USB_ID(0x2573, 0x0008),
.map = maya44_map,
},
{ {
/* KEF X300A */ /* KEF X300A */
.id = USB_ID(0x27ac, 0x1000), .id = USB_ID(0x27ac, 0x1000),
......
...@@ -1120,6 +1120,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip) ...@@ -1120,6 +1120,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */ case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */
case USB_ID(0x045E, 0x0779): /* MS Lifecam HD-3000 */ case USB_ID(0x045E, 0x0779): /* MS Lifecam HD-3000 */
case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */ case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */
return true; return true;
} }
return false; return false;
...@@ -1266,8 +1267,9 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, ...@@ -1266,8 +1267,9 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
if (fp->altsetting == 2) if (fp->altsetting == 2)
return SNDRV_PCM_FMTBIT_DSD_U32_BE; return SNDRV_PCM_FMTBIT_DSD_U32_BE;
break; break;
/* DIYINHK DSD DXD 384kHz USB to I2S/DSD */
case USB_ID(0x20b1, 0x2009): case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */
case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */
if (fp->altsetting == 3) if (fp->altsetting == 3)
return SNDRV_PCM_FMTBIT_DSD_U32_BE; return SNDRV_PCM_FMTBIT_DSD_U32_BE;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment