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 @@ -1902,6 +1906,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 @@ -1909,6 +1935,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 @@ -2272,6 +2300,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_realtek.c +26 −2 Original line number Diff line number Diff line Loading @@ -828,6 +828,7 @@ static void alc_sku_automute(struct hda_codec *codec) spec->jack_present ? 0 : PIN_OUT); } #if 0 /* it's broken in some acses -- temporarily disabled */ static void alc_mic_automute(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; Loading @@ -848,6 +849,9 @@ static void alc_mic_automute(struct hda_codec *codec) snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, capsrc_idx_fmic, HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); } #else #define alc_mic_automute(codec) /* NOP */ #endif /* disabled */ /* unsolicited event for HP jack sensing */ static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) Loading Loading @@ -1057,12 +1061,14 @@ do_sku: AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT); #if 0 /* it's broken in some acses -- temporarily disabled */ if (spec->autocfg.input_pins[AUTO_PIN_MIC] && spec->autocfg.input_pins[AUTO_PIN_FRONT_MIC]) snd_hda_codec_write(codec, spec->autocfg.input_pins[AUTO_PIN_MIC], 0, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT); #endif /* disabled */ spec->unsol_event = alc_sku_unsol_event; } Loading Loading @@ -12232,8 +12238,26 @@ static int alc269_auto_create_multi_out_ctls(struct alc_spec *spec, return 0; } #define alc269_auto_create_analog_input_ctls \ alc880_auto_create_analog_input_ctls static int alc269_auto_create_analog_input_ctls(struct alc_spec *spec, const struct auto_pin_cfg *cfg) { int err; err = alc880_auto_create_analog_input_ctls(spec, cfg); if (err < 0) return err; /* digital-mic input pin is excluded in alc880_auto_create..() * because it's under 0x18 */ if (cfg->input_pins[AUTO_PIN_MIC] == 0x12 || cfg->input_pins[AUTO_PIN_FRONT_MIC] == 0x12) { struct hda_input_mux *imux = &spec->private_imux; imux->items[imux->num_items].label = "Int Mic"; imux->items[imux->num_items].index = 0x05; imux->num_items++; } return 0; } #ifdef CONFIG_SND_HDA_POWER_SAVE #define alc269_loopbacks alc880_loopbacks Loading 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 @@ -1902,6 +1906,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 @@ -1909,6 +1935,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 @@ -2272,6 +2300,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_realtek.c +26 −2 Original line number Diff line number Diff line Loading @@ -828,6 +828,7 @@ static void alc_sku_automute(struct hda_codec *codec) spec->jack_present ? 0 : PIN_OUT); } #if 0 /* it's broken in some acses -- temporarily disabled */ static void alc_mic_automute(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; Loading @@ -848,6 +849,9 @@ static void alc_mic_automute(struct hda_codec *codec) snd_hda_codec_amp_stereo(codec, 0x0b, HDA_INPUT, capsrc_idx_fmic, HDA_AMP_MUTE, present ? HDA_AMP_MUTE : 0); } #else #define alc_mic_automute(codec) /* NOP */ #endif /* disabled */ /* unsolicited event for HP jack sensing */ static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) Loading Loading @@ -1057,12 +1061,14 @@ do_sku: AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT); #if 0 /* it's broken in some acses -- temporarily disabled */ if (spec->autocfg.input_pins[AUTO_PIN_MIC] && spec->autocfg.input_pins[AUTO_PIN_FRONT_MIC]) snd_hda_codec_write(codec, spec->autocfg.input_pins[AUTO_PIN_MIC], 0, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT); #endif /* disabled */ spec->unsol_event = alc_sku_unsol_event; } Loading Loading @@ -12232,8 +12238,26 @@ static int alc269_auto_create_multi_out_ctls(struct alc_spec *spec, return 0; } #define alc269_auto_create_analog_input_ctls \ alc880_auto_create_analog_input_ctls static int alc269_auto_create_analog_input_ctls(struct alc_spec *spec, const struct auto_pin_cfg *cfg) { int err; err = alc880_auto_create_analog_input_ctls(spec, cfg); if (err < 0) return err; /* digital-mic input pin is excluded in alc880_auto_create..() * because it's under 0x18 */ if (cfg->input_pins[AUTO_PIN_MIC] == 0x12 || cfg->input_pins[AUTO_PIN_FRONT_MIC] == 0x12) { struct hda_input_mux *imux = &spec->private_imux; imux->items[imux->num_items].label = "Int Mic"; imux->items[imux->num_items].index = 0x05; imux->num_items++; } return 0; } #ifdef CONFIG_SND_HDA_POWER_SAVE #define alc269_loopbacks alc880_loopbacks Loading