hda: add support for jack detection on IDT/Sigmatel
PATCH 1/1 hda: add support for jack detection on IDT/Sigmatel
Added support for jack detection reporting to userspace for IDT/Sigmatel codecs.
Signed-off-by Matthew Ranostay <[email protected]>
---
pci/Kconfig +1 -0
@@ -501,6 +501,7 @@ config SND_HDA_INTEL tristate "Intel HD Audio" select SND_PCM select SND_VMASTER + select SND_JACK if INPUT=y || INPUT=SND help Say Y here to include support for Intel "High Definition Audio" (Azalia) motherboard devices.
pci/hda/patch_sigmatel.c +13 -1
@@ -30,6 +30,7 @@#include <linux/pci.h> #include <sound/core.h> #include <sound/asoundef.h> +#include <sound/jack.h> #include "hda_codec.h" #include "hda_local.h" #include "hda_patch.h"
@@ -216,6 +217,9 @@ struct sigmatel_spec {struct hda_pcm pcm_rec[2 ];/* PCM information */ +/* jack detection */ +struct snd_jack *jack; +/* dynamic controls and input_mux */ struct auto_pin_cfg autocfg;unsigned int num_kctl_alloc, num_kctl_used;
@@ -3617,7 +3621,7 @@ static int stac92xx_init(struct hda_codec *codec) {struct sigmatel_spec *spec = codec->spec;struct auto_pin_cfg *cfg = &spec->autocfg; -int i; +int i, err;snd_hda_sequence_write (codec, spec->init);
@@ -3639,6 +3643,12 @@ static int stac92xx_init(struct hda_codec *codec)stac92xx_auto_set_pinctl (codec, spec->autocfg.line_out_pins[0 ],AC_PINCTL_OUT_EN );stac92xx_auto_init_hp_out (codec); +/* jack detection */ + err =snd_jack_new (codec->bus->card, +"Headphone Jack" , +SND_JACK_HEADPHONE , &spec->jack); +if (err <0 ) +return err;/* fake event to set up pins */ codec->patch_ops.unsol_event (codec,STAC_HP_EVENT <<26 ); }else {
@@ -3796,6 +3806,8 @@ static void stac92xx_hp_detect(struct hda_codec *codec, unsigned int res)break ; presence =get_hp_pin_presence (codec, cfg->hp_pins[i]); } +snd_jack_report (spec->jack, + presence ?SND_JACK_HEADPHONE :0 );if (presence) {/* disable lineouts, enable hp */
Takashi Iwai
AppliedAt Wed, 15 Oct 2008 14:45:38 -0400,
Quoted 5 lines · Matthew Ranostay
Added support for jack detection reporting to userspace for IDT/Sigmatel codecs.
Signed-off-by Matthew Ranostay <[email protected]>
Thanks, applied to topic/hda-next branch. I postpone this to 2.6.29.
Takashi
Quoted 72 lines
---
pci/Kconfig +1
-0@@ -501,6 +501,7 @@ config SND_HDA_INTEL tristate "Intel HD Audio" select SND_PCM select SND_VMASTER + select SND_JACK if INPUT=y || INPUT=SND help Say Y here to include support for Intel "High Definition Audio" (Azalia) motherboard devices.pci/hda/patch_sigmatel.c +13
-1@@ -30,6 +30,7 @@#include <linux/pci.h> #include <sound/core.h> #include <sound/asoundef.h> +#include <sound/jack.h> #include "hda_codec.h" #include "hda_local.h" #include "hda_patch.h" @@ -216,6 +217,9 @@ struct sigmatel_spec {struct hda_pcm pcm_rec[2 ];/* PCM information */ +/* jack detection */ +struct snd_jack *jack; +/* dynamic controls and input_mux */ struct auto_pin_cfg autocfg;unsigned int num_kctl_alloc, num_kctl_used;@@ -3617,7 +3621,7 @@ static int stac92xx_init(struct hda_codec *codec) {struct sigmatel_spec *spec = codec->spec;struct auto_pin_cfg *cfg = &spec->autocfg; -int i; +int i, err;snd_hda_sequence_write (codec, spec->init);@@ -3639,6 +3643,12 @@ static int stac92xx_init(struct hda_codec *codec)stac92xx_auto_set_pinctl (codec, spec->autocfg.line_out_pins[0 ],AC_PINCTL_OUT_EN );stac92xx_auto_init_hp_out (codec); +/* jack detection */ + err =snd_jack_new (codec->bus->card, +"Headphone Jack" , +SND_JACK_HEADPHONE , &spec->jack); +if (err <0 ) +return err;/* fake event to set up pins */ codec->patch_ops.unsol_event (codec,STAC_HP_EVENT <<26 ); }else {@@ -3796,6 +3806,8 @@ static void stac92xx_hp_detect(struct hda_codec *codec, unsigned int res)break ; presence =get_hp_pin_presence (codec, cfg->hp_pins[i]); } +snd_jack_report (spec->jack, + presence ?SND_JACK_HEADPHONE :0 );if (presence) {/* disable lineouts, enable hp */ _______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel