fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / media / radio / miropcm20-rds-core.c
index a917a90..9428d8b 100644 (file)
 #include <linux/string.h>
 #include <linux/init.h>
 #include <linux/slab.h>
-#include <asm/semaphore.h>
+#include <linux/mutex.h>
+
 #include <asm/io.h>
-#include "../../../sound/oss/aci.h"
+#include "oss/aci.h"
 #include "miropcm20-rds-core.h"
 
 #define DEBUG 0
 
-static struct semaphore aci_rds_sem;
+static struct mutex aci_rds_mutex;
 
 #define RDS_DATASHIFT          2   /* Bit 2 */
 #define RDS_DATAMASK        (1 << RDS_DATASHIFT)
 #define RDS_BUSYMASK        0x10   /* Bit 4 */
 #define RDS_CLOCKMASK       0x08   /* Bit 3 */
 
-#define RDS_DATA(x)         (((x) >> RDS_DATASHIFT) & 1) 
+#define RDS_DATA(x)         (((x) >> RDS_DATASHIFT) & 1)
 
 
 #if DEBUG
 static void print_matrix(char array[], unsigned int length)
 {
-        int i, j;
-
-        for (i=0; i<length; i++) {
-                printk(KERN_DEBUG "aci-rds: ");
-                for (j=7; j>=0; j--) {
-                        printk("%d", (array[i] >> j) & 0x1);
-                }
-                if (i%8 == 0)
-                        printk(" byte-border\n");
-                else
-                        printk("\n");
-        }
+       int i, j;
+
+       for (i=0; i<length; i++) {
+               printk(KERN_DEBUG "aci-rds: ");
+               for (j=7; j>=0; j--) {
+                       printk("%d", (array[i] >> j) & 0x1);
+               }
+               if (i%8 == 0)
+                       printk(" byte-border\n");
+               else
+                       printk("\n");
+       }
 }
 #endif /* DEBUG */
 
@@ -113,7 +114,7 @@ static int rds_write(unsigned char cmd)
 {
        unsigned char sendbuffer[8];
        int i;
-       
+
        if (byte2trans(cmd, sendbuffer, 8) != 0){
                return -1;
        } else {
@@ -150,7 +151,7 @@ static int rds_read(unsigned char databuffer[], int datasize)
           I have to waitread() here */
        if (rds_waitread() < 0)
                return -1;
-       
+
        memset(databuffer, 0, datasize);
 
        for (i=0; i< READSIZE; i++)
@@ -181,7 +182,7 @@ int aci_rds_cmd(unsigned char cmd, unsigned char databuffer[], int datasize)
 {
        int ret;
 
-       if (down_interruptible(&aci_rds_sem))
+       if (mutex_lock_interruptible(&aci_rds_mutex))
                return -EINTR;
 
        rds_write(cmd);
@@ -192,15 +193,15 @@ int aci_rds_cmd(unsigned char cmd, unsigned char databuffer[], int datasize)
        else
                ret = 0;
 
-       up(&aci_rds_sem);
-       
+       mutex_unlock(&aci_rds_mutex);
+
        return ret;
 }
 EXPORT_SYMBOL(aci_rds_cmd);
 
 int __init attach_aci_rds(void)
 {
-       init_MUTEX(&aci_rds_sem);
+       mutex_init(&aci_rds_mutex);
        return 0;
 }