diff -Nurp slmodem-2.9.11-20050816.orig/drivers/st7554.c slmodem-2.9.11-20050816/drivers/st7554.c --- slmodem-2.9.11-20050816.orig/drivers/st7554.c 2005-09-11 09:42:38.000000000 +0200 +++ slmodem-2.9.11-20050816/drivers/st7554.c 2005-09-11 09:52:45.000000000 +0200 @@ -202,23 +202,7 @@ struct st7554_state { struct semaphore sem; }; - - - static struct st7554_state *st7554_table[MAX_MODEMS] = {}; -#ifdef FOUND_CLASS_SIMPLE -#define CLASS_DEVICE_CREATE(class, dev, device, fmt, rest) class_simple_device_add(class, dev, device, fmt, rest) -#define CLASS_DESTROY(class) class_simple_destroy(class) -#define CLASS_DEVICE_DESTROY(class, dev) class_simple_device_remove(dev) -#define CLASS_CREATE(owner, name) class_simple_create(owner, name) -static struct class_simple *st7554_class; -#else -#define CLASS_DEVICE_CREATE(class, dev, device, fmt, rest) class_device_create(class, dev, device, fmt, rest) -#define CLASS_DESTROY(class) class_destroy(class) -#define CLASS_DEVICE_DESTROY(class, dev) class_device_destroy(class, dev) -#define CLASS_CREATE(owner, name) class_create(owner, name) -static struct class *st7554_class; -#endif static DECLARE_MUTEX(open_sem); @@ -996,6 +980,32 @@ static struct file_operations st7554_fop .release = st7554_close, }; +#ifdef FOUND_CLASS_SIMPLE +#define CLASS_DEVICE_CREATE(class, dev, device, fmt, rest) class_simple_device_add(class, dev, device, fmt, rest) +#define CLASS_DESTROY(class) class_simple_destroy(class) +#define CLASS_DEVICE_DESTROY(class, dev) class_simple_device_remove(dev) +#define CLASS_CREATE(owner, name) class_simple_create(owner, name) +static struct class_simple *st7554_class; +/*#else +#define CLASS_DEVICE_CREATE(class, dev, device, fmt, rest) class_device_create(class, dev, device, fmt, rest) +#define CLASS_DESTROY(class) class_destroy(class) +#define CLASS_DEVICE_DESTROY(class, dev) class_device_destroy(class, dev) +#define CLASS_CREATE(owner, name) class_create(owner, name) +static struct class *st7554_class; +*/ +#else +#define CLASS_DEVICE_CREATE(class, dev, device, fmt, rest) usb_register_dev(interface, &class) +#define CLASS_DESTROY(class) 0 +#define CLASS_DEVICE_DESTROY(class, dev) usb_deregister_dev(interface, &class) +#define CLASS_CREATE(owner, name) st7554_class +static struct usb_class_driver st7554_class = { + .name = "slusb%d", + .fops = &st7554_fops, + .mode = S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, + .minor_base = 0, +}; + +#endif /* --------------------------------------------------------------------- */ @@ -1350,11 +1360,6 @@ static int __init st7554_modem_init(void USB_INFO ("ST7554 USB Modem.\n"); st7554_class = CLASS_CREATE(THIS_MODULE, "slusb"); - if (IS_ERR(st7554_class)) { - ret = PTR_ERR(st7554_class); - USB_ERR("st7554_modem_init: failed to create sysfs class, error %d\n", ret); - return ret; - } ret = usb_register(&st7554_usb_driver); if ( ret ) {