3080 .owner = THIS_MODULE,
3081 .open = sisusb_open,
3082 .release = sisusb_release,
3083 .read = sisusb_read,
3084 .write = sisusb_write,
3085 .llseek = sisusb_lseek,
3086#ifdef SISUSB_NEW_CONFIG_COMPAT
3087 .compat_ioctl = sisusb_compat_ioctl,
3088#endif
3089 .unlocked_ioctl = sisusb_ioctl
3090};
3091
3092static struct usb_class_driver usb_sisusb_class = {
3093 .name = "sisusbvga%d",
3094 .fops = &usb_sisusb_fops,
3095 .minor_base = SISUSB_MINOR
3096};
3097
3098static int sisusb_probe(struct usb_interface *intf,
3099 const struct usb_device_id *id)
3100{
3101 struct usb_device *dev = interface_to_usbdev(intf);
3102 struct sisusb_usb_data *sisusb;
3103 int retval = 0, i;
3104
3105 dev_info(&dev->dev, "USB2VGA dongle found at address %d\n",
3106 dev->devnum);
3107
3108
3109 if (!(sisusb = kzalloc(sizeof(*sisusb), GFP_KERNEL))) {
3110 dev_err(&sisusb->sisusb_dev->dev, "Failed to allocate memory for private data\n");
3111 return -ENOMEM;
3112 }
3113 kref_init(&sisusb->kref);
3114
3115 mutex_init(&(sisusb->lock));
3116
3117
3118 if ((retval = usb_register_dev(intf, &usb_sisusb_class))) {
3119 dev_err(&sisusb->sisusb_dev->dev, "Failed to get a minor for device %d\n",
3120 dev->devnum);