Sound fixes for 3.6-rc6
Just a few small / trivial regression fixes at this time. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iQIcBAABAgAGBQJQUYdMAAoJEGwxgFQ9KSmk88kP/1Qnl/fgqecvlmu8f2r0mrio K5RgmgdbTk5PyH6Y3gH5AArmHgZMrUZRb7oNX/+YCmBTTFexG7JAnWnMGESIsxsM jebU719bt+62g4UiLYjYVanN1tjxUZwPCfLzf7wjnsPkUj7tz+MVAntk3W49psue LomSTzvlGeCWWecdCRteaCk5MRkKNc4t6RgQd6njf/grf4jEQoVxDXYiHIN2uNxT YFkjnzHFOzcOIEtut2QDDd2Gi+4BWpVnbpNWTKfMXnyhsUibVBtpRV0D3KCK6N+m Lewp6B7/7PuWvb8jvxY7nJhidM8sr7zw4ucc46v4GV+DiYd2bVpl/r3tflfvRaRt 289r5MpwdrjDcTlyoIr0Z8kKVLDDLCNUbnYq3L4JEh7TAb/0oOdeO1BImynVbQNf snHfpt8Cjl3O6SK2I9Pr2nvdSU2rqZ3RCVBshIHuEueleFAo5JLr1PeutObaMnTK MR0IDYFyPpsltPq0GjaH9n0xwOnL2xip27/r1iNjb/N9aeqP6Hxj7XsmMoPbSmFv RkwD+UoH6aenXqXsmu8A+fHkMqqproriQYXoQlJbTTXvAjFjo8++FYHPtDmMhxjW D74HRp28AofhyT8TaKDJM8C5YgGcBPZinwIP0iuScrsIiiYQ704LJbQrGZ0IcivH 7AwlvnBrXl/IZ13G4DA6 =13mk -----END PGP SIGNATURE----- Merge tag 'sound-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "Just a few small / trivial regression fixes at this time." * tag 'sound-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: ice1724: Use linear scale for AK4396 volume control. ALSA: hda_intel: add position_fix quirk for Asus K53E ALSA: compress_core: fix open flags test in snd_compr_open() ALSA: hda - Fix Oops at codec reset/reconfig ALSA: usb-audio: Fix bogus error messages for delay accounting ALSA: hda - Fix missing Master volume for STAC9200/925x
This commit is contained in:
commit
fbcbe2b3c9
@ -80,14 +80,12 @@ static int snd_compr_open(struct inode *inode, struct file *f)
|
|||||||
int maj = imajor(inode);
|
int maj = imajor(inode);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (f->f_flags & O_WRONLY)
|
if ((f->f_flags & O_ACCMODE) == O_WRONLY)
|
||||||
dirn = SND_COMPRESS_PLAYBACK;
|
dirn = SND_COMPRESS_PLAYBACK;
|
||||||
else if (f->f_flags & O_RDONLY)
|
else if ((f->f_flags & O_ACCMODE) == O_RDONLY)
|
||||||
dirn = SND_COMPRESS_CAPTURE;
|
dirn = SND_COMPRESS_CAPTURE;
|
||||||
else {
|
else
|
||||||
pr_err("invalid direction\n");
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
|
||||||
|
|
||||||
if (maj == snd_major)
|
if (maj == snd_major)
|
||||||
compr = snd_lookup_minor_data(iminor(inode),
|
compr = snd_lookup_minor_data(iminor(inode),
|
||||||
|
@ -2353,6 +2353,7 @@ int snd_hda_codec_reset(struct hda_codec *codec)
|
|||||||
}
|
}
|
||||||
if (codec->patch_ops.free)
|
if (codec->patch_ops.free)
|
||||||
codec->patch_ops.free(codec);
|
codec->patch_ops.free(codec);
|
||||||
|
memset(&codec->patch_ops, 0, sizeof(codec->patch_ops));
|
||||||
snd_hda_jack_tbl_clear(codec);
|
snd_hda_jack_tbl_clear(codec);
|
||||||
codec->proc_widget_hook = NULL;
|
codec->proc_widget_hook = NULL;
|
||||||
codec->spec = NULL;
|
codec->spec = NULL;
|
||||||
@ -2368,7 +2369,6 @@ int snd_hda_codec_reset(struct hda_codec *codec)
|
|||||||
codec->num_pcms = 0;
|
codec->num_pcms = 0;
|
||||||
codec->pcm_info = NULL;
|
codec->pcm_info = NULL;
|
||||||
codec->preset = NULL;
|
codec->preset = NULL;
|
||||||
memset(&codec->patch_ops, 0, sizeof(codec->patch_ops));
|
|
||||||
codec->slave_dig_outs = NULL;
|
codec->slave_dig_outs = NULL;
|
||||||
codec->spdif_status_reset = 0;
|
codec->spdif_status_reset = 0;
|
||||||
module_put(codec->owner);
|
module_put(codec->owner);
|
||||||
|
@ -2701,6 +2701,7 @@ static struct snd_pci_quirk position_fix_list[] __devinitdata = {
|
|||||||
SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_LPIB),
|
SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_LPIB),
|
||||||
SND_PCI_QUIRK(0x1043, 0x81b3, "ASUS", POS_FIX_LPIB),
|
SND_PCI_QUIRK(0x1043, 0x81b3, "ASUS", POS_FIX_LPIB),
|
||||||
SND_PCI_QUIRK(0x1043, 0x81e7, "ASUS M2V", POS_FIX_LPIB),
|
SND_PCI_QUIRK(0x1043, 0x81e7, "ASUS M2V", POS_FIX_LPIB),
|
||||||
|
SND_PCI_QUIRK(0x1043, 0x1b43, "ASUS K53E", POS_FIX_POSBUF),
|
||||||
SND_PCI_QUIRK(0x104d, 0x9069, "Sony VPCS11V9E", POS_FIX_LPIB),
|
SND_PCI_QUIRK(0x104d, 0x9069, "Sony VPCS11V9E", POS_FIX_LPIB),
|
||||||
SND_PCI_QUIRK(0x10de, 0xcb89, "Macbook Pro 7,1", POS_FIX_LPIB),
|
SND_PCI_QUIRK(0x10de, 0xcb89, "Macbook Pro 7,1", POS_FIX_LPIB),
|
||||||
SND_PCI_QUIRK(0x1297, 0x3166, "Shuttle", POS_FIX_LPIB),
|
SND_PCI_QUIRK(0x1297, 0x3166, "Shuttle", POS_FIX_LPIB),
|
||||||
|
@ -1075,7 +1075,7 @@ static struct snd_kcontrol_new stac_smux_mixer = {
|
|||||||
|
|
||||||
static const char * const slave_pfxs[] = {
|
static const char * const slave_pfxs[] = {
|
||||||
"Front", "Surround", "Center", "LFE", "Side",
|
"Front", "Surround", "Center", "LFE", "Side",
|
||||||
"Headphone", "Speaker", "IEC958",
|
"Headphone", "Speaker", "IEC958", "PCM",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -297,6 +297,7 @@ static int ak4396_dac_vol_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const DECLARE_TLV_DB_SCALE(db_scale_wm_dac, -12700, 100, 1);
|
static const DECLARE_TLV_DB_SCALE(db_scale_wm_dac, -12700, 100, 1);
|
||||||
|
static const DECLARE_TLV_DB_LINEAR(ak4396_db_scale, TLV_DB_GAIN_MUTE, 0);
|
||||||
|
|
||||||
static struct snd_kcontrol_new prodigy_hd2_controls[] __devinitdata = {
|
static struct snd_kcontrol_new prodigy_hd2_controls[] __devinitdata = {
|
||||||
{
|
{
|
||||||
@ -307,7 +308,7 @@ static struct snd_kcontrol_new prodigy_hd2_controls[] __devinitdata = {
|
|||||||
.info = ak4396_dac_vol_info,
|
.info = ak4396_dac_vol_info,
|
||||||
.get = ak4396_dac_vol_get,
|
.get = ak4396_dac_vol_get,
|
||||||
.put = ak4396_dac_vol_put,
|
.put = ak4396_dac_vol_put,
|
||||||
.tlv = { .p = db_scale_wm_dac },
|
.tlv = { .p = ak4396_db_scale },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1140,6 +1140,12 @@ static void retire_playback_urb(struct snd_usb_substream *subs,
|
|||||||
int processed = urb->transfer_buffer_length / stride;
|
int processed = urb->transfer_buffer_length / stride;
|
||||||
int est_delay;
|
int est_delay;
|
||||||
|
|
||||||
|
/* ignore the delay accounting when procssed=0 is given, i.e.
|
||||||
|
* silent payloads are procssed before handling the actual data
|
||||||
|
*/
|
||||||
|
if (!processed)
|
||||||
|
return;
|
||||||
|
|
||||||
spin_lock_irqsave(&subs->lock, flags);
|
spin_lock_irqsave(&subs->lock, flags);
|
||||||
est_delay = snd_usb_pcm_delay(subs, runtime->rate);
|
est_delay = snd_usb_pcm_delay(subs, runtime->rate);
|
||||||
/* update delay with exact number of samples played */
|
/* update delay with exact number of samples played */
|
||||||
|
Loading…
Reference in New Issue
Block a user