mirror of https://gitee.com/openkylin/linux.git
Merge branch 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa
* 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa: [ALSA] version 1.0.14rc1 [ALSA] usbaudio - Fix kobject_add() error at reconnection [ALSA] usb: usbmixer error path fix [ALSA] _snd_cmipci_uswitch_put doesn't set zero flags [ALSA] hda-codec - Fix NULL dereference in generic hda code [ALSA] hda_intel: ALSA HD Audio patch for Intel ICH9 [ALSA] usb-audio: work around wrong frequency in CM6501 descriptors [ALSA] Fix potential NULL pointer dereference in echoaudio midi [ALSA] Audio: Add nvidia HD Audio controllers of MCP67 support to hda_intel.c
This commit is contained in:
commit
656829e2d0
|
@ -1,3 +1,3 @@
|
|||
/* include/version.h. Generated by alsa/ksync script. */
|
||||
#define CONFIG_SND_VERSION "1.0.14rc1"
|
||||
#define CONFIG_SND_DATE " (Wed Dec 20 08:11:48 2006 UTC)"
|
||||
#define CONFIG_SND_DATE " (Tue Jan 09 09:56:17 2007 UTC)"
|
||||
|
|
|
@ -2198,7 +2198,8 @@ static int _snd_cmipci_uswitch_put(struct snd_kcontrol *kcontrol,
|
|||
val = inb(cm->iobase + args->reg);
|
||||
else
|
||||
val = snd_cmipci_read(cm, args->reg);
|
||||
change = (val & args->mask) != (ucontrol->value.integer.value[0] ? args->mask : 0);
|
||||
change = (val & args->mask) != (ucontrol->value.integer.value[0] ?
|
||||
args->mask_on : (args->mask & ~args->mask_on));
|
||||
if (change) {
|
||||
val &= ~args->mask;
|
||||
if (ucontrol->value.integer.value[0])
|
||||
|
|
|
@ -213,7 +213,7 @@ static void snd_echo_midi_output_write(unsigned long data)
|
|||
sent = bytes = 0;
|
||||
spin_lock_irqsave(&chip->lock, flags);
|
||||
chip->midi_full = 0;
|
||||
if (chip->midi_out && !snd_rawmidi_transmit_empty(chip->midi_out)) {
|
||||
if (!snd_rawmidi_transmit_empty(chip->midi_out)) {
|
||||
bytes = snd_rawmidi_transmit_peek(chip->midi_out, buf,
|
||||
MIDI_OUT_BUFFER_SIZE - 1);
|
||||
DE_MID(("Try to send %d bytes...\n", bytes));
|
||||
|
@ -264,9 +264,11 @@ static void snd_echo_midi_output_trigger(struct snd_rawmidi_substream *substream
|
|||
}
|
||||
} else {
|
||||
if (chip->tinuse) {
|
||||
del_timer(&chip->timer);
|
||||
chip->tinuse = 0;
|
||||
spin_unlock_irq(&chip->lock);
|
||||
del_timer_sync(&chip->timer);
|
||||
DE_MID(("Timer removed\n"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
spin_unlock_irq(&chip->lock);
|
||||
|
|
|
@ -485,8 +485,9 @@ static const char *get_input_type(struct hda_gnode *node, unsigned int *pinctl)
|
|||
return "Front Aux";
|
||||
return "Aux";
|
||||
case AC_JACK_MIC_IN:
|
||||
if (node->pin_caps &
|
||||
(AC_PINCAP_VREF_80 << AC_PINCAP_VREF_SHIFT))
|
||||
if (pinctl &&
|
||||
(node->pin_caps &
|
||||
(AC_PINCAP_VREF_80 << AC_PINCAP_VREF_SHIFT)))
|
||||
*pinctl |= AC_PINCTL_VREF_80;
|
||||
if ((location & 0x0f) == AC_JACK_LOC_FRONT)
|
||||
return "Front Mic";
|
||||
|
|
|
@ -83,6 +83,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},"
|
|||
"{Intel, ICH7},"
|
||||
"{Intel, ESB2},"
|
||||
"{Intel, ICH8},"
|
||||
"{Intel, ICH9},"
|
||||
"{ATI, SB450},"
|
||||
"{ATI, SB600},"
|
||||
"{ATI, RS600},"
|
||||
|
@ -1711,6 +1712,8 @@ static struct pci_device_id azx_ids[] = {
|
|||
{ 0x8086, 0x27d8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH7 */
|
||||
{ 0x8086, 0x269a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ESB2 */
|
||||
{ 0x8086, 0x284b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH8 */
|
||||
{ 0x8086, 0x293e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH9 */
|
||||
{ 0x8086, 0x293f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH9 */
|
||||
{ 0x1002, 0x437b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB450 */
|
||||
{ 0x1002, 0x4383, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATI }, /* ATI SB600 */
|
||||
{ 0x1002, 0x793b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ATIHDMI }, /* ATI RS600 HDMI */
|
||||
|
@ -1718,9 +1721,14 @@ static struct pci_device_id azx_ids[] = {
|
|||
{ 0x1106, 0x3288, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_VIA }, /* VIA VT8251/VT8237A */
|
||||
{ 0x1039, 0x7502, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_SIS }, /* SIS966 */
|
||||
{ 0x10b9, 0x5461, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ULI }, /* ULI M5461 */
|
||||
{ 0x10de, 0x026c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 026c */
|
||||
{ 0x10de, 0x0371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 0371 */
|
||||
{ 0x10de, 0x03f0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA 03f0 */
|
||||
{ 0x10de, 0x026c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP51 */
|
||||
{ 0x10de, 0x0371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP55 */
|
||||
{ 0x10de, 0x03e4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP61 */
|
||||
{ 0x10de, 0x03f0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP61 */
|
||||
{ 0x10de, 0x044a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP65 */
|
||||
{ 0x10de, 0x044b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP65 */
|
||||
{ 0x10de, 0x055c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP67 */
|
||||
{ 0x10de, 0x055d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_NVIDIA }, /* NVIDIA MCP67 */
|
||||
{ 0, }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, azx_ids);
|
||||
|
|
|
@ -2471,7 +2471,13 @@ static int parse_audio_format_rates(struct snd_usb_audio *chip, struct audioform
|
|||
fp->nr_rates = nr_rates;
|
||||
fp->rate_min = fp->rate_max = combine_triple(&fmt[8]);
|
||||
for (r = 0, idx = offset + 1; r < nr_rates; r++, idx += 3) {
|
||||
unsigned int rate = fp->rate_table[r] = combine_triple(&fmt[idx]);
|
||||
unsigned int rate = combine_triple(&fmt[idx]);
|
||||
/* C-Media CM6501 mislabels its 96 kHz altsetting */
|
||||
if (rate == 48000 && nr_rates == 1 &&
|
||||
chip->usb_id == USB_ID(0x0d8c, 0x0201) &&
|
||||
fp->altsetting == 5 && fp->maxpacksize == 392)
|
||||
rate = 96000;
|
||||
fp->rate_table[r] = rate;
|
||||
if (rate < fp->rate_min)
|
||||
fp->rate_min = rate;
|
||||
else if (rate > fp->rate_max)
|
||||
|
@ -3280,6 +3286,7 @@ static void snd_usb_audio_create_proc(struct snd_usb_audio *chip)
|
|||
|
||||
static int snd_usb_audio_free(struct snd_usb_audio *chip)
|
||||
{
|
||||
usb_chip[chip->index] = NULL;
|
||||
kfree(chip);
|
||||
return 0;
|
||||
}
|
||||
|
@ -3541,7 +3548,6 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr)
|
|||
list_for_each(p, &chip->mixer_list) {
|
||||
snd_usb_mixer_disconnect(p);
|
||||
}
|
||||
usb_chip[chip->index] = NULL;
|
||||
mutex_unlock(®ister_mutex);
|
||||
snd_card_free_when_closed(card);
|
||||
} else {
|
||||
|
|
|
@ -1526,7 +1526,7 @@ static int parse_audio_selector_unit(struct mixer_build *state, int unitid, unsi
|
|||
namelist[i] = kmalloc(MAX_ITEM_NAME_LEN, GFP_KERNEL);
|
||||
if (! namelist[i]) {
|
||||
snd_printk(KERN_ERR "cannot malloc\n");
|
||||
while (--i > 0)
|
||||
while (i--)
|
||||
kfree(namelist[i]);
|
||||
kfree(namelist);
|
||||
kfree(cval);
|
||||
|
|
Loading…
Reference in New Issue