ChangeSet 1.1643.36.12, 2004/04/08 14:45:41-07:00, hannal@us.ibm.com [PATCH] add class support to dsp56k.c Here is a patch that adds sysfs class support to /drivers/char/dsp56k.c drivers/char/dsp56k.c | 27 +++++++++++++++++++++++++-- 1 files changed, 25 insertions(+), 2 deletions(-) diff -Nru a/drivers/char/dsp56k.c b/drivers/char/dsp56k.c --- a/drivers/char/dsp56k.c Thu Apr 15 10:20:35 2004 +++ b/drivers/char/dsp56k.c Thu Apr 15 10:20:35 2004 @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -149,6 +150,8 @@ 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 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 @@ 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"); }