temp &= ~PORT_CSC; 
temp &= ~PORT_RWC_BITS; temp |= PORT_CSC; 
ehci_hub_status_data (struct usb_hcd *hcd, char *buf){	struct ehci_hcd	*ehci = hcd_to_ehci (hcd);	u32		temp, status = 0;	int		ports, i, retval = 1;	unsigned long	flags;	/* if !USB_SUSPEND, root hub timers won't get shut down ... */	if (!HC_IS_RUNNING(hcd->state))		return 0;	/* init status to no-changes */	buf [0] = 0;	ports = HCS_N_PORTS (ehci->hcs_params);	if (ports > 7) {		buf [1] = 0;		retval++;	}		/* no hub change reports (bit 0) for now (power, ...) */	/* port N changes (bit N)? */	spin_lock_irqsave (&ehci->lock, flags);	for (i = 0; i < ports; i++) {		temp = readl (&ehci->regs->port_status [i]);		if (temp & PORT_OWNER) {			/* don't report this in GetPortStatus */			if (temp & PORT_CSC) {				temp &= ~PORT_CSC;				writel (temp, &ehci->regs->port_status [i]);			}			continue;		}		if (!(temp & PORT_CONNECT))			ehci->reset_done [i] = 0;		if ((temp & (PORT_CSC | PORT_PEC | PORT_OCC)) != 0				// PORT_STAT_C_SUSPEND?				|| ((temp & PORT_RESUME) != 0					&& time_after (jiffies,						ehci->reset_done [i]))) {			if (i < 7)			    buf [0] |= 1 << (i + 1);			else			    buf [1] |= 1 << (i - 7);			status = STS_PCD;		}	}	/* FIXME autosuspend idle root hubs */	spin_unlock_irqrestore (&ehci->lock, flags);	return status ? retval : 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/10f6524a8ef1413a8cbd952673997013183fe2a9/ehci-hub.c/buggy/drivers/usb/host/ehci-hub.c