 usb_fill_int_urb(itmtouch->readurb, itmtouch->usbdev, pipe, itmtouch->rbuf, maxp, itmtouch_irq, itmtouch, endpoint->bInterval); 
 usb_fill_int_urb(itmtouch->readurb, itmtouch->usbdev, pipe, itmtouch->rbuf, maxp, itmtouch_irq, itmtouch, endpoint->bInterval); 
static int itmtouch_probe(struct usb_interface *intf, const struct usb_device_id *id){	struct itmtouch_dev *itmtouch;	struct usb_host_interface *interface;	struct usb_endpoint_descriptor *endpoint;	struct usb_device *udev = interface_to_usbdev(intf);	unsigned int pipe;	unsigned int maxp;	char path[PATH_SIZE];	interface = intf->cur_altsetting;	endpoint = &interface->endpoint[0].desc;	if (!(itmtouch = kcalloc(1, sizeof(struct itmtouch_dev), GFP_KERNEL))) {		err("%s - Out of memory.", __FUNCTION__);		return -ENOMEM;	}	itmtouch->usbdev = udev;		itmtouch->inputdev.private = itmtouch;	itmtouch->inputdev.open = itmtouch_open;	itmtouch->inputdev.close = itmtouch_close;	usb_make_path(udev, path, PATH_SIZE);		itmtouch->inputdev.evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);	itmtouch->inputdev.absbit[0] = BIT(ABS_X) | BIT(ABS_Y) | BIT(ABS_PRESSURE);	itmtouch->inputdev.keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);	itmtouch->inputdev.name = itmtouch->name;	itmtouch->inputdev.phys = itmtouch->phys;	itmtouch->inputdev.id.bustype = BUS_USB;	itmtouch->inputdev.id.vendor = udev->descriptor.idVendor;	itmtouch->inputdev.id.product = udev->descriptor.idProduct;	itmtouch->inputdev.id.version = udev->descriptor.bcdDevice;		itmtouch->inputdev.dev = &intf->dev;	if (!strlen(itmtouch->name))		sprintf(itmtouch->name, "USB ITM touchscreen");		/* device limits */	/* as specified by the ITM datasheet, X and Y are 12bit,	 * Z (pressure) is 8 bit. However, the fields are defined up	 * to 14 bits for future possible expansion.	 */	input_set_abs_params(&itmtouch->inputdev, ABS_X, 0, 0x0FFF, 2, 0);	input_set_abs_params(&itmtouch->inputdev, ABS_Y, 0, 0x0FFF, 2, 0);	input_set_abs_params(&itmtouch->inputdev, ABS_PRESSURE, 0, 0xFF, 2, 0);	/* initialise the URB so we can read from the transport stream */	pipe = usb_rcvintpipe(itmtouch->usbdev, endpoint->bEndpointAddress);	maxp = usb_maxpacket(udev, pipe, usb_pipeout(pipe));		if (maxp > ITM_BUFSIZE)		maxp = ITM_BUFSIZE;	itmtouch->readurb = usb_alloc_urb(0, GFP_KERNEL);		if (!itmtouch->readurb) {		dbg("%s - usb_alloc_urb failed: itmtouch->readurb", __FUNCTION__);		kfree(itmtouch);		return -ENOMEM;	}		usb_fill_int_urb(itmtouch->readurb,			itmtouch->usbdev,			pipe,			itmtouch->rbuf, 			maxp,			itmtouch_irq,			itmtouch,			endpoint->bInterval);	input_register_device(&itmtouch->inputdev);	printk(KERN_INFO "itmtouch: %s registered on %s\n", itmtouch->name, path);	usb_set_intfdata(intf, itmtouch);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/05f091ab4c8c1f12f8dd38ee789489904fea327d/itmtouch.c/clean/drivers/usb/input/itmtouch.c