rtc-rv5c386a: make driver compile with kernel 2.6.36.
authorHauke Mehrtens <hauke@hauke-m.de>
Wed, 10 Nov 2010 19:02:09 +0000 (19:02 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Wed, 10 Nov 2010 19:02:09 +0000 (19:02 +0000)
This was only compile tested.

SVN-Revision: 23947

package/rtc-rv5c386a/src/rtc.c

index 34d0a83aab8f7cb12f769da1b2825768fc6e7811..5a018102f8137715c821e6a4da2eb7a71ddeaebc 100644 (file)
@@ -52,6 +52,7 @@
 #include <linux/rtc.h>
 #include <linux/delay.h>
 #include <linux/version.h>
+#include <linux/smp_lock.h>
 
 #include <asm/uaccess.h>
 #include <asm/system.h>
@@ -461,8 +462,7 @@ static ssize_t rtc_read(UNUSED struct file *filp, char *buf, size_t count,
        return len;
 }
 
-static int rtc_ioctl(UNUSED struct inode *inode, UNUSED struct file *filp,
-                    unsigned int cmd, unsigned long arg)
+static int rtc_do_ioctl(unsigned int cmd, unsigned long arg)
 {
        struct rtc_time rtc_tm;
 
@@ -492,14 +492,23 @@ static int rtc_ioctl(UNUSED struct inode *inode, UNUSED struct file *filp,
        return 0;
 }
 
-static struct file_operations rtc_fops = {
-       .owner   = THIS_MODULE,
-       .llseek  = no_llseek,
-       .read    = rtc_read,
-       .write   = rtc_write,
-       .ioctl   = rtc_ioctl,
-       .open    = rtc_open,
-       .release = rtc_release,
+static long rtc_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+       long ret;
+       lock_kernel();
+       ret = rtc_do_ioctl(cmd, arg);
+       unlock_kernel();
+       return ret;
+}
+
+static const struct file_operations rtc_fops = {
+       .owner          = THIS_MODULE,
+       .llseek         = no_llseek,
+       .read           = rtc_read,
+       .write          = rtc_write,
+       .unlocked_ioctl = rtc_ioctl,
+       .open           = rtc_open,
+       .release        = rtc_release,
 };
 
 static struct miscdevice rtc_dev = {