if (udc->transceiver) otg_set_suspend(udc->transceiver, 0); 
static void devstate_irq(struct omap_udc *udc, u16 irq_src){	u16	devstat, change;	devstat = UDC_DEVSTAT_REG;	change = devstat ^ udc->devstat;	udc->devstat = devstat;	if (change & (UDC_USB_RESET|UDC_ATT)) {		udc_quiesce(udc);		if (change & UDC_ATT) {			/* driver for any external transceiver will			 * have called omap_vbus_session() already			 */			if (devstat & UDC_ATT) {				udc->gadget.speed = USB_SPEED_FULL;				VDBG("connect\n");				if (!udc->transceiver)					pullup_enable(udc);				// if (driver->connect) call it			} else if (udc->gadget.speed != USB_SPEED_UNKNOWN) {				udc->gadget.speed = USB_SPEED_UNKNOWN;				if (!udc->transceiver)					pullup_disable(udc);				DBG("disconnect, gadget %s\n",					udc->driver->driver.name);				if (udc->driver->disconnect) {					spin_unlock(&udc->lock);					udc->driver->disconnect(&udc->gadget);					spin_lock(&udc->lock);				}			}			change &= ~UDC_ATT;		}		if (change & UDC_USB_RESET) {			if (devstat & UDC_USB_RESET) {				VDBG("RESET=1\n");			} else {				udc->gadget.speed = USB_SPEED_FULL;				INFO("USB reset done, gadget %s\n",					udc->driver->driver.name);				/* ep0 traffic is legal from now on */				UDC_IRQ_EN_REG = UDC_DS_CHG_IE | UDC_EP0_IE;			}			change &= ~UDC_USB_RESET;		}	}	if (change & UDC_SUS) {		if (udc->gadget.speed != USB_SPEED_UNKNOWN) {			// FIXME tell isp1301 to suspend/resume (?)			if (devstat & UDC_SUS) {				VDBG("suspend\n");				update_otg(udc);				/* HNP could be under way already */				if (udc->gadget.speed == USB_SPEED_FULL						&& udc->driver->suspend) {					spin_unlock(&udc->lock);					udc->driver->suspend(&udc->gadget);					spin_lock(&udc->lock);				}			} else {				VDBG("resume\n");				if (udc->gadget.speed == USB_SPEED_FULL						&& udc->driver->resume) {					spin_unlock(&udc->lock);					udc->driver->resume(&udc->gadget);					spin_lock(&udc->lock);				}			}		}		change &= ~UDC_SUS;	}	if (!cpu_is_omap15xx() && (change & OTG_FLAGS)) {		update_otg(udc);		change &= ~OTG_FLAGS;	}	change &= ~(UDC_CFG|UDC_DEF|UDC_ADD);	if (change)		VDBG("devstat %03x, ignore change %03x\n",			devstat,  change);	UDC_IRQ_SRC_REG = UDC_DS_CHG;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/4e67185a7ac3ecb1710e636e2f7e318e99298c7a/omap_udc.c/buggy/drivers/usb/gadget/omap_udc.c