/* We insert Isochronous URBs directly into the frame list at the beginning  */
static void uhci_insert_td_in_frame_list(struct uhci_hcd *uhci, struct uhci_td *td, unsigned framenum)
/* We insert Isochronous URBs directly into the frame list at the beginning  */
static void uhci_insert_td_in_frame_list(struct uhci_hcd *uhci, struct uhci_td *td, unsigned framenum)
{
	framenum &= (UHCI_NUMFRAMES - 1);
	td->frame = framenum;
	if (uhci->frame_cpu[framenum]) {
		struct uhci_td *ftd, *ltd;
		ftd = uhci->frame_cpu[framenum];
		ltd = list_entry(ftd->fl_list.prev, struct uhci_td, fl_list);
		list_add_tail(&td->fl_list, &ftd->fl_list);
		td->link = ltd->link;
		wmb();
		ltd->link = LINK_TO_TD(td);
	} else {
		td->link = uhci->frame[framenum];
		wmb();
		uhci->frame[framenum] = LINK_TO_TD(td);
		uhci->frame_cpu[framenum] = td;
	}
}