Linux Kernel
3.7.1
|
#include <wa-hc.h>
Data Fields | |
struct usb_device * | usb_dev |
struct usb_interface * | usb_iface |
union { | |
struct wusbhc * wusb | |
struct dwahc * dwa | |
}; | |
struct usb_endpoint_descriptor * | dto_epd |
struct usb_endpoint_descriptor * | dti_epd |
struct usb_wa_descriptor * | wa_descr |
struct urb * | nep_urb |
struct edc | nep_edc |
void * | nep_buffer |
size_t | nep_buffer_size |
atomic_t | notifs_queued |
u16 | rpipes |
unsigned long * | rpipe_bm |
spinlock_t | rpipe_bm_lock |
struct mutex | rpipe_mutex |
struct urb * | dti_urb |
struct urb * | buf_in_urb |
struct edc | dti_edc |
struct wa_xfer_result * | xfer_result |
size_t | xfer_result_size |
s32 | status |
struct list_head | xfer_list |
struct list_head | xfer_delayed_list |
spinlock_t | xfer_list_lock |
struct work_struct | xfer_work |
atomic_t | xfer_id_count |
Instance of a HWA Host Controller
Except where a more specific lock/mutex applies or atomic, all fields protected by .
Can be accessed without locking because it is in the same area where the device descriptors were read, so it is guaranteed to exist umodified while the device exists.
Endianess has been converted to CPU's.
* can be accessed without locking as its processing is serialized; we submit a NEP URB and it comes to hwahc_nep_cb(), which won't issue another URB until it is done processing it.
:
List of active transfers to verify existence from a xfer id gotten from the xfer result message. Can't use urb->list because it goes by endpoint, and we don't know the endpoint at the time when we get the xfer result message. We can't really rely on the pointer (will have to change for 64 bits) as the xfer id is 32 bits.
: List of transfers that need to be started (with a workqueue, because they were submitted from an atomic context).
FIXME: this needs to be layered up: a wusbhc layer (for sharing comonalities with WHCI), a wa layer (for sharing comonalities with DWA-RC).
union { ... } |
struct usb_endpoint_descriptor * dti_epd |
struct usb_endpoint_descriptor* dto_epd |
spinlock_t rpipe_bm_lock |
struct usb_interface* usb_iface |
struct usb_wa_descriptor* wa_descr |
spinlock_t xfer_list_lock |
struct wa_xfer_result* xfer_result |
struct work_struct xfer_work |