| From nobody Mon Sep 17 00:00:00 2001 |
| From: Harald Welte <laforge@gnumonks.org> |
| Date: Wed, 10 May 2006 13:28:52 +0200 |
| Subject: [Cardman 40x0] Fix udev device creation |
| |
| This patch corrects the order of the calls to register_chrdev() and |
| pcmcia_register_driver(). Now udev correctly creates userspace device |
| files /dev/cmmN and /dev/cmxN respectively. |
| |
| Based on an earlier patch by Jan Niehusmann <jan@gondor.com>. |
| |
| Signed-off-by: Harald Welte <laforge@netfilter.org> |
| Signed-off-by: Linus Torvalds <torvalds@osdl.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| Signed-off-by: Chris Wright <chrisw@sous-sol.org> |
| |
| --- |
| drivers/char/pcmcia/cm4000_cs.c | 10 ++++++---- |
| drivers/char/pcmcia/cm4040_cs.c | 11 +++++++---- |
| 2 files changed, 13 insertions(+), 8 deletions(-) |
| |
| --- linux-2.6.16.16.orig/drivers/char/pcmcia/cm4000_cs.c |
| +++ linux-2.6.16.16/drivers/char/pcmcia/cm4000_cs.c |
| @@ -2010,10 +2010,6 @@ static int __init cmm_init(void) |
| if (!cmm_class) |
| return -1; |
| |
| - rc = pcmcia_register_driver(&cm4000_driver); |
| - if (rc < 0) |
| - return rc; |
| - |
| major = register_chrdev(0, DEVICE_NAME, &cm4000_fops); |
| if (major < 0) { |
| printk(KERN_WARNING MODULE_NAME |
| @@ -2021,6 +2017,12 @@ static int __init cmm_init(void) |
| return -1; |
| } |
| |
| + rc = pcmcia_register_driver(&cm4000_driver); |
| + if (rc < 0) { |
| + unregister_chrdev(major, DEVICE_NAME); |
| + return rc; |
| + } |
| + |
| return 0; |
| } |
| |
| --- linux-2.6.16.16.orig/drivers/char/pcmcia/cm4040_cs.c |
| +++ linux-2.6.16.16/drivers/char/pcmcia/cm4040_cs.c |
| @@ -769,16 +769,19 @@ static int __init cm4040_init(void) |
| if (!cmx_class) |
| return -1; |
| |
| - rc = pcmcia_register_driver(&reader_driver); |
| - if (rc < 0) |
| - return rc; |
| - |
| major = register_chrdev(0, DEVICE_NAME, &reader_fops); |
| if (major < 0) { |
| printk(KERN_WARNING MODULE_NAME |
| ": could not get major number\n"); |
| return -1; |
| } |
| + |
| + rc = pcmcia_register_driver(&reader_driver); |
| + if (rc < 0) { |
| + unregister_chrdev(major, DEVICE_NAME); |
| + return rc; |
| + } |
| + |
| return 0; |
| } |
| |