Go to main content

man pages section 9: DDI and DKI Kernel Functions

Exit Print View

Updated: July 2017
 
 

usb_clr_feature(9F)

Name

usb_clr_feature - Clear feature of USB device, interface or endpoint

Synopsis

#include <sys/usb/usba.h>

int usb_clr_feature(dev_info_t *
dip, 
     uint_t request_type, uint_t
 feature,
     uint_t which, usb_flags_t
 flags, 
     void (*callback) (usb_pipe_handle_t 
pipe_handle,
     usb_opaque_t callback_arg, 
int rval, usb_cb_flags_t 
flags), 
     usb_opaque_t callback_arg);

Interface Level

Solaris DDI specific (Solaris DDI)

Parameters

dip

Pointer to the device's dev_info structure.

pipe_handle

Pipe handle to device, device interface or endpoint.

request_type

bmRequestType to be used. One of the following:

USB_DEV_REQ_RCPT_DEV - Clear feature on device.

USB_DEV_REQ_RCPT_IF - Clear feature on interface.

USB_DEV_REQ_RCPT_EP - Clear feature on endpoint.

feature

Feature to be cleared. Can be any device-defined device-, interface-, or endpoint-specific feature, including the following which are defined in the USB 2.0 specification:

USB_EP_HALT - Clear a HALT on an endpoint.

USB_DEV_REMOTE_WAKEUP - Clear REMOTE_WAKEUP on a device.

USB_DEV_TEST_MODE - Clear TEST_MODE on a device.

which

Device, interface or endpoint on which to clear the feature. One of:

  • Interface number, for interfaces.
  • Endpoint number, for endpoints.
  • 0 for devices.
flags

USB_FLAGS_SLEEP is the only flag recognized. Wait for completion and do not call callback.

callback

Callback handler to notify of asynchronous completion.

callback_arg

Second argument passed to callback handler.

Description

The usb_clr_feature() function clears a specific feature of a device, interface or endpoint. This function always blocks and waits for resources if not available, regardless of the flags argument.

This call blocks for completion if USB_FLAGS_SLEEP is set in flags. It returns immediately and calls the callback upon completion if USB_FLAGS_SLEEP is not set.

Return Values

USB_SUCCESS

Feature was successfully cleared.

USB_INVALID_ARGS

dip argument is NULL.

USB_INVALID_PIPE

pipe_handle argument is NULL

USB_INVALID_CONTEXT

Called from interrupt context with USB_FLAGS_SLEEP flag set.

USB_FAILURE

Clearing of feature was unsuccessful.

Context

May always be called from user or kernel context. May be called from interrupt context only if USB_FLAGS_SLEEP is not set in flags.

If the USB_CB_ASYNC_REQ_FAILED bit is clear in usb_cb_flags_t, the callback, if supplied, can block because it is executing in kernel context. Otherwise the callback cannot block. Please see usb_callback_flags(9S) for more information on callbacks.

Examples


if (usb_clr_feature(dip, pipe_handle, USB_DEV_REQ_RCPT_EP,
       USB_EP_HALT, data_endpoint_num, 0) == USB_FAILURE) {
           cmn_err (CE_WARN,
               "%s%d: Error clearing halt condition on data endpoint %d.",
               ddi_driver_name(dip), ddi_get_instance(dip),
               data_endpoint_num);
   }
                

Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Architecture
PCI-based systems
Interface Stability
Committed
Availability
system/io/usb

See Also

attributes(5), usb_get_status(9F), usb_pipe_reset(9F), usb_pipe_get_state(9F), usb_callback_flags(9S)