upgrade to fedora-2.6.12-1.1398.FC4 + vserver 2.0.rc7
[linux-2.6.git] / sound / pci / au88x0 / au88x0_eq.c
index 9045a4b..53b47a4 100644 (file)
@@ -45,6 +45,8 @@
 #define VORTEX_EQ_SOURCE (VORTEX_EQ_BASE + 0x430)
 #define VORTEX_EQ_CTRL   (VORTEX_EQ_BASE + 0x440)
 
+#define VORTEX_BAND_COEFF_SIZE 0x30
+
 /* CEqHw.s */
 static void vortex_EqHw_SetTimeConsts(vortex_t * vortex, u16 gain, u16 level)
 {
@@ -52,10 +54,10 @@ static void vortex_EqHw_SetTimeConsts(vortex_t * vortex, u16 gain, u16 level)
        hwwrite(vortex->mmio, 0x2b3c8, level);
 }
 
-static inline short sign_invert(short a)
+static inline u16 sign_invert(u16 a)
 {
        /* -(-32768) -> -32768 so we do -(-32768) -> 32767 to make the result positive */
-       if (a == -32768)
+       if (a == (u16)-32768)
                return 32767;
        else
                return -a;
@@ -71,13 +73,13 @@ static void vortex_EqHw_SetLeftCoefs(vortex_t * vortex, u16 coefs[])
                hwwrite(vortex->mmio, 0x2b004 + n * 0x30, coefs[i + 1]);
 
                if (eqhw->this08 == 0) {
-                       hwwrite(vortex->mmio, 0x2b008 + n * 0x30, coefs[i + 2] & 0xffff);
-                       hwwrite(vortex->mmio, 0x2b00c + n * 0x30, coefs[i + 3] & 0xffff);
-                       hwwrite(vortex->mmio, 0x2b010 + n * 0x30, coefs[i + 4] & 0xffff);
+                       hwwrite(vortex->mmio, 0x2b008 + n * 0x30, coefs[i + 2]);
+                       hwwrite(vortex->mmio, 0x2b00c + n * 0x30, coefs[i + 3]);
+                       hwwrite(vortex->mmio, 0x2b010 + n * 0x30, coefs[i + 4]);
                } else {
-                       hwwrite(vortex->mmio, 0x2b008 + n * 0x30, sign_invert(coefs[2 + i]) & 0xffff);
-                       hwwrite(vortex->mmio, 0x2b00c + n * 0x30, sign_invert(coefs[3 + i]) & 0xffff);
-                       hwwrite(vortex->mmio, 0x2b010 + n * 0x30, sign_invert(coefs[4 + i]) & 0xffff);
+                       hwwrite(vortex->mmio, 0x2b008 + n * 0x30, sign_invert(coefs[2 + i]));
+                       hwwrite(vortex->mmio, 0x2b00c + n * 0x30, sign_invert(coefs[3 + i]));
+                       hwwrite(vortex->mmio, 0x2b010 + n * 0x30, sign_invert(coefs[4 + i]));
                }
                i += 5;
        }
@@ -93,13 +95,13 @@ static void vortex_EqHw_SetRightCoefs(vortex_t * vortex, u16 coefs[])
                hwwrite(vortex->mmio, 0x2b1e4 + n * 0x30, coefs[1 + i]);
 
                if (eqhw->this08 == 0) {
-                       hwwrite(vortex->mmio, 0x2b1e8 + n * 0x30, coefs[2 + i] & 0xffff);
-                       hwwrite(vortex->mmio, 0x2b1ec + n * 0x30, coefs[3 + i] & 0xffff);
-                       hwwrite(vortex->mmio, 0x2b1f0 + n * 0x30, coefs[4 + i] & 0xffff);
+                       hwwrite(vortex->mmio, 0x2b1e8 + n * 0x30, coefs[2 + i]);
+                       hwwrite(vortex->mmio, 0x2b1ec + n * 0x30, coefs[3 + i]);
+                       hwwrite(vortex->mmio, 0x2b1f0 + n * 0x30, coefs[4 + i]);
                } else {
-                       hwwrite(vortex->mmio, 0x2b1e8 + n * 0x30, sign_invert(coefs[2 + i]) & 0xffff);
-                       hwwrite(vortex->mmio, 0x2b1ec + n * 0x30, sign_invert(coefs[3 + i]) & 0xffff);
-                       hwwrite(vortex->mmio, 0x2b1f0 + n * 0x30, sign_invert(coefs[4 + i]) & 0xffff);
+                       hwwrite(vortex->mmio, 0x2b1e8 + n * 0x30, sign_invert(coefs[2 + i]));
+                       hwwrite(vortex->mmio, 0x2b1ec + n * 0x30, sign_invert(coefs[3 + i]));
+                       hwwrite(vortex->mmio, 0x2b1f0 + n * 0x30, sign_invert(coefs[4 + i]));
                }
                i += 5;
        }
@@ -176,8 +178,8 @@ static void vortex_EqHw_SetBypassGain(vortex_t * vortex, u16 a, u16 b)
                hwwrite(vortex->mmio, 0x2b3d4, a);
                hwwrite(vortex->mmio, 0x2b3ec, b);
        } else {
-               hwwrite(vortex->mmio, 0x2b3d4, sign_invert(a) & 0xffff);
-               hwwrite(vortex->mmio, 0x2b3ec, sign_invert(b) & 0xffff);
+               hwwrite(vortex->mmio, 0x2b3d4, sign_invert(a));
+               hwwrite(vortex->mmio, 0x2b3ec, sign_invert(b));
        }
 }
 
@@ -319,25 +321,27 @@ static void vortex_EqHw_GetRightGainsCurrent(vortex_t * vortex, u16 a[])
 
 #endif
 /* EQ band levels settings */
-static void vortex_EqHw_SetLevels(vortex_t * vortex, u16 a[])
+static void vortex_EqHw_SetLevels(vortex_t * vortex, u16 peaks[])
 {
        eqhw_t *eqhw = &(vortex->eq.this04);
-       int ebx;
+       int i;
 
-       for (ebx = 0; ebx < eqhw->this04; ebx++) {
-               hwwrite(vortex->mmio, 0x2b024 + ebx * 0x30, a[ebx]);
+       /* set left peaks */
+       for (i = 0; i < eqhw->this04; i++) {
+               hwwrite(vortex->mmio, 0x2b024 + i * VORTEX_BAND_COEFF_SIZE, peaks[i]);
        }
 
-       hwwrite(vortex->mmio, 0x2b3cc, a[eqhw->this04]);
-       hwwrite(vortex->mmio, 0x2b3d8, a[eqhw->this04 + 1]);
+       hwwrite(vortex->mmio, 0x2b3cc, peaks[eqhw->this04]);
+       hwwrite(vortex->mmio, 0x2b3d8, peaks[eqhw->this04 + 1]);
 
-       for (ebx = 0; ebx < eqhw->this04; ebx++) {
-               hwwrite(vortex->mmio, 0x2b204 + ebx * 0x30,
-                       a[ebx + (eqhw->this04 + 2)]);
+       /* set right peaks */
+       for (i = 0; i < eqhw->this04; i++) {
+               hwwrite(vortex->mmio, 0x2b204 + i * VORTEX_BAND_COEFF_SIZE,
+                       peaks[i + (eqhw->this04 + 2)]);
        }
 
-       hwwrite(vortex->mmio, 0x2b3e4, a[2 + (eqhw->this04 * 2)]);
-       hwwrite(vortex->mmio, 0x2b3f0, a[3 + (eqhw->this04 * 2)]);
+       hwwrite(vortex->mmio, 0x2b3e4, peaks[2 + (eqhw->this04 * 2)]);
+       hwwrite(vortex->mmio, 0x2b3f0, peaks[3 + (eqhw->this04 * 2)]);
 }
 
 #if 0