From alsa-devel-owner@alsa.jcu.cz  Tue Jan 12 08:44:17 1999
Received: from lilia.hypercore.co.jp (mail@[210.162.116.126])
	by marvin.jcu.cz (8.9.1a/8.9.1) with ESMTP id IAA27336
	for <alsa-devel@alsa.jcu.cz>; Tue, 12 Jan 1999 08:42:26 +0100
Received: from lime.pn.hypercore.co.jp [192.168.1.2] (mail)
	by lilia.hypercore.co.jp with esmtp (Exim 2.02 #1)
	id 0zzyT1-0007hP-00 (Debian); Tue, 12 Jan 1999 16:42:23 +0900
Received: from kaz by lime.pn.hypercore.co.jp with local (Exim 2.04 #1 (Debian))
	id 0zzySz-0002bU-00; Tue, 12 Jan 1999 16:42:21 +0900
To: alsa-devel@alsa.jcu.cz
Subject: ES1879 with 0.3.0-pre2
MIME-Version: 1.0 (generated by SEMI 1.5.3 - "Uozu")
Content-Type: text/plain; charset=US-ASCII
From: Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
Date: 12 Jan 1999 16:42:21 +0900
Message-ID: <2m4spxhr8i.fsf@lime.pn.hypercore.co.jp>
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

Hi, I'm new to ALSA development and used 0.3.0-pre2 driver
just recently.  I have a laptop system with a built-in
ES1879 chip, so I tried es1869 driver.

The released version did not load properly as it did not
find any ES1869 chip, but with small changes, I could make
it load with ES1879.  The modified driver mostly works
except the first PCM channel does not play sound at all.

I also tried to correct dB ranges of mixer channels, but I
don't think it's really fixed.  The data sheet for ES1879
says some channels have two slopes (1.5dB/step and
3dB/step), but no special code is used yet.

The first part in this diff is for ES1879, the rest are for
dB range correction.

Index: lowlevel/isa/es1869.c
===================================================================
RCS file: /home/alsa/cvsroot/alsa-driver/lowlevel/isa/es1869.c,v
retrieving revision 1.8
diff -u -r1.8 es1869.c
--- es1869.c	1999/01/01 10:47:18	1.8
+++ es1869.c	1999/01/12 07:22:38
@@ -258,7 +258,7 @@
         codec->version += inb(port + 0x05);
         codec->ctrl_port =  inb(port + 0x05) << 8;
         codec->ctrl_port += inb(port + 0x05);
-        if (codec->version != 0x1869) {
+        if (codec->version != 0x1869 && codec->version != 0x1879) {
                 snd_printk("[0x%x] ESS: unknown AudioDrive chip ES%x\n",
                            port, codec->version);
                 snd_spin_unlock(codec, reg, &flags);
@@ -1201,7 +1201,7 @@
                 SND_MIXER_OSS_PCM,	/* OSS device # */
                 SND_MIXER_CINFO_CAP_STEREO | SND_MIXER_CINFO_CAP_RECORDVOLUME,
                 0, 15,			/* min, max value */
-                -4600, 0, 288,		/* min, max, step - dB */
+                -4500, 0, 300,		/* min, max, step - dB */
                 0,
                 NULL,			/* compute dB -> linear */
                 NULL,			/* compute linear -> dB */
@@ -1217,7 +1217,7 @@
                 SND_MIXER_OSS_ALTPCM,	/* OSS device # */
                 SND_MIXER_CINFO_CAP_STEREO,
                 0, 15,			/* min, max value */
-                -4600, 0, 288,		/* min, max, step - dB */
+                -4500, 0, 300,		/* min, max, step - dB */
                 0,
                 NULL,			/* compute dB -> linear */
                 NULL,			/* compute linear -> dB */
@@ -1233,7 +1233,7 @@
                 SND_MIXER_OSS_MIC,	/* OSS device # */
                 SND_MIXER_CINFO_CAP_STEREO | SND_MIXER_CINFO_CAP_RECORDVOLUME,
                 0, 15,			/* min, max value */
-                -4600, 0, 288,		/* min, max, step - dB */
+                -4500, 0, 300,		/* min, max, step - dB */
                 0,
                 NULL,			/* compute dB -> linear */
                 NULL,			/* compute linear -> dB */
@@ -1252,7 +1252,7 @@
 #endif
                 SND_MIXER_CINFO_CAP_STEREO,
                 0, 63,			/* min, max value */
-                -4600, 0, 288,		/* min, max, step - dB */
+                -9450, 0, 150,		/* min, max, step - dB */
                 0,
                 NULL,			/* compute dB -> linear */
                 NULL,			/* compute linear -> dB */
@@ -1276,7 +1276,7 @@
                 SND_MIXER_OSS_SYNTH,	/* OSS device # */
                 SND_MIXER_CINFO_CAP_STEREO | SND_MIXER_CINFO_CAP_RECORDVOLUME,
                 0, 15,			/* min, max value */
-                -4600, 0, 288,		/* min, max, step - dB */
+                -4500, 0, 300,		/* min, max, step - dB */
                 0,
                 NULL,			/* compute dB -> linear */
                 NULL,			/* compute linear -> dB */
@@ -1292,7 +1292,7 @@
                 SND_MIXER_OSS_CD,	/* OSS device # */
                 SND_MIXER_CINFO_CAP_STEREO | SND_MIXER_CINFO_CAP_INPUT | SND_MIXER_CINFO_CAP_RECORDVOLUME,
                 0, 15,			/* min, max value */
-                -4600, 0, 288,		/* min, max, step - dB */
+                -4500, 0, 300,		/* min, max, step - dB */
                 0,
                 NULL,			/* compute dB -> linear */
                 NULL,			/* compute linear -> dB */
@@ -1308,7 +1308,7 @@
                 SND_MIXER_OSS_LINE1,	/* OSS device # */
                 SND_MIXER_CINFO_CAP_STEREO | SND_MIXER_CINFO_CAP_INPUT | SND_MIXER_CINFO_CAP_RECORDVOLUME,
                 0, 15,			/* min, max value */
-                -4600, 0, 288,		/* min, max, step - dB */
+                -4500, 0, 300,		/* min, max, step - dB */
                 0,
                 NULL,			/* compute dB -> linear */
                 NULL,			/* compute linear -> dB */
@@ -1324,7 +1324,7 @@
                 SND_MIXER_OSS_SPEAKER,	/* OSS device # */
                 SND_MIXER_CINFO_CAP_INPUT,
                 0, 7,			/* max value */
-                -4600, 0, 575,		/* min, max, step - dB */
+                -2100, 0, 300,		/* min, max, step - dB */
                 0,
                 NULL,			/* compute dB -> linear */
                 NULL,			/* compute linear -> dB */
@@ -1340,7 +1340,7 @@
                 SND_MIXER_OSS_LINE,	/* OSS device # */
                 SND_MIXER_CINFO_CAP_STEREO | SND_MIXER_CINFO_CAP_INPUT | SND_MIXER_CINFO_CAP_RECORDVOLUME,
                 0, 15,			/* min, max value */
-                -4600, 0, 288,		/* min, max, step - dB */
+                -4500, 0, 300,		/* min, max, step - dB */
                 0,
                 NULL,			/* compute dB -> linear */
                 NULL,			/* compute linear -> dB */

