Messages in this thread Patch in this message | | | Date | Wed, 07 Apr 2004 16:13:30 -0700 | From | Hanna Linder <> | Subject | [PATCH 2.6] add class support to dsp56k.c |
| |
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.
Thanks.
Hanna IBM Linux Technology Center ----- diff -Nrup 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-07 14:44:28.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,12 +516,28 @@ 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, "sdp56k"); +out: + return err; } module_init(dsp56k_init_driver); @@ -524,6 +545,8 @@ static void __exit dsp56k_cleanup_driver { unregister_chrdev(DSP56K_MAJOR, "dsp56k"); devfs_remove("dsp56k"); + class_simple_device_remove(MKDEV(DSP56K_MAJOR, 0)); + class_simple_destroy(dsp56k_class); } module_exit(dsp56k_cleanup_driver); - 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/
| |