Loading sound/core/control.c +6 −1 Original line number Diff line number Diff line Loading @@ -225,8 +225,13 @@ struct snd_kcontrol *snd_ctl_new1(const struct snd_kcontrol_new *ncontrol, kctl.id.iface = ncontrol->iface; kctl.id.device = ncontrol->device; kctl.id.subdevice = ncontrol->subdevice; if (ncontrol->name) if (ncontrol->name) { strlcpy(kctl.id.name, ncontrol->name, sizeof(kctl.id.name)); if (strcmp(ncontrol->name, kctl.id.name) != 0) snd_printk(KERN_WARNING "Control name '%s' truncated to '%s'\n", ncontrol->name, kctl.id.name); } kctl.id.index = ncontrol->index; kctl.count = ncontrol->count ? ncontrol->count : 1; access = ncontrol->access == 0 ? SNDRV_CTL_ELEM_ACCESS_READWRITE : Loading sound/pci/hda/hda_codec.c +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ static struct hda_vendor_id hda_vendor_ids[] = { { 0x14f1, "Conexant" }, { 0x17e8, "Chrontel" }, { 0x1854, "LG" }, { 0x1aec, "Wolfson Microelectronics" }, { 0x434d, "C-Media" }, { 0x8384, "SigmaTel" }, {} /* terminator */ Loading sound/pci/hda/hda_intel.c +29 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ #include <linux/slab.h> #include <linux/pci.h> #include <linux/mutex.h> #include <linux/reboot.h> #include <sound/core.h> #include <sound/initval.h> #include "hda_codec.h" Loading Loading @@ -397,6 +398,9 @@ struct azx { /* for pending irqs */ struct work_struct irq_pending_work; /* reboot notifier (for mysterious hangup problem at power-down) */ struct notifier_block reboot_notifier; }; /* driver types */ Loading Loading @@ -1978,6 +1982,28 @@ static int azx_resume(struct pci_dev *pci) #endif /* CONFIG_PM */ /* * reboot notifier for hang-up problem at power-down */ static int azx_halt(struct notifier_block *nb, unsigned long event, void *buf) { struct azx *chip = container_of(nb, struct azx, reboot_notifier); azx_stop_chip(chip); return NOTIFY_OK; } static void azx_notifier_register(struct azx *chip) { chip->reboot_notifier.notifier_call = azx_halt; register_reboot_notifier(&chip->reboot_notifier); } static void azx_notifier_unregister(struct azx *chip) { if (chip->reboot_notifier.notifier_call) unregister_reboot_notifier(&chip->reboot_notifier); } /* * destructor */ Loading @@ -1985,6 +2011,8 @@ static int azx_free(struct azx *chip) { int i; azx_notifier_unregister(chip); if (chip->initialized) { azx_clear_irq_pending(chip); for (i = 0; i < chip->num_streams; i++) Loading Loading @@ -2348,6 +2376,7 @@ static int __devinit azx_probe(struct pci_dev *pci, pci_set_drvdata(pci, card); chip->running = 1; power_down_all_codecs(chip); azx_notifier_register(chip); dev++; return err; Loading sound/pci/hda/patch_analog.c +1 −0 Original line number Diff line number Diff line Loading @@ -3860,6 +3860,7 @@ static const char *ad1884a_models[AD1884A_MODELS] = { static struct snd_pci_quirk ad1884a_cfg_tbl[] = { SND_PCI_QUIRK(0x103c, 0x3030, "HP", AD1884A_MOBILE), SND_PCI_QUIRK(0x103c, 0x3056, "HP", AD1884A_MOBILE), SND_PCI_QUIRK(0x17aa, 0x20ac, "Thinkpad X300", AD1884A_THINKPAD), {} }; Loading sound/pci/hda/patch_sigmatel.c +1 −3 Original line number Diff line number Diff line Loading @@ -566,10 +566,8 @@ static int stac92xx_smux_enum_put(struct snd_kcontrol *kcontrol, nid = codec->slave_dig_outs[smux_idx - 1]; if (spec->cur_smux[smux_idx] == smux->num_items - 1) val = AMP_OUT_MUTE; if (smux_idx == 0) nid = spec->multiout.dig_out_nid; else nid = codec->slave_dig_outs[smux_idx - 1]; val = AMP_OUT_UNMUTE; /* un/mute SPDIF out */ snd_hda_codec_write_cache(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, val); Loading Loading
sound/core/control.c +6 −1 Original line number Diff line number Diff line Loading @@ -225,8 +225,13 @@ struct snd_kcontrol *snd_ctl_new1(const struct snd_kcontrol_new *ncontrol, kctl.id.iface = ncontrol->iface; kctl.id.device = ncontrol->device; kctl.id.subdevice = ncontrol->subdevice; if (ncontrol->name) if (ncontrol->name) { strlcpy(kctl.id.name, ncontrol->name, sizeof(kctl.id.name)); if (strcmp(ncontrol->name, kctl.id.name) != 0) snd_printk(KERN_WARNING "Control name '%s' truncated to '%s'\n", ncontrol->name, kctl.id.name); } kctl.id.index = ncontrol->index; kctl.count = ncontrol->count ? ncontrol->count : 1; access = ncontrol->access == 0 ? SNDRV_CTL_ELEM_ACCESS_READWRITE : Loading
sound/pci/hda/hda_codec.c +1 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ static struct hda_vendor_id hda_vendor_ids[] = { { 0x14f1, "Conexant" }, { 0x17e8, "Chrontel" }, { 0x1854, "LG" }, { 0x1aec, "Wolfson Microelectronics" }, { 0x434d, "C-Media" }, { 0x8384, "SigmaTel" }, {} /* terminator */ Loading
sound/pci/hda/hda_intel.c +29 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ #include <linux/slab.h> #include <linux/pci.h> #include <linux/mutex.h> #include <linux/reboot.h> #include <sound/core.h> #include <sound/initval.h> #include "hda_codec.h" Loading Loading @@ -397,6 +398,9 @@ struct azx { /* for pending irqs */ struct work_struct irq_pending_work; /* reboot notifier (for mysterious hangup problem at power-down) */ struct notifier_block reboot_notifier; }; /* driver types */ Loading Loading @@ -1978,6 +1982,28 @@ static int azx_resume(struct pci_dev *pci) #endif /* CONFIG_PM */ /* * reboot notifier for hang-up problem at power-down */ static int azx_halt(struct notifier_block *nb, unsigned long event, void *buf) { struct azx *chip = container_of(nb, struct azx, reboot_notifier); azx_stop_chip(chip); return NOTIFY_OK; } static void azx_notifier_register(struct azx *chip) { chip->reboot_notifier.notifier_call = azx_halt; register_reboot_notifier(&chip->reboot_notifier); } static void azx_notifier_unregister(struct azx *chip) { if (chip->reboot_notifier.notifier_call) unregister_reboot_notifier(&chip->reboot_notifier); } /* * destructor */ Loading @@ -1985,6 +2011,8 @@ static int azx_free(struct azx *chip) { int i; azx_notifier_unregister(chip); if (chip->initialized) { azx_clear_irq_pending(chip); for (i = 0; i < chip->num_streams; i++) Loading Loading @@ -2348,6 +2376,7 @@ static int __devinit azx_probe(struct pci_dev *pci, pci_set_drvdata(pci, card); chip->running = 1; power_down_all_codecs(chip); azx_notifier_register(chip); dev++; return err; Loading
sound/pci/hda/patch_analog.c +1 −0 Original line number Diff line number Diff line Loading @@ -3860,6 +3860,7 @@ static const char *ad1884a_models[AD1884A_MODELS] = { static struct snd_pci_quirk ad1884a_cfg_tbl[] = { SND_PCI_QUIRK(0x103c, 0x3030, "HP", AD1884A_MOBILE), SND_PCI_QUIRK(0x103c, 0x3056, "HP", AD1884A_MOBILE), SND_PCI_QUIRK(0x17aa, 0x20ac, "Thinkpad X300", AD1884A_THINKPAD), {} }; Loading
sound/pci/hda/patch_sigmatel.c +1 −3 Original line number Diff line number Diff line Loading @@ -566,10 +566,8 @@ static int stac92xx_smux_enum_put(struct snd_kcontrol *kcontrol, nid = codec->slave_dig_outs[smux_idx - 1]; if (spec->cur_smux[smux_idx] == smux->num_items - 1) val = AMP_OUT_MUTE; if (smux_idx == 0) nid = spec->multiout.dig_out_nid; else nid = codec->slave_dig_outs[smux_idx - 1]; val = AMP_OUT_UNMUTE; /* un/mute SPDIF out */ snd_hda_codec_write_cache(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, val); Loading