On Sat, Feb 21, 2009 at 04:42:00AM +0200, Paulo Cavalcanti wrote:> > > On Fri, Feb 20, 2009 at 10:55 PM, Wu Fengguang <fengguang.wu@xxxxxxxxx<mailto:fengguang.wu@xxxxxxxxx>> wrote:> On Fri, Feb 20, 2009 at 07:18:31PM +0200, Takashi Iwai wrote:> > At Fri, 20 Feb 2009 09:00:01 +0800,> > Wu Fengguang wrote:> > >> > > Hi Tobin,> > >> > > Here are the Linux and WinXP pin configurations.> > > Both Linux and WinXP configure node 0x0c as an output pin.> > >> > > However the driver seems to be offering three schemes:> > >> > > scheme desc 0xC dev> > > ------------------------------------------------------> > > IDS_CONFIG_OPEN Speaker_Side/LineIn> > > IDS_CONFIG_51 LineIn> > > IDS_CONFIG_71 Speaker_Side> > >> > > Paulo, maybe you can run these commands to switch between> > > linein/lineout modes:> > >> > > # wget http://www.kernel.org/pub/linux/kernel/people/tiwai/misc/hda-verb-0.3.tar.bz2> > >> > > # set PIN_IN mode> > > hda-verb /dev/snd/hwC0D2 0x0c SET_PIN_WIDGET_CONTROL 0x20> > >> > > # set PIN_OUT mode> > > hda-verb /dev/snd/hwC0D2 0x0c SET_PIN_WIDGET_CONTROL 0x40> >> >> > Regarding the default pin configurations.> > I made a series of patches to add the interface to change the default> > pincfg values dynamically via hwdep sysfs. The patches are found in> > test/hda-pincfg branch of sound git tree> > git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git<http://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git>> >> > and included in the very latest alsa-driver-unstable snapshot> > ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/alsa-driver-unstable-snapshot.tar.gz> >> > Basically, you can get / set the default pincfg values on the fly, and> > trigger the codec reconfiguration after that.> >> > The init_pin_configs file shows the initial default pincfgs set by BIOS.> >> > # cat /sys/class/sound/hwC0D0/init_pin_configs> > 0x14 0x9993013f> > 0x15 0x01014c10> > 0x16 0x99030120> > 0x18 0x01a19c30> > 0x19 0x02a11c31> > 0x1a 0x01813c32> > 0x1b 0x02211c1f> > 0x1c 0x99330133> > 0x1d 0x411111f0> > 0x1e 0x411111f0> > 0x1f 0x411111f0> >> > Then, you can override the default value by writing to> > override_pin_configs sysfs file.> >> > # cat /sys/class/sound/hwC0D0/override_pin_configs> > # echo 0x1d 0x02a11c30 > /sys/class/sound/hwC0D0/override_pin_configs> > # cat /sys/class/sound/hwC0D0/override_pin_configs> > 0x1d 0x02a11c30> >> > Note that this value won't appear in init_pin_configs.> >> > Also, there is another file, cur_pin_configs. This contains the> > pincfgs that are set by the driver explicitly. For example,> > the static pincfg table in patch_sigmatel.c appears here.> >> > Then you can trigger the codec reconfiguration by> >> > # echo 1 > /sys/class/sound/hwC0D0/reconfig> >> > This will re-setup the driver based on the given pin configs.> >> > Unfortunately, in the current scenario, it can't override the static> > pincfg table in the driver like in patch_sigmatel.c. It's just for> > fixing and BIOS setup.> > If override_pin_configs cannot override the values in cur_pin_configs> (or will it later?), then the name is kind of misleading.> > How about the names bios_pin_configs, driver_pin_configs and user_pin_configs?> > > > Having a tool for reconfiguring the pins seems to be the only hope> for fixing the problems of all cards available out there.> > However, I fixed my problem. The Dell Vostro 1400 (STAC9228) uses the model "dell-bios" by default. The problem is that plugging the headphones does not mute the speakers, and the digital mic does not work at all.> > The model that works better is the "dell-3stack". But in this case there is no analog mic available (the digital mic works, but it is too low).> > Comparing the codecs I realizaded that the problem was that> the pin/node 0x0e (mic) was 0x01a19040 in the ref model and 0x01111212 in the del-3stack. Then I just switched their positions in the initialization, and voilá,> I have an analog mic using the model I want, that is, del-3stack. Paulo, have you tried the hda-verb? Or it won't work for you, so haveto modify the source code? Thanks,Fengguang > Unfortunately, I know I did not contribute to anything. I just changed a codec> to fit my needs, and maybe created a lot of noise tn the process.> > Cheers,> > and thanks for all the guidance I received.> > > --- alsa-driver-1.0.19/alsa-kernel/pci/hda/patch_sigmatel.c 2009-01-19 09:08:58.000000000 -0200> +++ alsa-driver-1.0.19-new/alsa-kernel/pci/hda/patch_sigmatel.c 2009-02-20 19:08:18.000000000 -0300> @@ -2113,8 +2113,8 @@> };> > static unsigned int dell_3st_pin_configs[14] = {> - 0x02211230, 0x02a11220, 0x01a19040, 0x01114210,> - 0x01111212, 0x01116211, 0x01813050, 0x01112214,> + 0x02211230, 0x02a11220, 0x01111212, 0x01114210,> + 0x01a19040, 0x01116211, 0x01813050, 0x01112214,> 0x403003fa, 0x90a60040, 0x90a60040, 0x404003fb,> 0x40c003fc, 0x40000100> };> > > > > --> Paulo Roma Cavalcanti> LCG - UFRJ_______________________________________________Alsa-devel mailing listAlsa-devel@xxxxxxxxxxxxxxxxxxxx://mailman.alsa-project.org/mailman/listinfo/alsa-devel