svn commit: r235004 - stable/9/lib/libusb
Hans Petter Selasky
hselasky at FreeBSD.org
Fri May 4 15:27:18 UTC 2012
Author: hselasky
Date: Fri May 4 15:27:18 2012
New Revision: 235004
URL: http://svn.freebsd.org/changeset/base/235004
Log:
MFC r233667, r234687, r234491, r234193, r233424:
Fix some compile warnings.
Fix some mdoc issues.
Add missing LibUSB 1.0 API function.
Modified:
stable/9/lib/libusb/Makefile
stable/9/lib/libusb/libusb.3
stable/9/lib/libusb/libusb.h
stable/9/lib/libusb/libusb10.c
stable/9/lib/libusb/libusb10_desc.c
stable/9/lib/libusb/libusb10_io.c
stable/9/lib/libusb/libusb20.3
stable/9/lib/libusb/libusb20.c
stable/9/lib/libusb/libusb20_desc.c
stable/9/lib/libusb/libusb20_ugen20.c
Directory Properties:
stable/9/lib/libusb/ (props changed)
Modified: stable/9/lib/libusb/Makefile
==============================================================================
--- stable/9/lib/libusb/Makefile Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/Makefile Fri May 4 15:27:18 2012 (r235004)
@@ -48,6 +48,7 @@ MLINKS += libusb.3 libusb_get_bus_number
MLINKS += libusb.3 libusb_get_device_address.3
MLINKS += libusb.3 libusb_get_device_speed.3
MLINKS += libusb.3 libusb_get_max_packet_size.3
+MLINKS += libusb.3 libusb_get_max_iso_packet_size.3
MLINKS += libusb.3 libusb_ref_device.3
MLINKS += libusb.3 libusb_unref_device.3
MLINKS += libusb.3 libusb_open.3
@@ -69,7 +70,7 @@ MLINKS += libusb.3 libusb_detach_kernel_
MLINKS += libusb.3 libusb_detach_kernel_driver_np.3
MLINKS += libusb.3 libusb_attach_kernel_driver.3
MLINKS += libusb.3 libusb_get_device_descriptor.3
-MLINKS += libusb.3 libsub_get_active_config_descriptor.3
+MLINKS += libusb.3 libusb_get_active_config_descriptor.3
MLINKS += libusb.3 libusb_get_config_descriptor.3
MLINKS += libusb.3 libusb_get_config_descriptor_by_value.3
MLINKS += libusb.3 libusb_free_config_descriptor.3
Modified: stable/9/lib/libusb/libusb.3
==============================================================================
--- stable/9/lib/libusb/libusb.3 Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/libusb.3 Fri May 4 15:27:18 2012 (r235004)
@@ -26,7 +26,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 25, 2012
+.Dd April 12, 2012
.Dt LIBUSB 3
.Os
.Sh NAME
@@ -43,7 +43,6 @@ The
library contains interfaces for directly managing a usb device.
The current implementation supports v1.0 of the libusb API.
.Sh LIBRARY INITIALISATION / DEINITIALISATION
-.Pp
.Ft int
.Fn libusb_init libusb_context **ctx
This function initialises libusb.
@@ -119,6 +118,12 @@ LIBUSB_SPEED_UNKNOWN is returned in case
Returns the wMaxPacketSize value on success, LIBUSB_ERROR_NOT_FOUND if the
endpoint does not exist and LIBUSB_ERROR_OTHERS on other failure.
.Pp
+.Ft int
+.Fn libusb_get_max_iso_packet_size "libusb_device *dev" "unsigned char endpoint"
+Returns the packet size multiplied by the packet multiplier on success,
+LIBUSB_ERROR_NOT_FOUND if the endpoint does not exist and
+LIBUSB_ERROR_OTHERS on other failure.
+.Pp
.Ft libusb_device *
.Fn libusb_ref_device "libusb_device *dev"
Increment the reference counter of the device
@@ -270,9 +275,7 @@ LIBUSB_ERROR_NO_DEVICE
if the device has been disconnected, LIBUSB_ERROR_BUSY if the driver cannot be
attached because the interface is claimed by a program or driver and a
LIBUSB_ERROR code on failure.
-.Pp
.Sh USB DESCRIPTORS
-.Pp
.Ft int
.Fn libusb_get_device_descriptor "libusb_device *dev" "libusb_device_descriptor *desc"
Get the USB device descriptor for the device
@@ -282,7 +285,7 @@ Returns 0 on success and a LIBUSB_ERROR
failure.
.Pp
.Ft int
-.Fn libsub_get_active_config_descriptor "libusb_device *dev" "struct libusb_config_descriptor **config"
+.Fn libusb_get_active_config_descriptor "libusb_device *dev" "struct libusb_config_descriptor **config"
Get the USB configuration descriptor for the active configuration.
Returns 0 on
success, LIBUSB_ERROR_NOT_FOUND if the device is in
@@ -349,9 +352,7 @@ libusb_free_bos_descriptor function.
.Ft void
.Fn libusb_free_bos_descriptor "libusb_bos_descriptor *bos"
This function is NULL safe and frees a parsed BOS descriptor.
-.Pp
.Sh USB ASYNCHRONOUS I/O
-.Pp
.Ft struct libusb_transfer *
.Fn libusb_alloc_transfer "int iso_packets"
Allocate a transfer with the number of isochronous packet descriptors
@@ -374,9 +375,7 @@ LIBUSB_ERROR code on other failure.
.Fn libusb_cancel_transfer "struct libusb_transfer *tr"
This function asynchronously cancels a transfer.
Returns 0 on success and a LIBUSB_ERROR code on failure.
-.Pp
.Sh USB SYNCHRONOUS I/O
-.Pp
.Ft int
.Fn libusb_control_transfer "libusb_device_handle *devh" "uint8_t bmRequestType" "uint8_t bRequest" "uint16_t wValue" "uint16_t wIndex" "unsigned char *data" "uint16_t wLength" "unsigned int timeout"
Perform a USB control transfer.
@@ -411,9 +410,7 @@ if the transfer timed out, LIBUSB_ERROR_
supported, LIBUSB_ERROR_OVERFLOW if the device offered more data,
LIBUSB_ERROR_NO_DEVICE if the device has been disconnected and
a LIBUSB_ERROR code on other failure.
-.Pp
.Sh USB EVENTS
-.Pp
.Ft int
.Fn libusb_try_lock_events "libusb_context *ctx"
Try to acquire the event handling lock.
@@ -429,7 +426,7 @@ This function is blocking.
Release the event handling lock.
This will wake up any thread blocked
on
-.B libusb_wait_for_event() .
+.Fn libusb_wait_for_event .
.Pp
.Ft int
.Fn libusb_event_handling_ok "libusb_context *ctx"
@@ -506,7 +503,6 @@ Retrive a list of file descriptors that
libusb event sources.
Returns a NULL-terminated list on success or NULL on failure.
.Sh LIBUSB VERSION 0.1 COMPATIBILITY
-.Pp
The library is also compliant with LibUSB version 0.1.12.
.Pp
.Fn usb_open
Modified: stable/9/lib/libusb/libusb.h
==============================================================================
--- stable/9/lib/libusb/libusb.h Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/libusb.h Fri May 4 15:27:18 2012 (r235004)
@@ -371,6 +371,7 @@ uint8_t libusb_get_device_address(libusb
enum libusb_speed libusb_get_device_speed(libusb_device * dev);
int libusb_clear_halt(libusb_device_handle *devh, uint8_t endpoint);
int libusb_get_max_packet_size(libusb_device * dev, uint8_t endpoint);
+int libusb_get_max_iso_packet_size(libusb_device * dev, uint8_t endpoint);
libusb_device *libusb_ref_device(libusb_device * dev);
void libusb_unref_device(libusb_device * dev);
int libusb_open(libusb_device * dev, libusb_device_handle ** devh);
Modified: stable/9/lib/libusb/libusb10.c
==============================================================================
--- stable/9/lib/libusb/libusb10.c Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/libusb10.c Fri May 4 15:27:18 2012 (r235004)
@@ -331,6 +331,30 @@ out:
return (ret);
}
+int
+libusb_get_max_iso_packet_size(libusb_device *dev, uint8_t endpoint)
+{
+ int multiplier;
+ int ret;
+
+ ret = libusb_get_max_packet_size(dev, endpoint);
+
+ switch (libusb20_dev_get_speed(dev->os_priv)) {
+ case LIBUSB20_SPEED_LOW:
+ case LIBUSB20_SPEED_FULL:
+ break;
+ default:
+ if (ret > -1) {
+ multiplier = (1 + ((ret >> 11) & 3));
+ if (multiplier > 3)
+ multiplier = 3;
+ ret = (ret & 0x7FF) * multiplier;
+ }
+ break;
+ }
+ return (ret);
+}
+
libusb_device *
libusb_ref_device(libusb_device *dev)
{
@@ -627,17 +651,17 @@ libusb_set_interface_alt_setting(struct
static struct libusb20_transfer *
libusb10_get_transfer(struct libusb20_device *pdev,
- uint8_t endpoint, uint8_t index)
+ uint8_t endpoint, uint8_t xfer_index)
{
- index &= 1; /* double buffering */
+ xfer_index &= 1; /* double buffering */
- index |= (endpoint & LIBUSB20_ENDPOINT_ADDRESS_MASK) * 4;
+ xfer_index |= (endpoint & LIBUSB20_ENDPOINT_ADDRESS_MASK) * 4;
if (endpoint & LIBUSB20_ENDPOINT_DIR_MASK) {
/* this is an IN endpoint */
- index |= 2;
+ xfer_index |= 2;
}
- return (libusb20_tr_get_pointer(pdev, index));
+ return (libusb20_tr_get_pointer(pdev, xfer_index));
}
int
Modified: stable/9/lib/libusb/libusb10_desc.c
==============================================================================
--- stable/9/lib/libusb/libusb10_desc.c Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/libusb10_desc.c Fri May 4 15:27:18 2012 (r235004)
@@ -390,8 +390,8 @@ libusb_parse_bos_descriptor(const void *
struct libusb_bos_descriptor **bos)
{
struct libusb_bos_descriptor *ptr;
- struct libusb_usb_2_0_device_capability_descriptor *dcap_20;
- struct libusb_ss_usb_device_capability_descriptor *ss_cap;
+ struct libusb_usb_2_0_device_capability_descriptor *dcap_20 = NULL;
+ struct libusb_ss_usb_device_capability_descriptor *ss_cap = NULL;
if (buf == NULL || bos == NULL || len < 1)
return (LIBUSB_ERROR_INVALID_PARAM);
@@ -438,7 +438,7 @@ libusb_parse_bos_descriptor(const void *
dtype == LIBUSB_DT_DEVICE_CAPABILITY) {
switch (((const uint8_t *)buf)[2]) {
case LIBUSB_USB_2_0_EXTENSION_DEVICE_CAPABILITY:
- if (ptr->usb_2_0_ext_cap != NULL)
+ if (ptr->usb_2_0_ext_cap != NULL || dcap_20 == NULL)
break;
if (dlen < LIBUSB_USB_2_0_EXTENSION_DEVICE_CAPABILITY_SIZE)
break;
@@ -455,7 +455,7 @@ libusb_parse_bos_descriptor(const void *
break;
case LIBUSB_SS_USB_DEVICE_CAPABILITY:
- if (ptr->ss_usb_cap != NULL)
+ if (ptr->ss_usb_cap != NULL || ss_cap == NULL)
break;
if (dlen < LIBUSB_SS_USB_DEVICE_CAPABILITY_SIZE)
break;
Modified: stable/9/lib/libusb/libusb10_io.c
==============================================================================
--- stable/9/lib/libusb/libusb10_io.c Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/libusb10_io.c Fri May 4 15:27:18 2012 (r235004)
@@ -481,7 +481,7 @@ libusb10_do_transfer(libusb_device_handl
{
libusb_context *ctx;
struct libusb_transfer *xfer;
- volatile int complet;
+ int done;
int ret;
if (devh == NULL)
@@ -502,15 +502,15 @@ libusb10_do_transfer(libusb_device_handl
xfer->timeout = timeout;
xfer->buffer = data;
xfer->length = length;
- xfer->user_data = (void *)&complet;
+ xfer->user_data = (void *)&done;
xfer->callback = libusb10_do_transfer_cb;
- complet = 0;
+ done = 0;
if ((ret = libusb_submit_transfer(xfer)) < 0) {
libusb_free_transfer(xfer);
return (ret);
}
- while (complet == 0) {
+ while (done == 0) {
if ((ret = libusb_handle_events(ctx)) < 0) {
libusb_cancel_transfer(xfer);
usleep(1000); /* nice it */
@@ -581,7 +581,7 @@ libusb_interrupt_transfer(libusb_device_
}
uint8_t *
-libusb_get_iso_packet_buffer(struct libusb_transfer *transfer, uint32_t index)
+libusb_get_iso_packet_buffer(struct libusb_transfer *transfer, uint32_t off)
{
uint8_t *ptr;
uint32_t n;
@@ -589,35 +589,35 @@ libusb_get_iso_packet_buffer(struct libu
if (transfer->num_iso_packets < 0)
return (NULL);
- if (index >= (uint32_t)transfer->num_iso_packets)
+ if (off >= (uint32_t)transfer->num_iso_packets)
return (NULL);
ptr = transfer->buffer;
if (ptr == NULL)
return (NULL);
- for (n = 0; n != index; n++) {
+ for (n = 0; n != off; n++) {
ptr += transfer->iso_packet_desc[n].length;
}
return (ptr);
}
uint8_t *
-libusb_get_iso_packet_buffer_simple(struct libusb_transfer *transfer, uint32_t index)
+libusb_get_iso_packet_buffer_simple(struct libusb_transfer *transfer, uint32_t off)
{
uint8_t *ptr;
if (transfer->num_iso_packets < 0)
return (NULL);
- if (index >= (uint32_t)transfer->num_iso_packets)
+ if (off >= (uint32_t)transfer->num_iso_packets)
return (NULL);
ptr = transfer->buffer;
if (ptr == NULL)
return (NULL);
- ptr += transfer->iso_packet_desc[0].length * index;
+ ptr += transfer->iso_packet_desc[0].length * off;
return (ptr);
}
Modified: stable/9/lib/libusb/libusb20.3
==============================================================================
--- stable/9/lib/libusb/libusb20.3 Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/libusb20.3 Fri May 4 15:27:18 2012 (r235004)
@@ -235,7 +235,6 @@ applications should consider using
.
.Sh USB TRANSFER OPERATIONS
.
-.Pp
.
.Fn libusb20_tr_close
will release all kernel resources associated with an USB
@@ -534,7 +533,6 @@ with an USB transfer.
.
.Sh USB DEVICE OPERATIONS
.
-.Pp
.
.Fn libusb20_dev_get_backend_name
returns a zero terminated string describing the backend used.
@@ -1000,7 +998,6 @@ The buffer pointer cannot be NULL.
.
.
.Sh USB DEBUGGING
-.Pp
.Ft const char *
.Fn libusb20_strerror "int code"
Get the ASCII representation of the error given by the
Modified: stable/9/lib/libusb/libusb20.c
==============================================================================
--- stable/9/lib/libusb/libusb20.c Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/libusb20.c Fri May 4 15:27:18 2012 (r235004)
@@ -948,9 +948,8 @@ libusb20_dev_get_config_index(struct lib
}
error = pdev->methods->get_config_index(pdev, &cfg_index);
- if (error) {
- cfg_index = 0 - 1; /* current config index */
- }
+ if (error)
+ cfg_index = 0xFF; /* current config index */
if (do_close) {
if (libusb20_dev_close(pdev)) {
/* ignore */
Modified: stable/9/lib/libusb/libusb20_desc.c
==============================================================================
--- stable/9/lib/libusb/libusb20_desc.c Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/libusb20_desc.c Fri May 4 15:27:18 2012 (r235004)
@@ -69,7 +69,7 @@ libusb20_parse_config_desc(const void *c
uint16_t niface_no_alt;
uint16_t niface;
uint16_t nendpoint;
- uint8_t iface_no;
+ uint16_t iface_no;
ptr = config_desc;
if (ptr[1] != LIBUSB20_DT_CONFIG) {
@@ -82,7 +82,7 @@ libusb20_parse_config_desc(const void *c
niface_no_alt = 0;
nendpoint = 0;
niface = 0;
- iface_no = 0 - 1;
+ iface_no = 0xFFFF;
ptr = NULL;
/* get "wTotalLength" and setup "pcdesc" */
@@ -155,7 +155,7 @@ libusb20_parse_config_desc(const void *c
/* reset states */
niface = 0;
- iface_no = 0 - 1;
+ iface_no = 0xFFFF;
ptr = NULL;
lub_interface--;
lub_endpoint--;
@@ -450,7 +450,7 @@ libusb20_me_encode(void *ptr, uint16_t l
* and should be
* correct:
*/
- ps->len = 0 - 1;
+ ps->len = 0xFFFF;
}
src_len = libusb20_me_get_1(pd, 0);
src_ptr = LIBUSB20_ADD_BYTES(ps->ptr, 1);
@@ -465,7 +465,7 @@ libusb20_me_encode(void *ptr, uint16_t l
case LIBUSB20_ME_IS_DECODED:
/* reserve 3 length bytes */
src_len = libusb20_me_encode(NULL,
- 0 - 1 - 3, ps->ptr);
+ 0xFFFF - 3, ps->ptr);
src_ptr = NULL;
break;
@@ -476,7 +476,7 @@ libusb20_me_encode(void *ptr, uint16_t l
}
if (src_len > 0xFE) {
- if (src_len > (uint16_t)(0 - 1 - 3))
+ if (src_len > (0xFFFF - 3))
/* overflow */
goto done;
@@ -516,7 +516,7 @@ libusb20_me_encode(void *ptr, uint16_t l
uint16_t dummy;
dummy = libusb20_me_encode(buf,
- 0 - 1 - 3, ps->ptr);
+ 0xFFFF - 3, ps->ptr);
} else {
bcopy(src_ptr, buf, src_len);
}
Modified: stable/9/lib/libusb/libusb20_ugen20.c
==============================================================================
--- stable/9/lib/libusb/libusb20_ugen20.c Fri May 4 15:18:00 2012 (r235003)
+++ stable/9/lib/libusb/libusb20_ugen20.c Fri May 4 15:27:18 2012 (r235004)
@@ -104,7 +104,7 @@ ugen20_path_convert_one(const char **pp)
temp += (*ptr - '0');
if (temp >= 1000000) {
/* catch overflow early */
- return (0 - 1);
+ return (0xFFFFFFFF);
}
ptr++;
}
More information about the svn-src-stable-9
mailing list