[PATCH] drivers/telephony/phonedev.c (brings this code up to date with Quicknet CVS)

From: David Ford (david@blue-labs.org)
Date: Sat May 12 2001 - 19:41:44 EST


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, <thomas.l.sparr@telia.com>
  * phone_register_device now works with unit!=PHONE_UNIT_ANY
+ *
+ * May 12 2001 David Ford, <david@blue-labs.org>
+ * 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);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue May 15 2001 - 21:00:31 EST