qh->hw_info2 &= __constant_cpu_to_le32 (~0xffff); 
qh->hw_info2 &= __constant_cpu_to_le32(~(QH_CMASK | QH_SMASK)); 
static int qh_schedule (struct ehci_hcd *ehci, struct ehci_qh *qh){	int 		status;	unsigned	uframe;	__le32		c_mask;	unsigned	frame;		/* 0..(qh->period - 1), or NO_FRAME */	qh_refresh(ehci, qh);	qh->hw_next = EHCI_LIST_END;	frame = qh->start;	/* reuse the previous schedule slots, if we can */	if (frame < qh->period) {		uframe = ffs (le32_to_cpup (&qh->hw_info2) & 0x00ff);		status = check_intr_schedule (ehci, frame, --uframe,				qh, &c_mask);	} else {		uframe = 0;		c_mask = 0;		status = -ENOSPC;	}	/* else scan the schedule to find a group of slots such that all	 * uframes have enough periodic bandwidth available.	 */	if (status) {		/* "normal" case, uframing flexible except with splits */		if (qh->period) {			frame = qh->period - 1;			do {				for (uframe = 0; uframe < 8; uframe++) {					status = check_intr_schedule (ehci,							frame, uframe, qh,							&c_mask);					if (status == 0)						break;				}			} while (status && frame--);		/* qh->period == 0 means every uframe */		} else {			frame = 0;			status = check_intr_schedule (ehci, 0, 0, qh, &c_mask);		}		if (status)			goto done;		qh->start = frame;		/* reset S-frame and (maybe) C-frame masks */		qh->hw_info2 &= __constant_cpu_to_le32 (~0xffff);		qh->hw_info2 |= qh->period			? cpu_to_le32 (1 << uframe)			: __constant_cpu_to_le32 (0xff);		qh->hw_info2 |= c_mask;	} else		ehci_dbg (ehci, "reused qh %p schedule\n", qh);	/* stuff into the periodic schedule */ 	status = qh_link_periodic (ehci, qh);done:	return status;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7dedacf4270a810fadcca887ac85d267b5f1882d/ehci-sched.c/clean/drivers/usb/host/ehci-sched.c