Linux Kernel
3.7.1
|
#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) |
#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 |
Definition at line 627 of file aic94xx_scb.c.
#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 |
Definition at line 50 of file aic94xx_scb.c.
#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.
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.
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.
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.