[alsa-devel] hda-codec conexant - no external mic on FSC V5505 (with patch)

Takashi Iwai tiwai at suse.de
Thu Jul 10 21:13:02 CEST 2008


At Wed, 9 Jul 2008 18:22:40 +0200,
Marek Lotke wrote:
> 
> Hi,
> I've tried all conextant models for my new laptop... External mic would work 
> only with benq but then the external headphones don't work.
> 
> I managed to get the external mic working with this little patch:
> --- a/sound/pci/hda/patch_conexant.c
> +++ b/sound/pci/hda/patch_conexant.c
> @@ -686,7 +686,7 @@ static struct snd_kcontrol_new cxt5045_mixers_hp530[] = {
> 
>  static struct hda_verb cxt5045_init_verbs[] = {
>         /* Line in, Mic */
> -       {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN },
> +       {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN|AC_PINCTL_VREF_80 },
>         {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN|AC_PINCTL_VREF_80 },
>         /* HP, Amp  */
>         {0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
> 
> Now I can switch between the mics with mixer. Still no mic auto sensing though 
> but maybe there is none in hardware.
> Attached are the outputs of alsa-info.sh: default, with model benq and with 
> default model with my patch with mixer set to external.
> 
> I'll be glad to provide any info or try any patch...

How about the patch below?  Your device is already listed in the
config, so basically it has to work without specifying the model
option.


Takashi

---
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index 95e3367..7c1eb23 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -686,7 +686,7 @@ static struct snd_kcontrol_new cxt5045_mixers_hp530[] = {
 
 static struct hda_verb cxt5045_init_verbs[] = {
 	/* Line in, Mic */
-	{0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN },
+	{0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN|AC_PINCTL_VREF_80 },
 	{0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN|AC_PINCTL_VREF_80 },
 	/* HP, Amp  */
 	{0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
@@ -910,7 +910,8 @@ static struct snd_pci_quirk cxt5045_cfg_tbl[] = {
 	SND_PCI_QUIRK(0x152d, 0x0753, "Benq R55E", CXT5045_BENQ),
 	SND_PCI_QUIRK(0x1734, 0x10ad, "Fujitsu Si1520", CXT5045_LAPTOP_MICSENSE),
 	SND_PCI_QUIRK(0x1734, 0x10cb, "Fujitsu Si3515", CXT5045_LAPTOP_HPMICSENSE),
-	SND_PCI_QUIRK(0x1734, 0x110e, "Fujitsu V5505", CXT5045_LAPTOP_HPSENSE),
+	SND_PCI_QUIRK(0x1734, 0x110e, "Fujitsu V5505",
+		      CXT5045_LAPTOP_HPMICSENSE),
 	SND_PCI_QUIRK(0x1509, 0x1e40, "FIC", CXT5045_LAPTOP_HPMICSENSE),
 	SND_PCI_QUIRK(0x1509, 0x2f05, "FIC", CXT5045_LAPTOP_HPMICSENSE),
 	SND_PCI_QUIRK(0x1509, 0x2f06, "FIC", CXT5045_LAPTOP_HPMICSENSE),
@@ -962,6 +963,7 @@ static int patch_cxt5045(struct hda_codec *codec)
 		codec->patch_ops.init = cxt5045_init;
 		break;
 	case CXT5045_LAPTOP_MICSENSE:
+		codec->patch_ops.unsol_event = cxt5045_hp_unsol_event;
 		spec->input_mux = &cxt5045_capture_source;
 		spec->num_init_verbs = 2;
 		spec->init_verbs[1] = cxt5045_mic_sense_init_verbs;


More information about the Alsa-devel mailing list