phonedev.diff is against 2.4.4 and brings the file phonedev.c up to date 
with respect to the Quicknet CVS.  Changes are very minor, mostly #if 
LINUX_VERSION_CODE matching and structure updates.  Small off by one 
fixes and file operation semantics updates.

There is no impact to other files or functions functions.

David

--- drivers/telephony/phonedev.c        Tue Sep 19 08:31:53 2000
+++ /zip/code/VoIP/ixj/phonedev.c       Sat May 12 17:32:05 2001
@@ -12,8 +12,14 @@
  *
  * Fixes:       Mar 01 2000 Thomas Sparr, <[EMAIL PROTECTED]>
  *              phone_register_device now works with unit!=PHONE_UNIT_ANY
+ *
+ *              May 12 2001 David Ford, <[EMAIL PROTECTED]>
+ *              brought kernel version up to date with CVS, minor changes
  */
 
+#if LINUX_VERSION_CODE < 0x020400
+#include <linux/config.h>
+#endif
 #include <linux/version.h>
 #include <linux/module.h>
 #include <linux/types.h>
@@ -23,13 +29,16 @@
 #include <linux/string.h>
 #include <linux/errno.h>
 #include <linux/phonedev.h>
+#if LINUX_VERSION_CODE >= 0x020400
 #include <linux/init.h>
+#endif
 #include <asm/uaccess.h>
 #include <asm/system.h>
 
 #include <linux/kmod.h>
+#if LINUX_VERSION_CODE >= 0x020400
 #include <linux/sem.h>
-
+#endif
 
 #define PHONE_NUM_DEVICES      256
 
@@ -38,8 +47,9 @@
  */
 
 static struct phone_device *phone_device[PHONE_NUM_DEVICES];
+#if LINUX_VERSION_CODE >= 0x020400
 static DECLARE_MUTEX(phone_lock);
-
+#endif
 /*
  *    Open a phone device.
  */
@@ -49,26 +59,48 @@
        unsigned int minor = MINOR(inode->i_rdev);
        int err = 0;
        struct phone_device *p;
+#if LINUX_VERSION_CODE >= 0x020400
        struct file_operations *old_fops, *new_fops = NULL;
-
+#endif
        if (minor >= PHONE_NUM_DEVICES)
                return -ENODEV;
 
+#if LINUX_VERSION_CODE >= 0x020400
        down(&phone_lock);
+#endif
        p = phone_device[minor];
+#if LINUX_VERSION_CODE < 0x020400
+       if (p == NULL) {
+#else
        if (p)
                new_fops = fops_get(p->f_op);
        if (!new_fops) {
+#endif
                char modname[32];
 
+#if LINUX_VERSION_CODE >= 0x020400
                up(&phone_lock);
+#endif
                sprintf(modname, "char-major-%d-%d", PHONE_MAJOR, minor);
                request_module(modname);
+#if LINUX_VERSION_CODE >= 0x020400
                down(&phone_lock);
+#endif
                p = phone_device[minor];
-               if (p == NULL || (new_fops = fops_get(p->f_op)) == NULL)
-               {
-                       err=-ENODEV;
+#if LINUX_VERSION_CODE < 0x020400
+               if (p == NULL)
+                       return -ENODEV;
+       }
+       if (p->open) {
+               err = p->open(p, file); /* Tell the device it is open */
+               if (err)
+                       return err;
+       }
+       file->f_op = p->f_op;
+       return 0;
+#else
+               if (p == NULL || (new_fops = fops_get(p->f_op)) == NULL) {
+                       err = -ENODEV;
                        goto end;
                }
        }
@@ -81,9 +113,10 @@
                file->f_op = fops_get(old_fops);
        }
        fops_put(old_fops);
-end:
+      end:
        up(&phone_lock);
        return err;
+#endif
 }
 
 /*
@@ -101,20 +134,25 @@
 
        if (unit != PHONE_UNIT_ANY) {
                base = unit;
-               end = unit + 1;  /* enter the loop at least one time */
+               end = unit;
        }
-       
+#if LINUX_VERSION_CODE >= 0x020400
        down(&phone_lock);
+#endif
        for (i = base; i < end; i++) {
                if (phone_device[i] == NULL) {
                        phone_device[i] = p;
                        p->minor = i;
                        MOD_INC_USE_COUNT;
+#if LINUX_VERSION_CODE >= 0x020400
                        up(&phone_lock);
+#endif
                        return 0;
                }
        }
+#if LINUX_VERSION_CODE >= 0x020400
        up(&phone_lock);
+#endif
        return -ENFILE;
 }
 
@@ -124,48 +162,90 @@
 
 void phone_unregister_device(struct phone_device *pfd)
 {
+#if LINUX_VERSION_CODE >= 0x020400
        down(&phone_lock);
+#endif
        if (phone_device[pfd->minor] != pfd)
                panic("phone: bad unregister");
        phone_device[pfd->minor] = NULL;
+#if LINUX_VERSION_CODE >= 0x020400
        up(&phone_lock);
+#endif
        MOD_DEC_USE_COUNT;
 }
 
 
-static struct file_operations phone_fops =
-{
-       owner:          THIS_MODULE,
-       open:           phone_open,
+static struct file_operations phone_fops = {
+#if LINUX_VERSION_CODE >= 0x020400
+       owner:THIS_MODULE,
+       open:phone_open,
+#else
+       NULL,
+       NULL,
+       NULL,
+       NULL,                   /* readdir */
+       NULL,
+       NULL,
+       NULL,
+       phone_open,
+       NULL,                   /* flush */
+       NULL
+#endif
 };
 
 /*
- *     Board init functions
+ *    Board init functions
  */
- 
+
+#if LINUX_VERSION_CODE < 0x020400
+extern int ixj_init(void);
 
 /*
  *    Initialise Telephony for linux
  */
 
+int telephony_init(void)
+#else
 static int __init telephony_init(void)
+#endif
 {
        printk(KERN_INFO "Linux telephony interface: v1.00\n");
        if (register_chrdev(PHONE_MAJOR, "telephony", &phone_fops)) {
                printk("phonedev: unable to get major %d\n", PHONE_MAJOR);
                return -EIO;
        }
-
+#if LINUX_VERSION_CODE < 0x020400
+       /*
+        *    Init kernel installed drivers
+        */
+#ifdef CONFIG_PHONE_IXJ
+       ixj_init();
+#endif
+#endif
        return 0;
 }
 
+#ifdef MODULE
+#if LINUX_VERSION_CODE < 0x020400
+int init_module(void)
+{
+       return telephony_init();
+}
+
+void cleanup_module(void)
+#else
 static void __exit telephony_exit(void)
+#endif
 {
        unregister_chrdev(PHONE_MAJOR, "telephony");
 }
 
+#endif
+
+#if LINUX_VERSION_CODE >= 0x020400
 module_init(telephony_init);
 module_exit(telephony_exit);
+#endif
 
 EXPORT_SYMBOL(phone_register_device);
 EXPORT_SYMBOL(phone_unregister_device);

Reply via email to