summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/usb_busdma.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/usb_busdma.h')
-rw-r--r--sys/dev/usb/usb_busdma.h30
1 files changed, 19 insertions, 11 deletions
diff --git a/sys/dev/usb/usb_busdma.h b/sys/dev/usb/usb_busdma.h
index 3c1600b..48b4d29 100644
--- a/sys/dev/usb/usb_busdma.h
+++ b/sys/dev/usb/usb_busdma.h
@@ -60,8 +60,10 @@ typedef void (usb2_dma_callback_t)(struct usb2_dma_parent_tag *udpt);
* address of a memory page having size USB_PAGE_SIZE.
*/
struct usb2_page {
+#if USB_HAVE_BUSDMA
bus_size_t physaddr;
void *buffer; /* non Kernel Virtual Address */
+#endif
};
/*
@@ -71,7 +73,9 @@ struct usb2_page {
*/
struct usb2_page_search {
void *buffer;
+#if USB_HAVE_BUSDMA
bus_size_t physaddr;
+#endif
uint32_t length;
};
@@ -81,62 +85,67 @@ struct usb2_page_search {
*/
struct usb2_page_cache {
-#ifdef __FreeBSD__
+#if USB_HAVE_BUSDMA && defined(__FreeBSD__)
bus_dma_tag_t tag;
bus_dmamap_t map;
#endif
-#ifdef __NetBSD__
+#if USB_HAVE_BUSDMA && defined(__NetBSD__)
bus_dma_tag_t tag;
bus_dmamap_t map;
bus_dma_segment_t *p_seg;
#endif
+#if USB_HAVE_BUSDMA
struct usb2_page *page_start;
+#endif
struct usb2_dma_parent_tag *tag_parent; /* always set */
void *buffer; /* virtual buffer pointer */
-#ifdef __NetBSD__
+#if USB_HAVE_BUSDMA && defined(_NetBSD__)
int n_seg;
#endif
+#if USB_HAVE_BUSDMA
uint32_t page_offset_buf;
uint32_t page_offset_end;
uint8_t isread:1; /* set if we are currently reading
* from the memory. Else write. */
uint8_t ismultiseg:1; /* set if we can have multiple
* segments */
+#endif
};
/*
* The following structure describes the parent USB DMA tag.
*/
struct usb2_dma_parent_tag {
-#ifdef __FreeBSD__
+#if USB_HAVE_BUSDMA && defined(__FreeBSD__)
struct cv cv[1]; /* internal condition variable */
#endif
-
+#if USB_HAVE_BUSDMA
bus_dma_tag_t tag; /* always set */
struct mtx *mtx; /* private mutex, always set */
- struct usb2_xfer_root *info; /* used by the callback function */
usb2_dma_callback_t *func; /* load complete callback function */
struct usb2_dma_tag *utag_first;/* pointer to first USB DMA tag */
-
uint8_t dma_error; /* set if DMA load operation failed */
uint8_t dma_bits; /* number of DMA address lines */
uint8_t utag_max; /* number of USB DMA tags */
+#endif
};
/*
* The following structure describes an USB DMA tag.
*/
struct usb2_dma_tag {
-#ifdef __NetBSD__
+#if USB_HAVE_BUSDMA && defined(__NetBSD__)
bus_dma_segment_t *p_seg;
#endif
+#if USB_HAVE_BUSDMA
struct usb2_dma_parent_tag *tag_parent;
bus_dma_tag_t tag;
uint32_t align;
uint32_t size;
-#ifdef __NetBSD__
+#endif
+#if USB_HAVE_BUSDMA && defined(__NetBSD__)
uint32_t n_seg;
#endif
};
@@ -168,8 +177,7 @@ int usb2_copy_out_user(struct usb2_page_cache *cache, uint32_t offset,
void *ptr, uint32_t len);
void usb2_dma_tag_setup(struct usb2_dma_parent_tag *udpt,
struct usb2_dma_tag *udt, bus_dma_tag_t dmat, struct mtx *mtx,
- usb2_dma_callback_t *func, struct usb2_xfer_root *info,
- uint8_t ndmabits, uint8_t nudt);
+ usb2_dma_callback_t *func, uint8_t ndmabits, uint8_t nudt);
void usb2_dma_tag_unsetup(struct usb2_dma_parent_tag *udpt);
void usb2_get_page(struct usb2_page_cache *pc, uint32_t offset,
struct usb2_page_search *res);
OpenPOWER on IntegriCloud