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