Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Jun 2006 07:08:05 GMT
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 98775 for review
Message-ID:  <200606080708.k587853E059197@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=98775

Change 98775 by hselasky@hselasky_mini_itx on 2006/06/08 07:08:02

	Added more information about the new USB API to the README file.	

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/README#2 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/README#2 (text+ko) ====

@@ -99,9 +99,122 @@
 USB device driver examples: 
 
 /sys/dev/usb/ugen.c
+/sys/dev/usb/ulpt.c
+/sys/dev/usb/uhid.c
 
 http://www.turbocat.net/~hselasky/isdn4bsd/sources/src/sys/i4b/layer1/ihfc2/i4b_regdata.h
 http://www.turbocat.net/~hselasky/isdn4bsd/sources/src/sys/i4b/layer1/ihfc2/i4b_wibusb.h
 
---hselasky
+
+QUICK REFERENCE
+===============
+
+
+/*------------------------------------------------------------------------*
+ * usbd_status 
+ * usbd_transfer_setup(udev, iface_index, pxfer, setup_start,
+ *                     n_setup, priv_sc, priv_mtx, priv_func)
+ *------------------------------------------------------------------------*/
+
+- "udev" is a pointer to "struct usbd_device"
+
+- "iface_index" is the interface index number
+
+- "pxfer" is a pointer to an array of USB transfer pointers that are
+  initialized to NULL, and then pointed to the allocated DMA-able USB
+  transfers
+
+- "setup_start" is a pointer to an array of USB config structures
+
+- "n_setup" is a number telling the USB system how many USB transfers
+  should be setup
+
+- "priv_sc" is the private softc pointer, which will be used to
+  initialize "xfer->priv_sc"
+
+- "priv_mtx" is the private mutex protecting the transfer structure and
+  the softc. This pointer is used to initialize "xfer->priv_mtx".
+
+- "priv_func" is a pointer to a function that is called back when the USB
+  system is finished using the "priv_mtx" mutex.
+
+/*------------------------------------------------------------------------*
+ * void
+ * usbd_transfer_unsetup(pxfer, n_setup)
+ *------------------------------------------------------------------------*/
+
+- "pxfer" is a pointer to an array of USB transfer pointers, that may
+   be NULL, that should be freed by the USB system.
+
+- "n_setup" is a number telling the USB system how many USB transfers
+  should be unsetup
+
+/*------------------------------------------------------------------------*
+ * void
+ * usbd_transfer_start(xfer)
+ *------------------------------------------------------------------------*/
+
+- "xfer" is pointer to a USB transfer that should be started
+
+NOTE: this function must be called with "priv_mtx" locked
+
+/*------------------------------------------------------------------------*
+ * void
+ * usbd_transfer_stop(xfer)
+ *------------------------------------------------------------------------*/
+
+- "xfer" is a pointer to a USB transfer that should be stopped
+
+NOTE: this function must be called with "priv_mtx" locked
+
+NOTE: if the transfer was in progress, the callback will called with 
+      "xfer->error=USBD_CANCELLED", before this function returns
+
+/*------------------------------------------------------------------------*
+ * struct usbd_config {
+ *   type, endpoint, direction, interval, timeout, frames, index
+ *   flags, bufsize, callback
+ * };
+ *------------------------------------------------------------------------*/
+
+- The "type" field selects the USB pipe type. Valid values are:
+  UE_INTERRUPT, UE_CONTROL, UE_BULK, UE_ISOCHRONOUS. This field is
+  mandatory.
+
+- The "endpoint" field selects the USB endpoint number. A value of
+  0xFF or "-1" will select the first matching endpoint. This field is
+  mandatory.
+
+- The "direction" field selects the USB endpoint direction. A value of 0xFF
+  or "-1" will select the first matching endpoint. Else valid values
+  are: "UE_DIR_IN" and "UE_DIR_OUT". This field is mandatory.
+
+- The "interval" field selects the interrupt interval, for "type" = UE_INTERRUPT.
+  The "interval" is given in milliseconds. "0" selects the default
+  interrupt interval.
+
+- The "timeout" field, if non-zero, will set the transfer timeout, in
+  milliseconds.
+
+- The "frames" field sets the number of isochronous frames, for 
+  "type" = UE_ISOCHRONOUS.
+
+- The "index" field allows one to give a number, in case more
+  endpoints match the description, that selects which matching
+  "index" should be used.
+
+- The "flags" field allows one to set flags for the transfer. Valid flags are:
+  USBD_SYNCHRONOUS
+  USBD_FORCE_SHORT_XFER
+  USBD_SHORT_XFER_OK
+  USBD_CUSTOM_CLEARSTALL
+  USBD_USE_POLLING
+  USBD_SELF_DESTRUCT
+
+- The "bufsize" field sets the total pipe buffer size in bytes. This
+  field is mandatory.
+
+- The "callback" field sets the USB callback. This field is mandatory.
+
+--HPS
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200606080708.k587853E059197>