Re: Connexant HDA codec support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Fri, 18 Aug 2006 11:17:51 +0400,
Andrew L. Neporada wrote:
> 
> Takashi Iwai wrote:
> > At Thu, 17 Aug 2006 15:48:07 +0400,
> > Andrew L. Neporada wrote:
> > > 
> > > Takashi Iwai wrote:
> > > 
> > > > Also post codec#* and "alsactl -f xxx store" contents, please.
> > > > 
> > > > 
> > > 
> > > Sorry, forgot this stuff. See attached files.
> > 
> > Thanks.
> > 
> > How about the new patch below?
> > 
> 
> Still can not record sound.
> Btw, it seems that mic is detected only if
> phone jack is inserted at modprobe moment.
> There is also "azx_get_response timeout, switching to single_cmd
> mode..." message in kernel debug output (see attached files).

The azx_get_response could be improved by the patch below (although
you may see still a warning message once).  It will switch to polling
mode if the irq mode fails by some reason.

The fact that the mic gets detected only when "phone" jack is
inserted looks interesting.  Could you compare codec#0 before and
after plugging the jack?  Any change?  And, could you try inputs from
"Line"?

Also, please check snd_hda_queue_unsol_event() is called, e.g. by
adding a debug printk.  This is used on some devices such as a jack
detection mechanism.  But we didn't turn it on, so I wonder whether
it's really involved.

I suppose you get just a silence data instead of empty or shortened
file via arecord, right?  If so, it's likely a mixer volume, the input
volume of audio-input widget 0x1a.
The problem is that only the first amp-in volume can be changed by the
mixer element...


thanks,

Takashi

diff -r 5b67bba2d36f pci/hda/hda_intel.c
--- a/pci/hda/hda_intel.c	Tue Aug 08 21:13:42 2006 +0200
+++ b/pci/hda/hda_intel.c	Wed Aug 09 12:07:44 2006 +0200
@@ -332,6 +332,7 @@ struct azx {
 	int position_fix;
 	unsigned int initialized: 1;
 	unsigned int single_cmd: 1;
+	unsigned int polling_mode: 1;
 };
 
 /* driver types */
@@ -518,8 +519,23 @@ static unsigned int azx_rirb_get_respons
 	struct azx *chip = codec->bus->private_data;
 	int timeout = 50;
 
-	while (chip->rirb.cmds) {
+	for (;;) {
+		if (chip->polling_mode) {
+			spin_lock_irq(&chip->reg_lock);
+			azx_update_rirb(chip);
+			spin_unlock_irq(&chip->reg_lock);
+		}
+		if (! chip->rirb.cmds)
+			break;
 		if (! --timeout) {
+			if (! chip->polling_mode) {
+				snd_printk(KERN_WARNING "hda_intel: "
+					   "azx_get_response timeout, "
+					   "switching to polling mode...\n");
+				chip->polling_mode = 1;
+				timeout = 50;
+				continue;
+			}
 			snd_printk(KERN_ERR
 				   "hda_intel: azx_get_response timeout, "
 				   "switching to single_cmd mode...\n");

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux