Provided by: linux-doc-2.6.15_2.6.15-23.39_all bug

NAME

       struct usb_gadget - represents a usb slave device

SYNOPSIS

       struct usb_gadget {
         const struct usb_gadget_ops * ops;
         struct usb_ep * ep0;
         struct list_head ep_list;
         enum usb_device_speed speed;
         unsigned is_dualspeed:1;
         unsigned is_otg:1;
         unsigned is_a_peripheral:1;
         unsigned b_hnp_enable:1;
         unsigned a_hnp_support:1;
         unsigned a_alt_hnp_support:1;
         const char * name;
         struct device dev;
       };

MEMBERS

       ops    Function pointers used to access hardware-specific operations.

       ep0    Endpoint  zero, used when reading or writing responses to driver
              setup requests

       ep_list
              List of other endpoints supported by the device.

       speed  Speed of current connection to USB host.

       is_dualspeed
              True if  the  controller  supports  both  high  and  full  speed
              operation. If it does, the gadget driver must also support both.

       is_otg True if the USB device port uses a Mini-AB  jack,  so  that  the
              gadget driver must provide a USB OTG descriptor.

       is_a_peripheral
              False  unless  is_otg,  the  ‘‘A’’  end of a USB cable is in the
              Mini-AB jack, and HNP has been used to switch roles so that  the
              ‘‘A’’ device currently acts as A-Peripheral, not A-Host.

       b_hnp_enable
              OTG  device feature flag, indicating that the A-Host enabled HNP
              support.

       a_hnp_support
              OTG device feature flag, indicating that the A-Host supports HNP
              at this port.

       a_alt_hnp_support
              OTG  device  feature  flag,  indicating  that  the  A-Host  only
              supports HNP on a different root port.

       name   Identifies the controller hardware type. Used in diagnostics and
              sometimes configuration.

       dev    Driver model state for this abstract device.

DESCRIPTION

       Gadgets  have  a  mostly-portable ‘‘gadget driver’’ implementing device
       functions, handling  all  usb  configurations  and  interfaces.  Gadget
       drivers talk to hardware-specific code indirectly, through ops vectors.
       That insulates the gadget driver from hardware  details,  and  packages
       the  hardware  endpoints through generic i/o queues. The ‘‘usb_gadget’’
       and ‘‘usb_ep’’ interfaces provide that insulation from the hardware.

       Except for the driver data, all fields in this structure are  read-only
       to  the gadget driver. That driver data is part of the ‘‘driver model’’
       infrastructure in 2.6 (and later) kernels, and for earlier  systems  is
       grouped  in  a  similar  structure  that’s not known to the rest of the
       kernel.

       Values of the three OTG device feature flags  are  updated  before  the
       setup  call  corresponding  to  USB_REQ_SET_CONFIGURATION,  and  before
       driver suspend calls. They are valid only when  is_otg,  and  when  the
       device is acting as a B-Peripheral (so is_a_peripheral is false).

AUTHOR

       David Brownell <dbrownell@users.sourceforge.net>.