mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 23:24:11 +08:00
Merge branch 'for-linus' into for-next
Resolved the conflicts with the latest HDA HDMI fixes. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
commit
6defb60ae4
@ -149,8 +149,6 @@ odev_release(struct inode *inode, struct file *file)
|
||||
if ((dp = file->private_data) == NULL)
|
||||
return 0;
|
||||
|
||||
snd_seq_oss_drain_write(dp);
|
||||
|
||||
mutex_lock(®ister_mutex);
|
||||
snd_seq_oss_release(dp);
|
||||
mutex_unlock(®ister_mutex);
|
||||
|
@ -127,7 +127,6 @@ int snd_seq_oss_write(struct seq_oss_devinfo *dp, const char __user *buf, int co
|
||||
unsigned int snd_seq_oss_poll(struct seq_oss_devinfo *dp, struct file *file, poll_table * wait);
|
||||
|
||||
void snd_seq_oss_reset(struct seq_oss_devinfo *dp);
|
||||
void snd_seq_oss_drain_write(struct seq_oss_devinfo *dp);
|
||||
|
||||
/* */
|
||||
void snd_seq_oss_process_queue(struct seq_oss_devinfo *dp, abstime_t time);
|
||||
|
@ -435,22 +435,6 @@ snd_seq_oss_release(struct seq_oss_devinfo *dp)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Wait until the queue is empty (if we don't have nonblock)
|
||||
*/
|
||||
void
|
||||
snd_seq_oss_drain_write(struct seq_oss_devinfo *dp)
|
||||
{
|
||||
if (! dp->timer->running)
|
||||
return;
|
||||
if (is_write_mode(dp->file_mode) && !is_nonblock_mode(dp->file_mode) &&
|
||||
dp->writeq) {
|
||||
while (snd_seq_oss_writeq_sync(dp->writeq))
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* reset sequencer devices
|
||||
*/
|
||||
|
@ -2936,13 +2936,6 @@ static int patch_generic_hdmi(struct hda_codec *codec)
|
||||
is_broxton(codec))
|
||||
codec->core.link_power_control = 1;
|
||||
|
||||
if (codec_has_acomp(codec)) {
|
||||
codec->depop_delay = 0;
|
||||
spec->i915_audio_ops.audio_ptr = codec;
|
||||
spec->i915_audio_ops.pin_eld_notify = intel_pin_eld_notify;
|
||||
snd_hdac_i915_register_notifier(&spec->i915_audio_ops);
|
||||
}
|
||||
|
||||
if (hdmi_parse_codec(codec) < 0) {
|
||||
if (spec->i915_bound)
|
||||
snd_hdac_i915_exit(&codec->bus->core);
|
||||
@ -2964,6 +2957,18 @@ static int patch_generic_hdmi(struct hda_codec *codec)
|
||||
|
||||
init_channel_allocations();
|
||||
|
||||
if (codec_has_acomp(codec)) {
|
||||
codec->depop_delay = 0;
|
||||
spec->i915_audio_ops.audio_ptr = codec;
|
||||
/* intel_audio_codec_enable() or intel_audio_codec_disable()
|
||||
* will call pin_eld_notify with using audio_ptr pointer
|
||||
* We need make sure audio_ptr is really setup
|
||||
*/
|
||||
wmb();
|
||||
spec->i915_audio_ops.pin_eld_notify = intel_pin_eld_notify;
|
||||
snd_hdac_i915_register_notifier(&spec->i915_audio_ops);
|
||||
}
|
||||
|
||||
WARN_ON(spec->dyn_pcm_assign && !codec_has_acomp(codec));
|
||||
return 0;
|
||||
}
|
||||
|
@ -5412,6 +5412,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x1025, 0x080d, "Acer Aspire V5-122P", ALC269_FIXUP_ASPIRE_HEADSET_MIC),
|
||||
SND_PCI_QUIRK(0x1025, 0x0740, "Acer AO725", ALC271_FIXUP_HP_GATE_MIC_JACK),
|
||||
SND_PCI_QUIRK(0x1025, 0x0742, "Acer AO756", ALC271_FIXUP_HP_GATE_MIC_JACK),
|
||||
SND_PCI_QUIRK(0x1025, 0x0762, "Acer Aspire E1-472", ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572),
|
||||
SND_PCI_QUIRK(0x1025, 0x0775, "Acer Aspire E1-572", ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572),
|
||||
SND_PCI_QUIRK(0x1025, 0x079b, "Acer Aspire V5-573G", ALC282_FIXUP_ASPIRE_V5_PINS),
|
||||
SND_PCI_QUIRK(0x1025, 0x106d, "Acer Cloudbook 14", ALC283_FIXUP_CHROME_BOOK),
|
||||
|
@ -2879,7 +2879,7 @@ static int snd_hdsp_get_dds_offset(struct snd_kcontrol *kcontrol, struct snd_ctl
|
||||
{
|
||||
struct hdsp *hdsp = snd_kcontrol_chip(kcontrol);
|
||||
|
||||
ucontrol->value.enumerated.item[0] = hdsp_dds_offset(hdsp);
|
||||
ucontrol->value.integer.value[0] = hdsp_dds_offset(hdsp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2891,7 +2891,7 @@ static int snd_hdsp_put_dds_offset(struct snd_kcontrol *kcontrol, struct snd_ctl
|
||||
|
||||
if (!snd_hdsp_use_is_exclusive(hdsp))
|
||||
return -EBUSY;
|
||||
val = ucontrol->value.enumerated.item[0];
|
||||
val = ucontrol->value.integer.value[0];
|
||||
spin_lock_irq(&hdsp->lock);
|
||||
if (val != hdsp_dds_offset(hdsp))
|
||||
change = (hdsp_set_dds_offset(hdsp, val) == 0) ? 1 : 0;
|
||||
|
@ -1601,6 +1601,9 @@ static void hdspm_set_dds_value(struct hdspm *hdspm, int rate)
|
||||
{
|
||||
u64 n;
|
||||
|
||||
if (snd_BUG_ON(rate <= 0))
|
||||
return;
|
||||
|
||||
if (rate >= 112000)
|
||||
rate /= 4;
|
||||
else if (rate >= 56000)
|
||||
@ -2215,6 +2218,8 @@ static int hdspm_get_system_sample_rate(struct hdspm *hdspm)
|
||||
} else {
|
||||
/* slave mode, return external sample rate */
|
||||
rate = hdspm_external_sample_rate(hdspm);
|
||||
if (!rate)
|
||||
rate = hdspm->system_sample_rate;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2260,8 +2265,11 @@ static int snd_hdspm_put_system_sample_rate(struct snd_kcontrol *kcontrol,
|
||||
ucontrol)
|
||||
{
|
||||
struct hdspm *hdspm = snd_kcontrol_chip(kcontrol);
|
||||
int rate = ucontrol->value.integer.value[0];
|
||||
|
||||
hdspm_set_dds_value(hdspm, ucontrol->value.enumerated.item[0]);
|
||||
if (rate < 27000 || rate > 207000)
|
||||
return -EINVAL;
|
||||
hdspm_set_dds_value(hdspm, ucontrol->value.integer.value[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -4449,7 +4457,7 @@ static int snd_hdspm_get_tco_word_term(struct snd_kcontrol *kcontrol,
|
||||
{
|
||||
struct hdspm *hdspm = snd_kcontrol_chip(kcontrol);
|
||||
|
||||
ucontrol->value.enumerated.item[0] = hdspm->tco->term;
|
||||
ucontrol->value.integer.value[0] = hdspm->tco->term;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -4460,8 +4468,8 @@ static int snd_hdspm_put_tco_word_term(struct snd_kcontrol *kcontrol,
|
||||
{
|
||||
struct hdspm *hdspm = snd_kcontrol_chip(kcontrol);
|
||||
|
||||
if (hdspm->tco->term != ucontrol->value.enumerated.item[0]) {
|
||||
hdspm->tco->term = ucontrol->value.enumerated.item[0];
|
||||
if (hdspm->tco->term != ucontrol->value.integer.value[0]) {
|
||||
hdspm->tco->term = ucontrol->value.integer.value[0];
|
||||
|
||||
hdspm_tco_write(hdspm);
|
||||
|
||||
|
@ -1123,6 +1123,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
|
||||
case USB_ID(0x045E, 0x076F): /* MS Lifecam HD-6000 */
|
||||
case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */
|
||||
case USB_ID(0x045E, 0x0779): /* MS Lifecam HD-3000 */
|
||||
case USB_ID(0x047F, 0xAA05): /* Plantronics DA45 */
|
||||
case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
|
||||
case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */
|
||||
case USB_ID(0x21B4, 0x0081): /* AudioQuest DragonFly */
|
||||
|
Loading…
Reference in New Issue
Block a user