[alsa-devel] PATCH: ALSA - hda - Add support for Dell E6400 docking station

Takashi Iwai tiwai at suse.de
Thu Nov 19 06:09:34 CET 2009


At Wed, 18 Nov 2009 14:34:29 -0800,
Christian Hergert wrote:
> 
> Hi,
> 
> On Tue, Nov 17, 2009 at 10:15 PM, Takashi Iwai <tiwai at suse.de> wrote:
> > At Tue, 17 Nov 2009 12:17:59 -0800,
> > Christian Hergert wrote:
> >>
> >> On Tue, Nov 17, 2009 at 1:37 AM, Takashi Iwai <tiwai at suse.de> wrote:
> >> >
> >> > At Mon, 16 Nov 2009 15:20:32 -0800,
> >> > Christian Hergert wrote:
> >> > >
> >> > > Hi,
> >> > >
> >> > > I made a patch to fix bug 4657[1] on the tracker.  I'm fairly certain that
> >> > > it isn't the correct approach but would like some feedback on what that
> >> > > would be.
> >> > >
> >> > > The power-mappings in patch_sigmatel.c seem to allow you to flip multiple
> >> > > bits.  In the case of the Dell docking station, you need to enable some bits
> >> > > while disabling others.  Therefore, instead of using the power mappings I
> >> > > just hacked in a quick check to work for the hardware I have on hand.  If
> >> > > there is a proper way to fix this that I have missed, I'll be more than
> >> > > happy to fix the patch appropriately.
> >> > >
> >> > > [1] https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4657
> >> >
> >> > The jack detection of the docking station is already there, but it seems
> >> > just a missing call to toggle the power-map.
> >> >
> >> > How about the patch below?
> >> >
> >> >
> >> > thanks,
> >> >
> >> > Takashi
> >> >
> >> > ---
> >> > diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
> >> > index 7f76a97..bd9a2dd 100644
> >> > --- a/sound/pci/hda/patch_sigmatel.c
> >> > +++ b/sound/pci/hda/patch_sigmatel.c
> >> > @@ -4396,10 +4396,12 @@ static void stac92xx_set_pinctl(struct hda_codec *codec, hda_nid_t nid,
> >> >                pin_ctl &= ~(AC_PINCTL_IN_EN | AC_PINCTL_OUT_EN);
> >> >
> >> >        pin_ctl |= flag;
> >> > -       if (old_ctl != pin_ctl)
> >> > +       if (old_ctl != pin_ctl) {
> >> >                snd_hda_codec_write_cache(codec, nid, 0,
> >> >                                          AC_VERB_SET_PIN_WIDGET_CONTROL,
> >> >                                          pin_ctl);
> >> > +               stac_toggle_power_map(codec, nid, 1);
> >> > +       }
> >> >  }
> >> >
> >> >  static void stac92xx_reset_pinctl(struct hda_codec *codec, hda_nid_t nid,
> >> > @@ -4407,10 +4409,12 @@ static void stac92xx_reset_pinctl(struct hda_codec *codec, hda_nid_t nid,
> >> >  {
> >> >        unsigned int pin_ctl = snd_hda_codec_read(codec, nid,
> >> >                        0, AC_VERB_GET_PIN_WIDGET_CONTROL, 0x00);
> >> > -       if (pin_ctl & flag)
> >> > +       if (pin_ctl & flag) {
> >> >                snd_hda_codec_write_cache(codec, nid, 0,
> >> >                                          AC_VERB_SET_PIN_WIDGET_CONTROL,
> >> >                                          pin_ctl & ~flag);
> >> > +               stac_toggle_power_map(codec, nid, 0);
> >> > +       }
> >> >  }
> >> >
> >> >  static int get_pin_presence(struct hda_codec *codec, hda_nid_t nid)
> >>
> >> I tried this on top of 2.6.31.4 and, unfortunately, it did not solve
> >> the problem.  I'll investigate a bit to figure out why.
> >
> > Could you try 2.6.32-rc7 with the patch?
> > (Or, you can just copy sound/pci/hda/* from 2.6.32 to 31, in this case.)
> >
> >
> > thanks,
> >
> > Takashi
> >
> 
> I tried with and without your patch on top of 2.6.32-rc7 and both
> seemed to work.  So I guess the patch is not needed.  I apologize for
> not trying tip before sending a patch.

Good to hear that it works.
Thanks for reporting and checking!


Takashi


More information about the Alsa-devel mailing list