patch-2.4.0-test6 linux/drivers/char/tda9875.c
Next file: linux/drivers/char/zr36120_mem.c
Previous file: linux/drivers/char/sysrq.c
Back to the patch index
Back to the overall index
- Lines: 120
- Date:
Sun Aug 6 12:45:28 2000
- Orig file:
v2.4.0-test5/linux/drivers/char/tda9875.c
- Orig date:
Tue May 23 15:31:34 2000
diff -u --recursive --new-file v2.4.0-test5/linux/drivers/char/tda9875.c linux/drivers/char/tda9875.c
@@ -5,7 +5,7 @@
* This driver will not complain if used with any
* other i2c device with the same address.
*
- * Copyright (c) 2000 Guillamue Delvit based on Gerd Knorr source and
+ * Copyright (c) 2000 Guillaume Delvit based on Gerd Knorr source and
* Eric Sandeen
* This code is placed under the terms of the GNU General Public License
* Based on tda9855.c by Steve VanDeBogart (vandebo@uclink.berkeley.edu)
@@ -121,7 +121,7 @@
/* Begin code */
-static int tda9875_write(struct i2c_client *client, int subaddr, int val)
+static int tda9875_write(struct i2c_client *client, int subaddr, unsigned char val)
{
unsigned char buffer[2];
dprintk("In tda9875_write\n");
@@ -153,12 +153,19 @@
static void tda9875_set(struct i2c_client *client)
{
struct tda9875 *tda = client->data;
-
+ unsigned char a;
+
dprintk(KERN_DEBUG "tda9875_set(%04x,%04x,%04x,%04x)\n",tda->lvol,tda->rvol,tda->bass,tda->treble);
- tda9875_write(client, TDA9875_MVL, tda->lvol / 600 - 84);
- tda9875_write(client, TDA9875_MVR, tda->rvol / 600 -84);
- tda9875_write(client, TDA9875_MBA, tda->bass / 2340 -12);
- tda9875_write(client, TDA9875_MTR, tda->treble / 2621 -12);
+
+
+ a = tda->lvol & 0xff;
+ tda9875_write(client, TDA9875_MVL, a);
+ a =tda->rvol & 0xff;
+ tda9875_write(client, TDA9875_MVR, a);
+ a =tda->bass & 0xff;
+ tda9875_write(client, TDA9875_MBA, a);
+ a =tda->treble & 0xff;
+ tda9875_write(client, TDA9875_MTR, a);
}
static void do_tda9875_init(struct i2c_client *client)
@@ -198,10 +205,10 @@
tda9875_write(client, TDA9875_MUT, 0xcc ); /* General mute */
- t->mode=AUDIO_MUTE;
- t->lvol=t->rvol =51000; /* 0dB */
- t->bass=30420; /* 0dB */
- t->treble=34073; /* 0dB */
+ t->mode=AUDIO_UNMUTE;
+ t->lvol=t->rvol =0; /* 0dB */
+ t->bass=0; /* 0dB */
+ t->treble=0; /* 0dB */
tda9875_set(client);
}
@@ -280,15 +287,15 @@
VIDEO_AUDIO_TREBLE;
/* min is -84 max is 24 */
- left = (t->lvol+85)*600;
- right = (t->rvol+85)*600;
+ left = (t->lvol+84)*606;
+ right = (t->rvol+84)*606;
va->volume=MAX(left,right);
va->balance=(32768*MIN(left,right))/
(va->volume ? va->volume : 1);
va->balance=(left<right)?
(65535-va->balance) : va->balance;
- va->bass = (t->bass+13)*2340; /* min -12 max +15 */
- va->treble = (t->treble+13)*2621;/* min -12 max +12 */
+ va->bass = (t->bass+12)*2427; /* min -12 max +15 */
+ va->treble = (t->treble+12)*2730;/* min -12 max +12 */
va->mode |= VIDEO_SOUND_MONO;
@@ -306,11 +313,36 @@
va->volume) / 32768;
right = (MIN(va->balance,32768) *
va->volume) / 32768;
- t->lvol = left/600-84;
- t->rvol = right/600-84;
- t->bass = va->bass/2340-12;
- t->treble = va->treble/2621-12;
- tda9875_set(client);
+ t->lvol = ((left/606)-84) & 0xff;
+ if (t->lvol > 24)
+ t->lvol = 24;
+ if (t->lvol < -84)
+ t->lvol = -84 & 0xff;
+
+ t->rvol = ((right/606)-84) & 0xff;
+ if (t->rvol > 24)
+ t->rvol = 24;
+ if (t->rvol < -84)
+ t->rvol = -84 & 0xff;
+
+ t->bass = ((va->bass/2400)-12) & 0xff;
+ if (t->bass > 15)
+ t->bass = 15;
+ if (t->bass < -12)
+ t->bass = -12 & 0xff;
+
+ t->treble = ((va->treble/2700)-12) & 0xff;
+ if (t->treble > 12)
+ t->treble = 12;
+ if (t->treble < -12)
+ t->treble = -12 & 0xff;
+
+
+
+//printk("tda9875 bal:%04x vol:%04x bass:%04x treble:%04x\n",va->balance,va->volume,va->bass,va->treble);
+
+
+ tda9875_set(client);
break;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)