Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Functions
asl.c File Reference
#include <linux/kernel.h>
#include <linux/gfp.h>
#include <linux/dma-mapping.h>
#include <linux/uwb/umc.h>
#include <linux/usb.h>
#include "../../wusbcore/wusbhc.h"
#include "whcd.h"

Go to the source code of this file.

Functions

void asl_start (struct whc *whc)
 
void asl_stop (struct whc *whc)
 
void asl_update (struct whc *whc, uint32_t wusbcmd)
 
void scan_async_work (struct work_struct *work)
 
int asl_urb_enqueue (struct whc *whc, struct urb *urb, gfp_t mem_flags)
 
int asl_urb_dequeue (struct whc *whc, struct urb *urb, int status)
 
void asl_qset_delete (struct whc *whc, struct whc_qset *qset)
 
int asl_init (struct whc *whc)
 
void asl_clean_up (struct whc *whc)
 

Function Documentation

void asl_clean_up ( struct whc whc)

asl_clean_up - free ASL resources

The ASL is stopped and empty except for the dummy qset.

Definition at line 380 of file asl.c.

int asl_init ( struct whc whc)

asl_init - initialize the asynchronous schedule list

A dummy qset with no qTDs is added to the ASL to simplify removing qsets (no need to stop the ASL when the last qset is removed).

Definition at line 361 of file asl.c.

void asl_qset_delete ( struct whc whc,
struct whc_qset qset 
)

asl_qset_delete - delete a qset from the ASL

Definition at line 348 of file asl.c.

void asl_start ( struct whc whc)

Definition at line 145 of file asl.c.

void asl_stop ( struct whc whc)

Definition at line 159 of file asl.c.

void asl_update ( struct whc whc,
uint32_t  wusbcmd 
)

asl_update - request an ASL update and wait for the hardware to be synced : the WHCI HC : WUSBCMD value to start the update.

If the WUSB HC is inactive (i.e., the ASL is stopped) then the update must be skipped as the hardware may not respond to update requests.

Definition at line 176 of file asl.c.

int asl_urb_dequeue ( struct whc whc,
struct urb urb,
int  status 
)

asl_urb_dequeue - remove an URB (qset) from the async list. : the WHCI host controller : the URB to dequeue : the current status of the URB

URBs that do yet have qTDs can simply be removed from the software queue, otherwise the qset must be removed from the ASL so the qTDs can be removed.

Definition at line 308 of file asl.c.

int asl_urb_enqueue ( struct whc whc,
struct urb urb,
gfp_t  mem_flags 
)

asl_urb_enqueue - queue an URB onto the asynchronous list (ASL). : the WHCI host controller : the URB to enqueue : flags for any memory allocations

The qset for the endpoint is obtained and the urb queued on to it.

Work is scheduled to update the hardware's view of the ASL.

Definition at line 265 of file asl.c.

void scan_async_work ( struct work_struct work)

scan_async_work - scan the ASL for qsets to process.

Process each qset in the ASL in turn and then signal the WHC that the ASL has been updated.

Then start, stop or update the asynchronous schedule as required.

Definition at line 202 of file asl.c.