usb_print_descr_tree man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

usb_get_dev_data(9F)	 Kernel Functions for Drivers	  usb_get_dev_data(9F)

NAME
       usb_get_dev_data,	usb_free_dev_data,	  usb_free_descr_tree,
       usb_print_descr_tree - Retrieve device configuration information

SYNOPSIS
       #include <sys/usb/usba.h>

       int usb_get_dev_data(dev_info_t *dip, usb_client_dev_data_t **dev_data,
	    usb_reg_parse_lvl_t parse_level, usb_flags_t flags);

       void usb_free_dev_data(dev_info_t *dip, usb_client_dev_data_t *dev_data);

       void usb_free_descr_tree(dev_info_t *dip, usb_client_dev_data_t *dev_data);

       int usb_print_descr_tree(dev_info_t *dip, usb_client_dev_data_t *dev_data);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI)

PARAMETERS
       For usb_get_dev_data():

       dip	      Pointer to device's dev_info structure.

       dev_data	      Address in which pointer to info is returned.

       parse_level    Portion of device represented  in	 the  tree  of	parsed
		      descriptors.  See below for possible usb_reg_parse_lvl_t
		      values and explanations.

       flags	      Not used.

       For usb_free_dev_data():

       dip	   Pointer to device's dev_info structure.

       dev_data	   Pointer to usb_client_dev_data_t to be freed.

       For usb_free_descr_tree():

       dip	   Pointer to device's dev_info structure.

       dev_data	   Pointer to usb_client_dev_data_t containing the  descriptor
		   tree to free.

       For usb_print_descr_tree():

       dip	   Pointer to device's dev_info structure.

       dev_data	   Pointer  to usb_client_dev_data_t containing the descriptor
		   tree to display on-screen.

DESCRIPTION
       The usb_get_dev_data() function interrogates a device and  returns  its
       configuration  information  in  a usb_client_dev_data_t structure. Most
       USBA   functions	  require   information	   which    comes    from    a
       usb_client_dev_data_t, and all other functions in this man page operate
       on this structure. Please see usb_client_dev_data(9S) for a  full  con‐
       tent   description.   Pass   the	  usb_client_dev_data_t	 structure  to
       usb_client_detach(9F) to completely deallocate it.

       A  descriptor  tree  is	included  in  the  information	returned.  The
       usb_reg_parse_lvl_t  type  represents  the  extent  of the device to be
       represented by the returned tree (2nd arg to usb_get_dev_data) or  what
       is  actually represented in the returned tree (dev_parse_level field of
       the returned usb_client_dev_data_t). It has the following possible val‐
       ues:

       USB_PARSE_LVL_NONE    Build  no tree. dev_n_cfg	returns 0, dev_cfg and
			     dev_curr_cfg   are	 returned   NULL,   and	   the
			     dev_curr_xxx fields are invalid.

       USB_PARSE_LVL_IF	     If	 configuration number and interface properties
			     are set (as when different interfaces are	viewed
			     by	 the  OS as different device instances), parse
			     configured	 interface  only.  If  an  OS	device
			     instance  is set up to represent an entire physi‐
			     cal   device,   USB_PARSE_LVL_IF	 works	  like
			     USB_PARSE_LVL_ALL.

       USB_PARSE_LVL_CFG     Parse  entire  configuration of configured inter‐
			     face only. Behaves similarly to USB_PARSE_LVL_IF,
			     except that entire configuration is returned.

       USB_PARSE_LVL_ALL     Parse  entire  device  (all configurations), even
			     when driver is bound to a single interface	 of  a
			     single configuration.

       The usb_free_dev_data() function undoes what usb_get_dev_data() set up.
       It releases memory for all strings, descriptors, and trees  set	up  by
       usb_get_dev_data().

       The  usb_free_descr_tree()  function  frees  the descriptor tree of its
       usb_client_dev_data_t argument, while leaving the rest of the  informa‐
       tion  intact.  The  intent  is for drivers to free memory after copying
       needed descriptor information from the tree. Upon return, the following
       usb_client_dev_data_t fields  are modified as follows: dev_cfg is NULL,
       dev_n_cfg  is zero and dev_parse_level	is  USB_PARSE_LVL_NONE.	 Addi‐
       tionally, dev_curr_cfg is NULL and dev_curr_if is invalid.

       The  usb_print_descr_tree()  function  is an easy-to-use diagnostic aid
       which dumps the descriptor tree to the screen when the system  is  ver‐
       bose  booted (boot -v). Output is spaced with blank lines for readabil‐
       ity and provides you with an on-screen look at what  a  device  has  to
       offer.

RETURN VALUES
       For usb_get_dev_data():

       USB_SUCCESS	      Registration is successful.

       USB_INVALID_ARGS	      dip or dev_data is NULL. parse_level is invalid.

       USB_INVALID_CONTEXT    Called from interrupt context.

       USB_INVALID_VERSION    usb_client_attach(9F) was not called first.

       USB_FAILURE	      Bad descriptor info or other internal error.

       For usb_free_dev_data(): None

       For  usb_free_descr_tree(): None, but no operation occurs if dip and/or
       dev_data are NULL.

       For usb_print_descr_tree():

       USB_SUCCESS	      Descriptor tree dump is successful.

       USB_INVALID_ARGS	      dev_data or dip are NULL.

       USB_INVALID_CONTEXT    Called from interrupt context.

       USB_FAILURE	      Other error.

CONTEXT
       The usb_get_dev_data()  and  usb_print_descr_tree()  functions  may  be
       called from user or kernel context.

       The  usb_free_dev_data()	 and  usb_free_descr_tree()  functions	may be
       called from user, kernel or interrupt context.

EXAMPLES
	 In this example, assume a device has the configuration shown
	 below, and the endpoint of config 2, iface 1, alt 1
	 which supports intr IN transfers needs to be found.
	 Config 2, iface 1 is the "default" config/iface for the
	 current OS device node.

	       config 1
		   iface 0
		       endpt 0
	       config 2
		   iface 0
		   iface 1
		       alt 0
			   endpt 0
			       cv 0
		       alt 1
			   endpt 0
			   endpt 1
			       cv 0
			   endpt 2
		       alt 2
			   endpt 0
			       cv 0

	       usb_client_dev_data_t *dev_data;
	       usb_ep_descr_t ep_descr;
	       usb_ep_data_t *ep_tree_node;
	       uint8_t interface = 1;
	       uint8_t alternate = 1;
	       uint8_t first_ep_number = 0;

	       /*
		* We want default config/iface, so specify USB__PARSE_LVL_IF.
		* Default config will be returned as dev_cfg[0].
	       /
		 if (usb_get_dev_data(dip, &dev_data,
		   USB_PARSE_LVL_IF, 0) != USB_SUCCESS) {
		       cmn_err (CE_WARN,
			   "%s%d: Couldn't get USB configuration descr tree",
			   ddi_driver_name(dip), ddi_get_instance(dip));

		       return (USB_FAILURE);
	       }

	       ep_tree_node = usb_lookup_ep_data(dip, dev_data, interface,
		    alternate, first_ep_number, USB_EP_ATTR_INTR, USB_EP_DIR_IN);
	       if (ep_tree_node != NULL) {
		   ep_descr = ep_tree_node->ep_descr;
	       } else {
		       cmn_r (CE_WARN,
			   "%s%d: Device is missing intr-IN endpoint",
			   ddi_driver_name(dip), ddi_get_instance(dip));

		       usb_free_descr_tree(dip, &dev_data);

		       return (USB_FAILURE);
	       }

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

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Architecture		     │PCI-based systems		   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Interface Stability	     │Committed			   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Availability		     │driver/usb		   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       attributes(5),	     usb_client_attach(9F),	   usb_get_alt_if(9F),
       usb_get_cfg(9F),	   usb_get_string_descr(9F),   usb_lookup_ep_data(9F),
       usb_parse_data(9F),	  usb_pipe_open(9F),	    usb_cfg_descr(9S),
       usb_client_dev_data(9S),	      usb_ep_descr(9S),	     usb_if_descr(9S),
       usb_string_descr(9S)

SunOS 5.11			  5 Jan 2004		  usb_get_dev_data(9F)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net