Messages in this thread Patch in this message | | | Date | Thu, 08 Apr 2004 09:59:33 -0700 | From | Hanna Linder <> | Subject | Re: [PATCH 2.6] add class support to dsp56k.c |
| |
--On Thursday, April 08, 2004 10:12:19 AM +0200 Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> On Wed, 7 Apr 2004, Hanna Linder wrote: >> Here is a patch that adds sysfs class support to /drivers/char/dsp56k.c >> >> I dont have the hardware or a cross compiler... If someone could test it >> I would appreciate it. > > Cross-compiles fine here, but further untested due to lack of hardware.
Thanks!
>> +out_chrdev: >> + unregister_chrdev(DSP56K_MAJOR, "sdp56k"); >> +out:
I just noticed this error. Here is the fixed patch:
diff -Nrup -Xdontdiff linux-2.6.5/drivers/char/dsp56k.c linux-2.6.5p/drivers/char/dsp56k.c --- linux-2.6.5/drivers/char/dsp56k.c 2004-04-03 19:37:07.000000000 -0800 +++ linux-2.6.5p/drivers/char/dsp56k.c 2004-04-08 09:53:57.000000000 -0700 @@ -35,6 +35,7 @@ #include <linux/init.h> #include <linux/devfs_fs_kernel.h> #include <linux/smp_lock.h> +#include <linux/device.h> #include <asm/atarihw.h> #include <asm/traps.h> @@ -149,6 +150,8 @@ static struct dsp56k_device { int tx_wsize, rx_wsize; } dsp56k; +static struct class_simple *dsp56k_class; + static int dsp56k_reset(void) { u_char status; @@ -502,6 +505,8 @@ static char banner[] __initdata = KERN_I static int __init dsp56k_init_driver(void) { + int err = 0; + if(!MACH_IS_ATARI || !ATARIHW_PRESENT(DSP56K)) { printk("DSP56k driver: Hardware not present\n"); return -ENODEV; @@ -511,17 +516,35 @@ static int __init dsp56k_init_driver(voi printk("DSP56k driver: Unable to register driver\n"); return -ENODEV; } + dsp56k_class = class_simple_create(THIS_MODULE, "dsp56k"); + if (IS_ERR(dsp56k_class)) { + err = PTR_ERR(dsp56k_class); + goto out_chrdev; + } + class_simple_device_add(dsp56k_class, MKDEV(DSP56K_MAJOR, 0), NULL, "dsp56k"); - devfs_mk_cdev(MKDEV(DSP56K_MAJOR, 0), + err = devfs_mk_cdev(MKDEV(DSP56K_MAJOR, 0), S_IFCHR | S_IRUSR | S_IWUSR, "dsp56k"); + if(err) + goto out_class; printk(banner); - return 0; + goto out; + +out_class: + class_simple_device_remove(MKDEV(DSP56K_MAJOR, 0)); + class_simple_destroy(dsp56k_class); +out_chrdev: + unregister_chrdev(DSP56K_MAJOR, "dsp56k"); +out: + return err; } module_init(dsp56k_init_driver); static void __exit dsp56k_cleanup_driver(void) { + class_simple_device_remove(MKDEV(DSP56K_MAJOR, 0)); + class_simple_destroy(dsp56k_class); unregister_chrdev(DSP56K_MAJOR, "dsp56k"); devfs_remove("dsp56k"); }
- 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/
| |