static int kbtab_probe(struct usb_interface *intf, const struct usb_device_id *id){	struct usb_device *dev = interface_to_usbdev(intf);	struct usb_endpoint_descriptor *endpoint;	struct kbtab *kbtab;	char path[64];	if (!(kbtab = kmalloc(sizeof(struct kbtab), GFP_KERNEL)))		return -ENOMEM;	memset(kbtab, 0, sizeof(struct kbtab));	kbtab->data = usb_buffer_alloc(dev, 8, GFP_KERNEL, &kbtab->data_dma);	if (!kbtab->data) {		kfree(kbtab);		return -ENOMEM;	}	kbtab->irq = usb_alloc_urb(0, GFP_KERNEL);	if (!kbtab->irq) {		usb_buffer_free(dev, 10, kbtab->data, kbtab->data_dma);		kfree(kbtab);		return -ENOMEM;	}	kbtab->dev.evbit[0] |= BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_MSC);	kbtab->dev.absbit[0] |= BIT(ABS_X) | BIT(ABS_Y) | BIT(ABS_PRESSURE);	kbtab->dev.keybit[LONG(BTN_LEFT)] |= BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE);	kbtab->dev.keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_PEN) | BIT(BTN_TOUCH);	kbtab->dev.mscbit[0] |= BIT(MSC_SERIAL);	kbtab->dev.absmax[ABS_X] = 0x2000;	kbtab->dev.absmax[ABS_Y] = 0x1750;	kbtab->dev.absmax[ABS_PRESSURE] = 0xff;		kbtab->dev.absfuzz[ABS_X] = 4;	kbtab->dev.absfuzz[ABS_Y] = 4;	kbtab->dev.private = kbtab;	kbtab->dev.open = kbtab_open;	kbtab->dev.close = kbtab_close;	usb_make_path(dev, path, 64);	sprintf(kbtab->phys, "%s/input0", path);	kbtab->dev.name = "KB Gear Tablet";	kbtab->dev.phys = kbtab->phys;	kbtab->dev.id.bustype = BUS_USB;	kbtab->dev.id.vendor = le16_to_cpu(dev->descriptor.idVendor);	kbtab->dev.id.product = le16_to_cpu(dev->descriptor.idProduct);	kbtab->dev.id.version = le16_to_cpu(dev->descriptor.bcdDevice);	kbtab->dev.dev = &intf->dev;	kbtab->usbdev = dev;	endpoint = &intf->cur_altsetting->endpoint[0].desc;	usb_fill_int_urb(kbtab->irq, dev,			 usb_rcvintpipe(dev, endpoint->bEndpointAddress),			 kbtab->data, 8,			 kbtab_irq, kbtab, endpoint->bInterval);	kbtab->irq->transfer_dma = kbtab->data_dma;	kbtab->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;	input_register_device(&kbtab->dev);	printk(KERN_INFO "input: KB Gear Tablet on %s\n",  path);	usb_set_intfdata(intf, kbtab);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/05f091ab4c8c1f12f8dd38ee789489904fea327d/kbtab.c/clean/drivers/usb/input/kbtab.c