Re: ESS 1688

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

 



On 24-02-08 10:50, Rene Herman wrote:

Not yet, but I confirm the bug. I'll try and see of I can locate
anything. No ETA available.

Can you try if applying the attached makes things work as you'd expect with respect to the recording levels? Over here it seems to, although I get the feeling we might as well rename the control "Distortion Levels" as keeping it at 0 is the only sensible thing.

Even if this works, it's not a final fix, just to confirm. Given that you posted to alsa-user... if you're not setup to apply this patch (to any semi recent source) and recompile the driver I hope someone can help.

With respect to the duplex issue -- there seem to be no docs for 688 and 1688 which is a bit of a problem.

Rene.
diff --git a/sound/isa/es1688/es1688_lib.c b/sound/isa/es1688/es1688_lib.c
index 5c26d49..eb35267 100644
--- a/sound/isa/es1688/es1688_lib.c
+++ b/sound/isa/es1688/es1688_lib.c
@@ -368,9 +368,11 @@ static int snd_es1688_playback_prepare(struct snd_pcm_substream *substream)
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	unsigned int size = snd_pcm_lib_buffer_bytes(substream);
 	unsigned int count = snd_pcm_lib_period_bytes(substream);
+	int tmp;
 
 	chip->dma_size = size;
 	spin_lock_irqsave(&chip->reg_lock, flags);
+	tmp = snd_es1688_read(chip, 0xb4);
 	snd_es1688_reset(chip);
 	snd_es1688_set_rate(chip, substream);
 	snd_es1688_write(chip, 0xb8, 4);	/* auto init DMA mode */
@@ -403,6 +405,7 @@ static int snd_es1688_playback_prepare(struct snd_pcm_substream *substream)
 	}
 	snd_es1688_write(chip, 0xb1, (snd_es1688_read(chip, 0xb1) & 0x0f) | 0x50);
 	snd_es1688_write(chip, 0xb2, (snd_es1688_read(chip, 0xb2) & 0x0f) | 0x50);
+	snd_es1688_write(chip, 0xb4, tmp);
 	snd_es1688_dsp_command(chip, ES1688_DSP_CMD_SPKON);
 	spin_unlock_irqrestore(&chip->reg_lock, flags);
 	/* --- */
@@ -429,9 +432,11 @@ static int snd_es1688_capture_prepare(struct snd_pcm_substream *substream)
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	unsigned int size = snd_pcm_lib_buffer_bytes(substream);
 	unsigned int count = snd_pcm_lib_period_bytes(substream);
+	int tmp;
 
 	chip->dma_size = size;
 	spin_lock_irqsave(&chip->reg_lock, flags);
+	tmp = snd_es1688_read(chip, 0xb4);
 	snd_es1688_reset(chip);
 	snd_es1688_set_rate(chip, substream);
 	snd_es1688_dsp_command(chip, ES1688_DSP_CMD_SPKOFF);
@@ -461,6 +466,7 @@ static int snd_es1688_capture_prepare(struct snd_pcm_substream *substream)
 	}
 	snd_es1688_write(chip, 0xb1, (snd_es1688_read(chip, 0xb1) & 0x0f) | 0x50);
 	snd_es1688_write(chip, 0xb2, (snd_es1688_read(chip, 0xb2) & 0x0f) | 0x50);
+	snd_es1688_write(chip, 0xb4, tmp);
 	spin_unlock_irqrestore(&chip->reg_lock, flags);
 	/* --- */
 	count = -count;
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user

[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux