Index: sound/i2c/ak4535.c
===================================================================
RCS file: /cvs/linux/kernel26/sound/i2c/ak4535.c,v
retrieving revision 1.5
diff -u -r1.5 ak4535.c
--- sound/i2c/ak4535.c	24 Feb 2005 08:39:26 -0000	1.5
+++ sound/i2c/ak4535.c	25 Feb 2005 18:21:26 -0000
@@ -99,7 +99,7 @@
 
 //@@@ - i2c_get_client is defined but not declared in i2c.h
 static struct i2c_client *ak4535_i2c_client=NULL; //@@@
-struct i2c_client *ak4535_get_i2c_client() { return ak4535_i2c_client; }
+struct i2c_client *ak4535_get_i2c_client(void) { return ak4535_i2c_client; }
 
 static struct ak4535_reg_info {
 	unsigned char num;
@@ -257,9 +257,9 @@
 
 	case I2C_SET_MIC_GAIN:
 		newregnum = REG_PGA;
-		if (val > 127) {
-			printk("mic_gain=%d must be in range [0,127]", val);
-			val = 127;
+		if (val > 71) {
+			printk("mic_gain=%d must be in range [0,71]", val);
+			val = 71;
 		}
 		akm->regs[REG_PGA] = (unsigned char)val;
 		break;
@@ -394,9 +394,9 @@
 				return -EINVAL;
 			akm->line = val;
 			akm->mod_cnt++;
-			/* input value [0,100], ak4535 uses [0,255] */
+			/* input value [0,100], ak4535 uses [255,0] */
 			val = gain.left;
-			val = 255 * val / 100;
+			val = 0xff & ~(255 * val / 100);
 			ak4535_update(clnt, I2C_SET_LINE_GAIN, &val);
 			break;
 
@@ -405,9 +405,9 @@
 				return -EINVAL;
 			akm->mic = val;
 			akm->mod_cnt++;
-			/* input value [0,100], ak4535 uses [0,127] */
+			/* input value [0,100], ak4535 uses [0,71] */
 			val = gain.left;
-			val = 127 * val / 100;
+			val = 71 * val / 100;
 			ak4535_update(clnt, I2C_SET_MIC_GAIN, &val);
 			break;
 

