Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Fields
wahc Struct Reference

#include <wa-hc.h>

Data Fields

struct usb_device * usb_dev
struct usb_interfaceusb_iface
union {
   struct wusbhc *   wusb
   struct dwahc *   dwa
struct usb_endpoint_descriptordto_epd
struct usb_endpoint_descriptordti_epd
struct usb_wa_descriptorwa_descr
struct urbnep_urb
struct edc nep_edc
size_t nep_buffer_size
atomic_t notifs_queued
u16 rpipes
unsigned longrpipe_bm
spinlock_t rpipe_bm_lock
struct mutex rpipe_mutex
struct urbdti_urb
struct urbbuf_in_urb
struct edc dti_edc
struct wa_xfer_resultxfer_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

Detailed Description

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).

Definition at line 158 of file wa-hc.h.

Field Documentation

union { ... }
struct urb* buf_in_urb

Definition at line 184 of file wa-hc.h.

struct edc dti_edc

Definition at line 185 of file wa-hc.h.

Definition at line 168 of file wa-hc.h.

struct urb* dti_urb

Definition at line 183 of file wa-hc.h.

Definition at line 168 of file wa-hc.h.

struct dwahc* dwa

Definition at line 165 of file wa-hc.h.

void* nep_buffer

Definition at line 173 of file wa-hc.h.

size_t nep_buffer_size

Definition at line 174 of file wa-hc.h.

struct edc nep_edc

Definition at line 172 of file wa-hc.h.

struct urb* nep_urb

Definition at line 171 of file wa-hc.h.

atomic_t notifs_queued

Definition at line 176 of file wa-hc.h.

unsigned long* rpipe_bm

Definition at line 179 of file wa-hc.h.

spinlock_t rpipe_bm_lock

Definition at line 180 of file wa-hc.h.

struct mutex rpipe_mutex

Definition at line 181 of file wa-hc.h.

u16 rpipes

Definition at line 178 of file wa-hc.h.

Definition at line 189 of file wa-hc.h.

struct usb_device* usb_dev

Definition at line 159 of file wa-hc.h.

struct usb_interface* usb_iface

Definition at line 160 of file wa-hc.h.

Definition at line 169 of file wa-hc.h.

struct wusbhc* wusb

Definition at line 164 of file wa-hc.h.

struct list_head xfer_delayed_list

Definition at line 192 of file wa-hc.h.

atomic_t xfer_id_count

Definition at line 195 of file wa-hc.h.

struct list_head xfer_list

Definition at line 191 of file wa-hc.h.

spinlock_t xfer_list_lock

Definition at line 193 of file wa-hc.h.

struct wa_xfer_result* xfer_result

Definition at line 186 of file wa-hc.h.

size_t xfer_result_size

Definition at line 187 of file wa-hc.h.

struct work_struct xfer_work

Definition at line 194 of file wa-hc.h.

The documentation for this struct was generated from the following file: