Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Kai Vehmanen <kai.vehmanen@wakkanet.fi>
Cc: Jaroslav Kysela <perex@suse.cz>, alsa-devel@lists.sourceforge.net
Subject: Re: Re: problems with intel8x0 and 1.0.0pre3 (was: Re: [ANN] ALSA 1.0.0pre1 is released)
Date: Thu, 27 Nov 2003 19:08:07 +0100	[thread overview]
Message-ID: <s5h8ym1d6rc.wl@alsa2.suse.de> (raw)
In-Reply-To: <s5hd6bddblc.wl@alsa2.suse.de>

[-- Attachment #1: Type: text/plain, Size: 1381 bytes --]

At Thu, 27 Nov 2003 17:23:43 +0100,
I wrote:
> 
> At Thu, 27 Nov 2003 18:16:05 +0200 (EET),
> Kai Vehmanen wrote:
> > 
> > On Wed, 26 Nov 2003, Takashi Iwai wrote:
> > 
> > >> On the same machine, alsa-driver-0.9.8 works fine, but not with 1.0.0pre1 
> > >> and 1.0.0pre3.
> > > what do you mean exactly "don't work" in the above?
> > > the operation is blocked, or returns an error?
> > > if it's blocked, check /proc/asound/card0/pcm0*/sub0/* files.
> > 
> > I think I found the problem. In 1.0.0preX, the supported sampling rate 
> > is limited to 48000Hz and this causes all kinds of problems if running 
> > with lower rates (I've mostly tested running at 8000Hz) - i.e. when
> > using alsa-lib for sr-conversion.
> > 
> > With 1.0.0pre3, for example "arecord -r 8000 - |aplay -r 8000 -" produces 
> > constant xruns. A similar app that relies on poll()/select(), fails even 
> > more severely. When looking at... 
> > 
> >   /proc/asound/card0/pcm0p/sub0/hw_params and
> >   /proc/asound/card0/pcm0c/sub0/hw_params 
> > 
> > .. the rate is locked to 48000 with 1.0.0pre3.

do you mean both for playback and capture, or only on capture side?
if the playback rate isn't set correctly (i.e. aplay -Dhw with 44.1kHz
doesn't work), it's a serious problem.
but, if it's a capture side, right now i found and fixed a bug.
could you try and check whether it works for you?


Takashi

[-- Attachment #2: Type: text/plain, Size: 2252 bytes --]

Index: alsa-kernel/pci/ac97/ac97_pcm.c
===================================================================
RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/pci/ac97/ac97_pcm.c,v
retrieving revision 1.4
diff -u -r1.4 ac97_pcm.c
--- alsa-kernel/pci/ac97/ac97_pcm.c	24 Nov 2003 11:12:24 -0000	1.4
+++ alsa-kernel/pci/ac97/ac97_pcm.c	27 Nov 2003 18:04:19 -0000
@@ -145,6 +145,19 @@
   }
 }};
 
+/* FIXME: more various mappings for ADC? */
+static unsigned char rate_cregs[9] = {
+	AC97_PCM_LR_ADC_RATE,	/* 3 */
+	AC97_PCM_LR_ADC_RATE,	/* 4 */
+	0xff,			/* 5 */
+	AC97_PCM_MIC_ADC_RATE,	/* 6 */
+	0xff,			/* 7 */
+	0xff,			/* 8 */
+	0xff,			/* 9 */
+	0xff,			/* 10 */
+	0xff,			/* 11 */
+};
+
 static unsigned char get_slot_reg(struct ac97_pcm *pcm, unsigned short cidx,
 				  unsigned short slot, int dbl)
 {
@@ -152,7 +165,10 @@
 		return 0xff;
 	if (slot > 11)
 		return 0xff;
-	return rate_reg_tables[dbl][pcm->r[dbl].rate_table[cidx]][slot - 3];
+	if (pcm->stream == SNDRV_PCM_STREAM_PLAYBACK)
+		return rate_preg_tables[dbl][pcm->r[dbl].rate_table[cidx]][slot - 3];
+	else
+		return rate_cregs[slot - 3];
 }
 
 static int set_spdif_rate(ac97_t *ac97, unsigned short rate)
@@ -380,7 +396,6 @@
 	const struct ac97_pcm *pcm;
 	struct ac97_pcm *rpcms, *rpcm;
 	unsigned short avail_slots[2][4];
-	unsigned short all_slots[2][4];
 	unsigned char rate_table[2][4];
 	unsigned short tmp, slots;
 	unsigned int rates;
@@ -390,7 +405,7 @@
 	if (rpcms == NULL)
 		return -ENOMEM;
 	memset(avail_slots, 0, sizeof(avail_slots));
-	memset(all_slots, 0, sizeof(all_slots));
+	memset(rate_table, 0, sizeof(rate_table));
 	for (i = 0; i < 4; i++) {
 		codec = bus->codec[i];
 		if (! codec)
@@ -401,8 +416,6 @@
 			for (j = 0; j < i; j++)
 				avail_slots[1][i] &= ~avail_slots[1][j];
 		}
-		all_slots[0][i] = avail_slots[0][i];
-		all_slots[1][i] = avail_slots[1][i];
 	}
 	/* FIXME: add double rate allocation */
 	/* first step - exclusive devices */
@@ -430,7 +443,7 @@
 				if (tmp) {
 					rpcm->r[0].rslots[j] = tmp;
 					rpcm->r[0].codec[j] = bus->codec[j];
-					rpcm->r[0].rate_table[j] = rate_table[0][j];
+					rpcm->r[0].rate_table[j] = rate_table[pcm->stream][j];
 					rates = get_rates(rpcm, j, tmp, 0);
 					avail_slots[pcm->stream][j] &= ~tmp;
 				}

  reply	other threads:[~2003-11-27 18:08 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-19 15:46 [ANN] ALSA 1.0.0pre1 is released Takashi Iwai
2003-11-19 22:39 ` Paul Hanly (Hotmail)
2003-11-20  9:49   ` Takashi Iwai
2003-11-20  1:30 ` Fernando Pablo Lopez-Lezcano
2003-11-20  7:44   ` ALSA 1.0.0pre1 is released - intel8x0 is oopsing (2.6) R CHAN
2003-11-20 15:33     ` Takashi Iwai
2003-11-21  2:50     ` Re: ALSA 1.0.0pre1 is released - intel8x0 is oopsing (2.6) - FIXED! R CHAN
2003-11-20  9:53   ` [ANN] ALSA 1.0.0pre1 is released Takashi Iwai
2003-11-20 10:01 ` 1.0.0pre1 / ice1712 / mplayer-oss-delay Steffen Sauder
2003-11-20 11:08   ` Takashi Iwai
2003-11-20 16:47 ` [ANN] ALSA 1.0.0pre1 is released Takashi Iwai
2003-11-20 18:30 ` Dave Neuer
2003-11-20 18:45   ` [Alsa-user] " Takashi Iwai
2003-11-26 17:31 ` Kai Vehmanen
2003-11-26 17:37   ` Takashi Iwai
2003-11-26 17:45     ` Kai Vehmanen
2003-11-27 16:16     ` problems with intel8x0 and 1.0.0pre3 (was: Re: [ANN] ALSA 1.0.0pre1 is released) Kai Vehmanen
2003-11-27 16:23       ` Takashi Iwai
2003-11-27 18:08         ` Takashi Iwai [this message]
2003-11-28 14:06           ` Kai Vehmanen
2003-12-01 17:44       ` problems with intel8x0 and 1.0.0pre3 Kai Vehmanen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5h8ym1d6rc.wl@alsa2.suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=kai.vehmanen@wakkanet.fi \
    --cc=perex@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox