dum->port_status |= USB_PORT_STAT_CONNECTION | (USB_PORT_STAT_C_CONNECTION << 16); 
spin_lock_irq (&dum->lock); dum->pullup = 1; set_link_state (dum); spin_unlock_irq (&dum->lock); 
usb_gadget_register_driver (struct usb_gadget_driver *driver){	struct dummy	*dum = the_controller;	int		retval, i;	if (!dum)		return -EINVAL;	if (dum->driver)		return -EBUSY;	if (!driver->bind || !driver->unbind || !driver->setup			|| driver->speed == USB_SPEED_UNKNOWN)		return -EINVAL;	/*	 * SLAVE side init ... the layer above hardware, which	 * can't enumerate without help from the driver we're binding.	 */	dum->devstatus = 0;	dum->resuming = 0;	INIT_LIST_HEAD (&dum->gadget.ep_list);	for (i = 0; i < DUMMY_ENDPOINTS; i++) {		struct dummy_ep	*ep = &dum->ep [i];		if (!ep_name [i])			break;		ep->ep.name = ep_name [i];		ep->ep.ops = &dummy_ep_ops;		list_add_tail (&ep->ep.ep_list, &dum->gadget.ep_list);		ep->halted = ep->already_seen = ep->setup_stage = 0;		ep->ep.maxpacket = ~0;		ep->last_io = jiffies;		ep->gadget = &dum->gadget;		ep->desc = NULL;		INIT_LIST_HEAD (&ep->queue);	}	dum->gadget.ep0 = &dum->ep [0].ep;	dum->ep [0].ep.maxpacket = 64;	list_del_init (&dum->ep [0].ep.ep_list);	INIT_LIST_HEAD(&dum->fifo_req.queue);	dum->driver = driver;	dum->gadget.dev.driver = &driver->driver;	dev_dbg (udc_dev(dum), "binding gadget driver '%s'\n",			driver->driver.name);	if ((retval = driver->bind (&dum->gadget)) != 0) {		dum->driver = NULL;		dum->gadget.dev.driver = NULL;		return retval;	}	driver->driver.bus = dum->gadget.dev.parent->bus;	driver_register (&driver->driver);	device_bind_driver (&dum->gadget.dev);	/* khubd will enumerate this in a while */	dum->port_status |= USB_PORT_STAT_CONNECTION		| (USB_PORT_STAT_C_CONNECTION << 16);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f1c39fad7d1bbea31744138cd3a532ff346cd4ab/dummy_hcd.c/clean/drivers/usb/gadget/dummy_hcd.c