On Fri, Feb 20, 2009 at 11:56 PM, Wu Fengguang <fengguang.wu@xxxxxxxxx>wrote: > 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 have > to modify the source code? > > No. I did not try hda-verb yet. I'll do it tomorrow. Thanks. -- Paulo Roma Cavalcanti LCG - UFRJ _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel