Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
aic94xx_scb.c File Reference
#include <linux/gfp.h>
#include <scsi/scsi_host.h>
#include "aic94xx.h"
#include "aic94xx_reg.h"
#include "aic94xx_hwi.h"
#include "aic94xx_seq.h"
#include "aic94xx_dump.h"

Go to the source code of this file.

Macros

#define DL_PHY_MASK   7
 
#define BYTES_DMAED   0
 
#define PRIMITIVE_RECVD   0x08
 
#define PHY_EVENT   0x10
 
#define LINK_RESET_ERROR   0x18
 
#define TIMER_EVENT   0x20
 
#define REQ_TASK_ABORT   0xF0
 
#define REQ_DEVICE_RESET   0xF1
 
#define SIGNAL_NCQ_ERROR   0xF2
 
#define CLEAR_NCQ_ERROR   0xF3
 
#define PHY_EVENTS_STATUS
 
#define CONTROL_PHY_STATUS
 

Functions

void asd_invalidate_edb (struct asd_ascb *ascb, int edb_id)
 
int asd_init_post_escbs (struct asd_ha_struct *asd_ha)
 
void asd_build_control_phy (struct asd_ascb *ascb, int phy_id, u8 subfunc)
 
void asd_ascb_timedout (unsigned long data)
 
int asd_control_phy (struct asd_sas_phy *phy, enum phy_func func, void *arg)
 

Macro Definition Documentation

#define BYTES_DMAED   0

Definition at line 40 of file aic94xx_scb.c.

#define CLEAR_NCQ_ERROR   0xF3

Definition at line 48 of file aic94xx_scb.c.

#define CONTROL_PHY_STATUS
#define DL_PHY_MASK   7

Definition at line 39 of file aic94xx_scb.c.

#define LINK_RESET_ERROR   0x18

Definition at line 43 of file aic94xx_scb.c.

#define PHY_EVENT   0x10

Definition at line 42 of file aic94xx_scb.c.

#define PHY_EVENTS_STATUS
#define PRIMITIVE_RECVD   0x08

Definition at line 41 of file aic94xx_scb.c.

#define REQ_DEVICE_RESET   0xF1

Definition at line 46 of file aic94xx_scb.c.

#define REQ_TASK_ABORT   0xF0

Definition at line 45 of file aic94xx_scb.c.

#define SIGNAL_NCQ_ERROR   0xF2

Definition at line 47 of file aic94xx_scb.c.

#define TIMER_EVENT   0x20

Definition at line 44 of file aic94xx_scb.c.

Function Documentation

void asd_ascb_timedout ( unsigned long  data)

asd_ascb_timedout – called when a pending SCB's timer has expired : unsigned long, a pointer to the ascb in question

This is the default timeout function which does the most necessary. Upper layers can implement their own timeout function, say to free resources they have with this SCB, and then call this one at the end of their timeout function. To do this, one should initialize the ascb->timer.{function, data, expires} prior to calling the post function. The timer is started by the post function.

Definition at line 872 of file aic94xx_scb.c.

void asd_build_control_phy ( struct asd_ascb ascb,
int  phy_id,
u8  subfunc 
)

asd_build_control_phy – build a CONTROL PHY SCB : pointer to an ascb : phy id to control, integer : subfunction, what to actually to do the phy

This function builds a CONTROL PHY scb. No allocation of any kind is performed. is allocated with the list function. The caller can override the ascb->tasklet_complete to point to its own callback function. It must call asd_ascb_free() at its tasklet complete function. See the default implementation.

Definition at line 776 of file aic94xx_scb.c.

int asd_control_phy ( struct asd_sas_phy phy,
enum phy_func  func,
void arg 
)

Definition at line 899 of file aic94xx_scb.c.

int asd_init_post_escbs ( struct asd_ha_struct asd_ha)

Definition at line 613 of file aic94xx_scb.c.

void asd_invalidate_edb ( struct asd_ascb ascb,
int  edb_id 
)

asd_invalidate_edb – invalidate an EDB and if necessary post the ESCB : pointer to Empty SCB : index [0,6] to the empty data buffer which is to be invalidated

After an EDB has been invalidated, if all EDBs in this ESCB have been invalidated, the ESCB is posted back to the sequencer. Context is tasklet/IRQ.

Definition at line 382 of file aic94xx_scb.c.