The following patch fixes registering/unregistering /proc/toshiba. This part
works, but on loading/unloading the module I get error messages. Machine is a
Satellite Pro 4280 XDVD, Red Hat 6.2, modutils-2.3.17. I assume the machine
has a different register layout than the one you use (older Toshiba patches/
modules didn't work either):

Sep 24 17:31:14 tigger kernel: io mapaddr 0xffffe not valid at toshiba.c:401!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xffffa not valid at toshiba.c:401!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xfe6f5 not valid at toshiba.c:428!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xfe706 not valid at toshiba.c:430!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xf0039 not valid at toshiba.c:432!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xfe009 not valid at toshiba.c:479!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xfe00b not valid at toshiba.c:480!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xfe00c not valid at toshiba.c:480!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xffff5 not valid at toshiba.c:485!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xffff6 not valid at toshiba.c:485!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xffff8 not valid at toshiba.c:486!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xffff9 not valid at toshiba.c:486!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xffffb not valid at toshiba.c:487!
Sep 24 17:31:14 tigger kernel: io mapaddr 0xffffc not valid at toshiba.c:487!
Sep 24 17:31:14 tigger kernel: Toshiba System Managment Mode driver v1.7 22/6/2000
Sep 24 17:32:03 tigger kernel: Trying to free nonexistent resource <0000-ffffffff>

--- linux-2.4.0-test/drivers/char/toshiba.c.dist-2.4.0-test9-pre6       Fri Sep 22 
23:25:55 2000
+++ linux-2.4.0-test/drivers/char/toshiba.c     Sun Sep 24 17:38:20 2000
@@ -5,6 +5,7 @@
  * Valuable assistance and patches from:
  *     Tom May <[EMAIL PROTECTED]>
  *     Rob Napier <[EMAIL PROTECTED]>
+ *     Horst von Brand <[EMAIL PROTECTED]>
  *
  * Fn status port numbers for machine ID's courtesy of
  *     0xfc08: Garth Berry <[EMAIL PROTECTED]>
@@ -80,7 +81,7 @@
 MODULE_PARM(tosh_fn, "i");
 
 
-static int tosh_get_info(char *, char **, off_t, int, int);
+static int tosh_get_info(char *, char **, off_t, int);
 static int tosh_open(struct inode *ip, struct file *);
 static int tosh_release(struct inode *, struct file *);
 static int tosh_ioctl(struct inode *, struct file *, unsigned int,
@@ -100,9 +101,7 @@
        &tosh_fops
 };
 
-static struct proc_dir_entry tosh_proc_entry = {
-       0, 7, "toshiba", S_IFREG|S_IRUGO, 1, 0, 0, 33, NULL, tosh_get_info, NULL
-};
+static struct proc_dir_entry *tosh_proc_entry;
 
 /*
  * Read the Fn key status
@@ -338,7 +337,7 @@
 /*
  * Print the information for /proc/toshiba
  */
-int tosh_get_info(char *buffer, char **start, off_t fpos, int length, int dummy)
+int tosh_get_info(char *buffer, char **start, off_t fpos, int length)
 {
        char *temp;
        int key;
@@ -527,7 +526,12 @@
        misc_register(&tosh_device);
 
        /* register the proc entry */
-       proc_register(&proc_root, &tosh_proc_entry);
+       tosh_proc_entry = create_proc_entry("toshiba", S_IFREG|S_IRUGO, NULL);
+       if(tosh_proc_entry) 
+               tosh_proc_entry->get_info = tosh_get_info;
+       else
+               printk(KERN_ERR "toshiba: unable to register /proc/toshiba\n");
+
        return 0;
 }
 
@@ -540,7 +544,7 @@
 void cleanup_module(void)
 {
        /* remove the proc entry */
-       proc_unregister(&proc_root, tosh_proc_entry.low_ino);
+       remove_proc_entry("toshiba", NULL);
 
        /* unregister the device file */
        misc_deregister(&tosh_device);
-- 
Horst von Brand                             [EMAIL PROTECTED]
Casilla 9G, Vin~a del Mar, Chile                               +56 32 672616

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to