All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Ford <david@blue-labs.org>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>, linux-kernel@vger.kernel.org
Subject: [PATCH] drivers/telephony/phonedev.c (brings this code up to date with Quicknet CVS)
Date: Sat, 12 May 2001 17:41:44 -0700	[thread overview]
Message-ID: <3AFDD848.3060604@blue-labs.org> (raw)

[-- Attachment #1: Type: text/plain, Size: 326 bytes --]

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


[-- Attachment #2: phonedev.diff --]
[-- Type: text/plain, Size: 4753 bytes --]

--- 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);

             reply	other threads:[~2001-05-13  0:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-05-13  0:41 David Ford [this message]
2001-05-13 16:25 ` [PATCH] drivers/telephony/phonedev.c (brings this code up to date with Quicknet CVS) Alan Cox
2001-05-13 17:14   ` David Ford
2001-05-13 18:37     ` Alan Cox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3AFDD848.3060604@blue-labs.org \
    --to=david@blue-labs.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.