PERFORCE change 113228 for review

Hans Petter Selasky hselasky at FreeBSD.org
Sat Jan 20 22:34:20 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=113228

Change 113228 by hselasky at hselasky_mini_itx on 2007/01/20 22:34:11

	Remove some unused functions. Reverse the order of 
	BUS_DMASYNC_PREXXX and BUS_DMASYNC_POSTXXX which was
	introduced by change 113175. Two new functions,
	usbd_page_dma_exit and usbd_page_dma_enter, handle
	the exiting and entering from the context where
	the USB host controller can read/write to the 
	DMA-able memory. By default memory allocated by
	usbd_mem_alloc_sub is entered into the DMA-read/write
	context. usbd_mem_free_sub will by default exit the
	memory from the DMA-read/write context.

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/ehci.c#19 edit
.. //depot/projects/usb/src/sys/dev/usb/ohci.c#15 edit
.. //depot/projects/usb/src/sys/dev/usb/uhci.c#16 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_subr.c#26 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#29 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/ehci.c#19 (text+ko) ====

@@ -197,7 +197,7 @@
 
 	sc->sc_eintrs = EHCI_NORMAL_INTRS;
 
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(&(sc->sc_hw_page));
 
 	for(i = 0; i < EHCI_VIRTUAL_FRAMELIST_COUNT; i++)
 	{
@@ -323,7 +323,7 @@
 	sc->sc_async_p_last = 
 	  &(hw_ptr->async_start);
 
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(&(sc->sc_hw_page));
 
 #ifdef USB_DEBUG
 	if(ehcidebug)
@@ -686,11 +686,11 @@
 ehci_dump_sqtd(ehci_qtd_t *sqtd)
 {
 	uint8_t temp;
-	usbd_page_sync(sqtd->page, BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(sqtd->page);
 	printf("QTD(%p) at 0x%08x:\n", sqtd, le32toh(sqtd->qtd_self));
 	ehci_dump_qtd(sqtd);
 	temp = (sqtd->qtd_next & htole32(EHCI_LINK_TERMINATE)) ? 1 : 0;
-	usbd_page_sync(sqtd->page, BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(sqtd->page);
 	return temp;
 }
 
@@ -717,7 +717,7 @@
 {
 	u_int32_t endp, endphub;
 
-	usbd_page_sync(qh->page, BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(qh->page);
 	printf("QH(%p) at 0x%08x:\n", qh, le32toh(qh->qh_self) & ~0x1F);
 	printf("  link="); ehci_dump_link(qh->qh_link, 1); printf("\n");
 	endp = le32toh(qh->qh_endp);
@@ -738,14 +738,14 @@
 	printf("  curqtd="); ehci_dump_link(qh->qh_curqtd, 0); printf("\n");
 	printf("Overlay qTD:\n");
 	ehci_dump_qtd((void *)&qh->qh_qtd);
-	usbd_page_sync(qh->page, BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(qh->page);
 	return;
 }
 
 static void
 ehci_dump_sitd(ehci_sitd_t *sitd)
 {
-	usbd_page_sync(sitd->page, BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(sitd->page);
 	printf("SITD(%p) at 0x%08x\n", sitd, le32toh(sitd->sitd_self) & ~0x1F);
 	printf(" next=0x%08x\n", le32toh(sitd->sitd_next));
 	printf(" portaddr=0x%08x dir=%s addr=%d endpt=0x%x port=0x%x huba=0x%x\n", 
@@ -766,14 +766,14 @@
 		le32toh(sitd->sitd_bp[1]),
 		le32toh(sitd->sitd_bp_hi[0]),
 		le32toh(sitd->sitd_bp_hi[1]));
-	usbd_page_sync(sitd->page, BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(sitd->page);
 	return;
 }
 
 static void
 ehci_dump_itd(ehci_itd_t *itd)
 {
-	usbd_page_sync(itd->page, BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(itd->page);
 	printf("ITD(%p) at 0x%08x\n", itd, le32toh(itd->itd_self) & ~0x1F);
 	printf(" next=0x%08x\n", le32toh(itd->itd_next));
 	printf(" status[0]=0x%08x; <%s>\n", le32toh(itd->itd_status[0]),
@@ -815,7 +815,7 @@
 		le32toh(itd->itd_bp_hi[4]),
 		le32toh(itd->itd_bp_hi[5]),
 		le32toh(itd->itd_bp_hi[6]));
-	usbd_page_sync(itd->page, BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(itd->page);
 	return;
 }
 
@@ -859,15 +859,15 @@
 
 	/* (sc->sc_bus.mtx) must be locked */
 
-	usbd_page_sync(std->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(std->page);
 
 	std->next = last->next;
 	std->sitd_next = last->sitd_next;
 
 	std->prev = last;
 
-	usbd_page_sync(std->page, BUS_DMASYNC_POSTWRITE);
-	usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_enter(std->page);
+	usbd_page_dma_exit(last->page);
 
 	/* the last->next->prev is never followed:
 	 * std->next->prev = std;
@@ -875,7 +875,7 @@
 	last->next = std;
 	last->sitd_next = std->sitd_self;
 
-	usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(last->page);
 
 	return(std);
 }
@@ -888,15 +888,15 @@
 
 	/* (sc->sc_bus.mtx) must be locked */
 
-	usbd_page_sync(std->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(std->page);
 
 	std->next = last->next;
 	std->itd_next = last->itd_next;
 
 	std->prev = last;
 
-	usbd_page_sync(std->page, BUS_DMASYNC_POSTWRITE);
-	usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_enter(std->page);
+	usbd_page_dma_exit(last->page);
 
 	/* the last->next->prev is never followed:
 	 * std->next->prev = std;
@@ -904,7 +904,7 @@
 	last->next = std;
 	last->itd_next = std->itd_self;
 
-	usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(last->page);
 
 	return(std);
 }
@@ -917,15 +917,15 @@
 
 	/* (sc->sc_bus.mtx) must be locked */
 
-	usbd_page_sync(sqh->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(sqh->page);
 
 	sqh->next = last->next;
 	sqh->qh_link = last->qh_link;
 
 	sqh->prev = last;
 
-	usbd_page_sync(sqh->page, BUS_DMASYNC_POSTWRITE);
-	usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_enter(sqh->page);
+	usbd_page_dma_exit(last->page);
 
 	/* the last->next->prev is never followed:
 	 * sqh->next->prev = sqh;
@@ -934,7 +934,7 @@
 	last->next = sqh;
 	last->qh_link = sqh->qh_self;
 
-	usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(last->page);
 
 #ifdef USB_DEBUG
 	if(ehcidebug > 5)
@@ -954,16 +954,18 @@
 
 	/* (sc->sc_bus.mtx) must be locked */
 
-	usbd_page_sync(std->prev->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(std->prev->page);
 
 	std->prev->next = std->next;
 	std->prev->sitd_next = std->sitd_next;
 
-	usbd_page_sync(std->prev->page, BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(std->prev->page);
 
 	if(std->next)
 	{
+		usbd_page_dma_exit(std->next->page);
 		std->next->prev = std->prev;
+		usbd_page_dma_enter(std->next->page);
 	}
 	return((last == std) ? std->prev : last);
 }
@@ -976,16 +978,18 @@
 
 	/* (sc->sc_bus.mtx) must be locked */
 
-	usbd_page_sync(std->prev->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(std->prev->page);
 
 	std->prev->next = std->next;
 	std->prev->itd_next = std->itd_next;
 
-	usbd_page_sync(std->prev->page, BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(std->prev->page);
 
 	if(std->next)
 	{
+		usbd_page_dma_exit(std->next->page);
 		std->next->prev = std->prev;
+		usbd_page_dma_enter(std->next->page);
 	}
 	return((last == std) ? std->prev : last);
 }
@@ -1001,19 +1005,21 @@
 	/* only remove if not removed from a queue */
 	if(sqh->prev)
 	{
-		usbd_page_sync(sqh->prev->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(sqh->prev->page);
 
 		sqh->prev->next = sqh->next;
 		sqh->prev->qh_link = sqh->qh_link;
 
-		usbd_page_sync(sqh->prev->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(sqh->prev->page);
 
 		if(sqh->next)
 		{
+			usbd_page_dma_exit(sqh->next->page);
 			sqh->next->prev = sqh->prev;
+			usbd_page_dma_enter(sqh->next->page);
 		}
 
-		usbd_page_sync(sqh->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(sqh->page);
 
 		/* set the Terminate-bit in the e_next of the QH,
 		 * in case the transferred packet was short so
@@ -1022,7 +1028,7 @@
 
 		sqh->qh_qtd.qtd_next = htole32(EHCI_LINK_TERMINATE);
 
-		usbd_page_sync(sqh->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(sqh->page);
 
 		last = ((last == sqh) ? sqh->prev : last);
 
@@ -1058,9 +1064,9 @@
 	     td != NULL;
 	     td = td->obj_next)
 	{
-		usbd_page_sync(td->page, BUS_DMASYNC_PREREAD);
+		usbd_page_dma_exit(td->page);
 		temp = le32toh(td->qtd_status);
-		usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD);
+		usbd_page_dma_enter(td->page);
 
 		if (temp & EHCI_QTD_ACTIVE) {
 
@@ -1150,11 +1156,11 @@
 
 		/* isochronous full speed transfer */
 
-		usbd_page_sync(td->page, BUS_DMASYNC_PREREAD);
+		usbd_page_dma_exit(td->page);
 
 		status = le32toh(td->sitd_status);
 
-		usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD);
+		usbd_page_dma_enter(td->page);
 
 		if (!(status & EHCI_SITD_ACTIVE)) {
 			ehci_device_done(xfer, USBD_NORMAL_COMPLETION);
@@ -1167,7 +1173,7 @@
 
 		/* isochronous high speed transfer */
 
-		usbd_page_sync(td->page, BUS_DMASYNC_PREREAD);
+		usbd_page_dma_exit(td->page);
 
 		status = ((!(td->itd_status[0] & htole32(EHCI_ITD_ACTIVE))) &&
 			  (!(td->itd_status[1] & htole32(EHCI_ITD_ACTIVE))) &&
@@ -1178,7 +1184,7 @@
 			  (!(td->itd_status[6] & htole32(EHCI_ITD_ACTIVE))) &&
 			  (!(td->itd_status[7] & htole32(EHCI_ITD_ACTIVE))));
 
-		usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD);
+		usbd_page_dma_enter(td->page);
 
 		if (status) {
 			ehci_device_done(xfer, USBD_NORMAL_COMPLETION);
@@ -1199,11 +1205,11 @@
 		     td != NULL;
 		     td = td->obj_next)
 		{
-			usbd_page_sync(td->page, BUS_DMASYNC_PREREAD);
+			usbd_page_dma_exit(td->page);
 
 			status = le32toh(td->qtd_status);
 
-			usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD);
+			usbd_page_dma_enter(td->page);
 
 			/* if there is an active TD 
 			 * the transfer isn't done
@@ -1545,7 +1551,7 @@
 		 */
 		xfer->pipe->toggle_next = 1;
 
-		usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(td->page);
 
 		/* SETUP message */
 
@@ -1577,7 +1583,7 @@
 		    td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE);
 		}
 
-		usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(td_last->page);
 	}
 	else
 	{
@@ -1641,7 +1647,7 @@
 			      "than there is in the buffer!", __FUNCTION__);
 		}
 
-		usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(td->page);
 
 		/* fill out current TD */
 
@@ -1684,12 +1690,12 @@
 		    td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE);
 		}
 
-		usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(td_last->page);
 	}
 
 	if(xfer->pipe->methods == &ehci_device_ctrl_methods)
 	{
-		usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(td->page);
 
 		/* STATUS message */
 
@@ -1711,17 +1717,17 @@
 		td->len = 0;
 		td_last = td;
 
-		usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(td_last->page);
 	}
 
-	usbd_page_sync(td_last->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(td_last->page);
 
 	/* the last TD terminates the transfer: */
 	td_last->qtd_next = htole32(EHCI_LINK_TERMINATE);
 	td_last->qtd_altnext = htole32(EHCI_LINK_TERMINATE);
 	td_last->qtd_status |= htole32(EHCI_QTD_IOC);
 
-	usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(td_last->page);
 
 	/* must have at least one frame! */
 
@@ -1738,7 +1744,7 @@
 
 	qh = xfer->qh_start;
 
-	usbd_page_sync(qh->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(qh->page);
 
 	/* the "qh_link" field is filled when the QH is added */
 
@@ -1802,7 +1808,7 @@
 	qh->qh_qtd.qtd_next = td->qtd_self;
 	qh->qh_qtd.qtd_altnext = htole32(EHCI_LINK_TERMINATE);
 
-	usbd_page_sync(qh->page, BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(qh->page);
 
 	EHCI_APPEND_QH(qh, *qh_last);
 	return;
@@ -1880,9 +1886,9 @@
 		ehci_dump_sitd(td);
 	  }
 #endif
-	  usbd_page_sync(td->page, BUS_DMASYNC_PREREAD);
+	  usbd_page_dma_exit(td->page);
 	  status = le32toh(td->sitd_status);
-	  usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD);
+	  usbd_page_dma_enter(td->page);
 
 	  /* check for active transfers */
 	  if (status & EHCI_SITD_ACTIVE) {
@@ -1952,9 +1958,9 @@
 	  }
 #endif
 
-	  usbd_page_sync(td->page, BUS_DMASYNC_PREREAD);
+	  usbd_page_dma_exit(td->page);
 	  status = le32toh(td->itd_status[td_no]);
-	  usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD);
+	  usbd_page_dma_enter(td->page);
 
 	  if (status & EHCI_ITD_ACTIVE) {
 		need_delay = 1;
@@ -2392,7 +2398,7 @@
 
 	for(td = xfer->td_start; td; td = td->obj_next)
 	{
-		usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(td->page);
 
 		td->sitd_portaddr = sitd_portaddr;
 
@@ -2421,7 +2427,7 @@
 		}
 		td->sitd_back = htole32(EHCI_LINK_TERMINATE);
 
-		usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(td->page);
 	}
 	return;
 }
@@ -2521,7 +2527,7 @@
 			*plen = xfer->max_frame_size;
 		}
 
-		usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(td->page);
 
 		td->sitd_bp[0] = htole32(buf_res.physaddr);
 
@@ -2550,7 +2556,7 @@
 			  (EHCI_SITD_ACTIVE|
 			   EHCI_SITD_SET_LEN(*plen));
 		}
-		usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(td->page);
 
 #ifdef USB_DEBUG
 		if(ehcidebug > 15)
@@ -2620,7 +2626,7 @@
 
 	for(td = xfer->td_start; td; td = td->obj_next)
 	{
-		usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(td->page);
 
 		/* set TD inactive */
 		td->itd_status[0] = 0;
@@ -2651,7 +2657,7 @@
 		/* set transfer multiplier */
 		td->itd_bp[2] = htole32(xfer->max_packet_count & 3);
 
-		usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(td->page);
 	}
 	return;
 }
@@ -2757,7 +2763,7 @@
 
 		if(td_no == 0)
 		{
-			usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD);
+			usbd_page_dma_exit(td->page);
 
 			/* update page address */
 			td->itd_bp[page_no] &= htole32(0xFFF);
@@ -2841,7 +2847,7 @@
 
 		if((td_no == 8) || (nframes == 0))
 		{
-			usbd_page_sync(td->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD);
+			usbd_page_dma_enter(td->page);
 #ifdef USB_DEBUG
 			if(ehcidebug > 15)
 			{
@@ -3816,7 +3822,7 @@
 
 		usbd_page_get_info(page_ptr, size[1], &page_info);
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(page_info.page);
 
 		td = page_info.buffer;
 
@@ -3827,7 +3833,7 @@
 
 		last_obj = td;
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(page_info.page);
 	    }
 	    size[1] += sizeof(ehci_itd_t);
 	  }
@@ -3844,7 +3850,7 @@
 
 		usbd_page_get_info(page_ptr, size[1], &page_info);
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(page_info.page);
 
 		td = page_info.buffer;
 
@@ -3855,7 +3861,7 @@
 
 		last_obj = td;
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(page_info.page);
 	    }
 	    size[1] += sizeof(ehci_sitd_t);
 	  }
@@ -3872,7 +3878,7 @@
 
 		usbd_page_get_info(page_ptr, size[1], &page_info);
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(page_info.page);
 
 		qtd = page_info.buffer;
 
@@ -3883,7 +3889,7 @@
 
 		last_obj = qtd;
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(page_info.page);
 	    }
 	    size[1] += sizeof(ehci_qtd_t);
 	  }
@@ -3910,7 +3916,7 @@
 
 		usbd_page_get_info(page_ptr, size[1], &page_info);
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(page_info.page);
 
 		qh = page_info.buffer;
 
@@ -3921,7 +3927,7 @@
 
 		last_obj = qh;
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(page_info.page);
 	    }
 	    size[1] += sizeof(ehci_qh_t);
 	  }

==== //depot/projects/usb/src/sys/dev/usb/ohci.c#15 (text+ko) ====

@@ -269,7 +269,7 @@
 
 	sc->sc_eintrs = OHCI_NORMAL_INTRS;
 
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(&(sc->sc_hw_page));
 
 	/*
 	 * setup self pointers
@@ -337,7 +337,7 @@
 		  hw_ptr->intr_start[i|(OHCI_NO_EDS/2)].ed_self;
 	}
 
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(&(sc->sc_hw_page));
 
 	LIST_INIT(&sc->sc_interrupt_list_head);
 
@@ -515,11 +515,11 @@
 
 	hw_ptr = sc->sc_hw_ptr;
 
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(&(sc->sc_hw_page));
 	DPRINTF(("         HCCA: frame_number=0x%04x done_head=0x%08x\n",
 		 le32toh(hw_ptr->hcca.hcca_frame_number),
 		 le32toh(hw_ptr->hcca.hcca_done_head)));
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(&(sc->sc_hw_page));
 	return;
 }
 static void
@@ -540,7 +540,7 @@
 	uint32_t td_flags;
 	uint8_t temp;
 
-	usbd_page_sync(std->page, BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(std->page);
 
 	td_flags = le32toh(std->td_flags);
 	temp = (std->td_next == 0);
@@ -560,7 +560,7 @@
 	       le32toh(std->td_next),
 	       le32toh(std->td_be));
 
-	usbd_page_sync(std->page, BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(std->page);
 	return temp;
 }
 
@@ -571,7 +571,7 @@
 	uint16_t i;
 	uint8_t temp;
 
-	usbd_page_sync(sitd->page, BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(sitd->page);
 
 	itd_flags = le32toh(sitd->itd_flags);
 	temp = (sitd->itd_next == 0);
@@ -593,7 +593,7 @@
 	}
 	printf("\n");
 
-	usbd_page_sync(sitd->page, BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(sitd->page);
 	return temp;
 }
 
@@ -615,7 +615,7 @@
 	uint32_t ed_flags;
 	u_int32_t ed_headp;
 
-	usbd_page_sync(sed->page, BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(sed->page);
 
 	ed_flags = le32toh(sed->ed_flags);
 	ed_headp = le32toh(sed->ed_headp);
@@ -637,7 +637,7 @@
 	       le32toh(sed->ed_headp),
 	       le32toh(sed->ed_next));
 
-	usbd_page_sync(sed->page, BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(sed->page);
 	return;
 }
 #endif
@@ -651,7 +651,7 @@
 
 	/* (sc->sc_bus.mtx) must be locked */
 
-	usbd_page_sync(sed->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(sed->page);
 
 	sed->next = last->next;
 	sed->ed_next = last->ed_next;
@@ -660,8 +660,8 @@
 
 	sed->prev = last;
 
-	usbd_page_sync(sed->page, BUS_DMASYNC_POSTWRITE);
-	usbd_page_sync(last->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_enter(sed->page);
+	usbd_page_dma_exit(last->page);
 
 	/* the last->next->prev is never followed:
 	 * sed->next->prev = sed;
@@ -670,7 +670,7 @@
 	last->next = sed;
 	last->ed_next = sed->ed_self;
 
-	usbd_page_sync(last->page, BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(last->page);
 
 	return(sed);
 }
@@ -686,19 +686,21 @@
 	/* only remove if not removed from a queue */
 	if(sed->prev)
 	{
-		usbd_page_sync(sed->prev->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(sed->prev->page);
 
 		sed->prev->next = sed->next;
 		sed->prev->ed_next = sed->ed_next;
 
-		usbd_page_sync(sed->prev->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(sed->prev->page);
 
 		if(sed->next)
 		{
+			usbd_page_dma_exit(sed->next->page);
 			sed->next->prev = sed->prev;
+			usbd_page_dma_enter(sed->next->page);
 		}
 
-		usbd_page_sync(sed->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD);
+		usbd_page_dma_exit(sed->page);
 
 		/* terminate transfer in case the
 		 * transferred packet was short so
@@ -708,7 +710,7 @@
 		sed->ed_flags |= htole32(OHCI_ED_SKIP);
 		sed->ed_headp = sed->ed_tailp;
 
-		usbd_page_sync(sed->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD);
+		usbd_page_dma_enter(sed->page);
 
 		last = ((last == sed) ? sed->prev : last);
 
@@ -745,7 +747,7 @@
 			ohci_dump_itd(td);
 		}
 #endif
-		usbd_page_sync(td->page, BUS_DMASYNC_PREREAD);
+		usbd_page_dma_exit(td->page);
 
 		nframes = td->frames;
 		olen = &td->itd_offset[0];
@@ -777,7 +779,7 @@
 			olen++;
 		}
 
-		usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD);
+		usbd_page_dma_enter(td->page);
 
 		if(((void *)td) == xfer->td_transfer_last)
 		{
@@ -847,7 +849,7 @@
 			      __FUNCTION__, __LINE__);
 		}
 
-		usbd_page_sync(td->page, BUS_DMASYNC_PREREAD);
+		usbd_page_dma_exit(td->page);
 
 		phy_start = le32toh(td->td_cbp);
 		td_flags = le32toh(td->td_flags);
@@ -871,7 +873,7 @@
 			}
 		}
 
-		usbd_page_sync(td->page, BUS_DMASYNC_POSTREAD);
+		usbd_page_dma_enter(td->page);
 
 		DPRINTFN(10, ("len=%d\n", len));
 
@@ -927,11 +929,11 @@
 
 	DPRINTFN(12, ("xfer=%p checking transfer\n", xfer));
 
-	usbd_page_sync(ed->page, BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(ed->page);
 	ed_flags = le32toh(ed->ed_flags);
 	ed_headp = le32toh(ed->ed_headp);
 	ed_tailp = le32toh(ed->ed_tailp);
-	usbd_page_sync(ed->page, BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(ed->page);
 
 	if ((ed_flags & OHCI_ED_SKIP) ||
 	    (ed_headp & OHCI_HALTED) ||
@@ -1047,7 +1049,7 @@
 
 	status = 0;
 
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(&(sc->sc_hw_page));
 	done = le32toh(hw_ptr->hcca.hcca_done_head);
 
 	/* The LSb of done is used to inform the HC Driver that an interrupt
@@ -1079,7 +1081,7 @@
 		status = OREAD4(sc, OHCI_INTERRUPT_STATUS) & ~OHCI_WDH;
 	}
 
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(&(sc->sc_hw_page));
 
 	if(status == 0)		/* nothing to be done (PCI shared interrupt) */
 	{
@@ -1290,7 +1292,7 @@
 		 */
 		xfer->pipe->toggle_next = 1;
 
-		usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(td->page);
 
 		/* SETUP message */
 
@@ -1317,7 +1319,7 @@
 		    td_last->td_next = td->td_self;
 		}
 
-		usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(td_last->page);
 	}
 	else
 	{
@@ -1391,7 +1393,7 @@
 			      "than there is in the buffer!", __FUNCTION__);
 		}
 
-		usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(td->page);
 
 		/* fill out TD */
 
@@ -1428,12 +1430,12 @@
 		    td_last->td_next = td->td_self;
 		}
 
-		usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(td_last->page);
 	}
 
 	if(xfer->pipe->methods == &ohci_device_ctrl_methods)
 	{
-		usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(td->page);
 
 		/* STATUS message */
 
@@ -1453,16 +1455,16 @@
 
 		td_last = td;
 
-		usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(td_last->page);
 	}
 
-	usbd_page_sync(td_last->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(td_last->page);
 
 	td_last->td_next = 0;
 	td_last->td_flags &= htole32(~OHCI_TD_INTR_MASK);
 	td_last->td_flags |= htole32(OHCI_TD_SET_DI(1));
 
-	usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(td_last->page);
 
 	/* must have at least one frame! */
 
@@ -1479,7 +1481,7 @@
 
 	ed = xfer->qh_start;
 
-	usbd_page_sync(ed->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(ed->page);
 
 	ed_flags = (OHCI_ED_SET_FA(xfer->address)|
 		    OHCI_ED_SET_EN(UE_GET_ADDR(xfer->endpoint))|
@@ -1493,7 +1495,7 @@
 
 	ed->ed_flags = htole32(ed_flags);
 
-	usbd_page_sync(ed->page, BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(ed->page);
 
 	td = xfer->td_transfer_first;
 
@@ -1574,7 +1576,7 @@
 
 	for(ed = xfer->qh_start; ed; ed = ed->obj_next)
 	{
-		usbd_page_sync(ed->page, BUS_DMASYNC_PREREAD);
+		usbd_page_dma_exit(ed->page);
 
 		if((!(ed->ed_flags & htole32(OHCI_ED_SKIP))) &&
 		   (!(ed->ed_headp & htole32(OHCI_HALTED))) &&
@@ -1583,7 +1585,7 @@
 			need_delay = 1;
 		}
 
-		usbd_page_sync(ed->page, BUS_DMASYNC_POSTREAD);
+		usbd_page_dma_enter(ed->page);
 	}
 
 	if(xfer->pipe->methods == &ohci_device_bulk_methods)
@@ -1890,9 +1892,9 @@
 	DPRINTFN(5,("xfer=%p next=%d nframes=%d\n",
 		    xfer, xfer->pipe->isoc_next, xfer->nframes));
 
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(&(sc->sc_hw_page));
 	nframes = le32toh(hw_ptr->hcca.hcca_frame_number);
-	usbd_page_sync(&(sc->sc_hw_page), BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(&(sc->sc_hw_page));
 
 	if((((nframes - xfer->pipe->isoc_next) & ((1<<16)-1)) < xfer->nframes) ||
 	   (((xfer->pipe->isoc_next - nframes) & ((1<<16)-1)) >= 256))
@@ -1958,7 +1960,7 @@
 		   (OHCI_PAGE(buf_res.physaddr) != bp0) ||
 		   (nframes == 0))
 		{
-			usbd_page_sync(td->page, BUS_DMASYNC_PREWRITE);
+			usbd_page_dma_exit(td->page);
 
 			/* fill current ITD */
 			td->itd_flags = htole32(
@@ -1991,18 +1993,18 @@
 			    td_last->itd_next = td->itd_self;
 			}
 
-			usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE);
+			usbd_page_dma_enter(td_last->page);
 		}
 	}
 
-	usbd_page_sync(td_last->page, BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD);
+	usbd_page_dma_exit(td_last->page);
 
 	/* update the last TD */
 	td_last->itd_flags &= htole32(~OHCI_ITD_NOINTR);
 	td_last->itd_flags |= htole32(OHCI_ITD_SET_DI(0));
 	td_last->itd_next = 0;
 
-	usbd_page_sync(td_last->page, BUS_DMASYNC_POSTWRITE|BUS_DMASYNC_POSTREAD);
+	usbd_page_dma_enter(td_last->page);
 
 	xfer->td_transfer_last = td_last;
 
@@ -2015,7 +2017,7 @@
 #endif
 	ed = xfer->qh_start;
 
-	usbd_page_sync(ed->page, BUS_DMASYNC_PREWRITE);
+	usbd_page_dma_exit(ed->page);
 
 	if(UE_GET_DIR(xfer->endpoint) == UE_DIR_IN)
 		ed_flags = (OHCI_ED_DIR_IN|OHCI_ED_FORMAT_ISO);
@@ -2033,7 +2035,7 @@
 
 	ed->ed_flags = htole32(ed_flags);
 
-	usbd_page_sync(ed->page, BUS_DMASYNC_POSTWRITE);
+	usbd_page_dma_enter(ed->page);
 
 	td = xfer->td_transfer_first;
 
@@ -2849,7 +2851,7 @@
 
 		usbd_page_get_info(page_ptr, size[1], &page_info);
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(page_info.page);
 
 		td = page_info.buffer;
 
@@ -2860,7 +2862,7 @@
 
 		last_obj = td;
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(page_info.page);
 	    }
 	    size[1] += sizeof(ohci_td_t);
 	  }
@@ -2877,7 +2879,7 @@
 
 		usbd_page_get_info(page_ptr, size[1], &page_info);
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(page_info.page);
 
 		itd = page_info.buffer;
 
@@ -2888,7 +2890,7 @@
 
 		last_obj = itd;
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_POSTWRITE);
+		usbd_page_dma_enter(page_info.page);
 	    }
 	    size[1] += sizeof(ohci_itd_t);
 	  }
@@ -2912,7 +2914,7 @@
 
 		usbd_page_get_info(page_ptr, size[1], &page_info);
 
-		usbd_page_sync(page_info.page, BUS_DMASYNC_PREWRITE);
+		usbd_page_dma_exit(page_info.page);
 
 		ed = page_info.buffer;
 

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list