Linux Kernel
3.7.1
|
#include <linux/circ_buf.h>
#include <linux/device.h>
#include <scsi/sas.h>
#include "host.h"
#include "isci.h"
#include "port.h"
#include "probe_roms.h"
#include "remote_device.h"
#include "request.h"
#include "scu_completion_codes.h"
#include "scu_event_codes.h"
#include "registers.h"
#include "scu_remote_node_context.h"
#include "scu_task_context.h"
Go to the source code of this file.
Macros | |
#define | SCU_CONTEXT_RAM_INIT_STALL_TIME 200 |
#define | smu_max_ports(dcc_value) |
#define | smu_max_task_contexts(dcc_value) |
#define | smu_max_rncs(dcc_value) |
#define | SCIC_SDS_CONTROLLER_PHY_START_TIMEOUT 100 |
#define | SCIC_SDS_CONTROLLER_POWER_CONTROL_INTERVAL 500 |
#define | NORMALIZE_PUT_POINTER(x) ((x) & SMU_COMPLETION_QUEUE_PUT_POINTER_MASK) |
#define | NORMALIZE_EVENT_POINTER(x) |
#define | NORMALIZE_GET_POINTER(x) ((x) & SMU_COMPLETION_QUEUE_GET_POINTER_MASK) |
#define | NORMALIZE_GET_POINTER_CYCLE_BIT(x) ((SMU_CQGR_CYCLE_BIT & (x)) << (31 - SMU_COMPLETION_QUEUE_GET_CYCLE_BIT_SHIFT)) |
#define | COMPLETION_QUEUE_CYCLE_BIT(x) ((x) & 0x80000000) |
#define | INTERRUPT_COALESCE_TIMEOUT_BASE_RANGE_LOWER_BOUND_NS 853 |
#define | INTERRUPT_COALESCE_TIMEOUT_BASE_RANGE_UPPER_BOUND_NS 1280 |
#define | INTERRUPT_COALESCE_TIMEOUT_MAX_US 2700000 |
#define | INTERRUPT_COALESCE_NUMBER_MAX 256 |
#define | INTERRUPT_COALESCE_TIMEOUT_ENCODE_MIN 7 |
#define | INTERRUPT_COALESCE_TIMEOUT_ENCODE_MAX 28 |
#define | AFE_REGISTER_WRITE_DELAY 10 |
COMPLETION_QUEUE_CYCLE_BIT() -
This macro will return the cycle bit of the completion queue entry
#define INTERRUPT_COALESCE_TIMEOUT_BASE_RANGE_LOWER_BOUND_NS 853 |
#define INTERRUPT_COALESCE_TIMEOUT_BASE_RANGE_UPPER_BOUND_NS 1280 |
#define NORMALIZE_EVENT_POINTER | ( | x | ) |
This macro will normalize the completion queue event entry so its value can be used as an index.
#define NORMALIZE_GET_POINTER | ( | x | ) | ((x) & SMU_COMPLETION_QUEUE_GET_POINTER_MASK) |
#define NORMALIZE_GET_POINTER_CYCLE_BIT | ( | x | ) | ((SMU_CQGR_CYCLE_BIT & (x)) << (31 - SMU_COMPLETION_QUEUE_GET_CYCLE_BIT_SHIFT)) |
#define NORMALIZE_PUT_POINTER | ( | x | ) | ((x) & SMU_COMPLETION_QUEUE_PUT_POINTER_MASK) |
#define SCIC_SDS_CONTROLLER_POWER_CONTROL_INTERVAL 500 |
#define smu_max_ports | ( | dcc_value | ) |
#define smu_max_rncs | ( | dcc_value | ) |
#define smu_max_task_contexts | ( | dcc_value | ) |
enum cable_selections decode_cable_selection | ( | struct isci_host * | ihost, |
int | phy | ||
) |
irqreturn_t isci_error_isr | ( | int | vec, |
void * | data | ||
) |
enum sci_status isci_free_tag | ( | struct isci_host * | ihost, |
u16 | io_tag | ||
) |
isci_host_completion_routine() - This function is the delayed service routine that calls the sci core library's completion handler. It's scheduled as a tasklet from the interrupt service routine when interrupts in use, or set as the timeout function in polled mode. : This parameter specifies the ISCI host object
isci_host_deinit - shutdown frame reception and dma : host to take down
This is called in either the driver shutdown or the suspend path. In the shutdown case libsas went through port teardown and normal device removal (i.e. physical links stayed up to service scsi_device removal commands). In the suspend case we disable the hardware without notifying libsas of the link down events since we want libsas to remember the domain across the suspend/resume cycle
isci_host_init - (re-)initialize hardware and internal (private) state : host to init
Any public facing objects (like asd_sas_port, and asd_sas_phys), or one-time initialization objects like locks and waitqueues, are not touched (they are initialized in isci_host_alloc)
irqreturn_t isci_intx_isr | ( | int | vec, |
void * | data | ||
) |
irqreturn_t isci_msix_isr | ( | int | vec, |
void * | data | ||
) |
char* lookup_cable_names | ( | enum cable_selections | selection | ) |
void sci_change_state | ( | struct sci_base_state_machine * | sm, |
u32 | next_state | ||
) |
enum sci_status sci_controller_allocate_remote_node_context | ( | struct isci_host * | ihost, |
struct isci_remote_device * | idev, | ||
u16 * | node_id | ||
) |
This method allocates remote node index and the reserves the remote node context space for use. This method can fail if there are no more remote node index available. : This is the controller object which contains the set of free remote node ids : This is the device object which is requesting the a remote node id : This is the remote node id that is assinged to the device if one is available
enum sci_status SCI_FAILURE_OUT_OF_RESOURCES if there are no available remote node index available.
enum sci_status sci_controller_complete_io | ( | struct isci_host * | ihost, |
struct isci_remote_device * | idev, | ||
struct isci_request * | ireq | ||
) |
sci_controller_complete_io() - This method will perform core specific completion operations for an IO request. After this method is invoked, the user should consider the IO request as invalid until it is properly reused (i.e. re-constructed). : The handle to the controller object for which to complete the IO request. : The handle to the remote device object for which to complete the IO request. : the handle to the io request object to complete.
enum sci_status sci_controller_continue_io | ( | struct isci_request * | ireq | ) |
void sci_controller_remote_device_stopped | ( | struct isci_host * | ihost, |
struct isci_remote_device * | idev | ||
) |
enum sci_status sci_controller_start_io | ( | struct isci_host * | ihost, |
struct isci_remote_device * | idev, | ||
struct isci_request * | ireq | ||
) |
enum sci_task_status sci_controller_start_task | ( | struct isci_host * | ihost, |
struct isci_remote_device * | idev, | ||
struct isci_request * | ireq | ||
) |
sci_controller_start_task() - This method is called by the SCIC user to send/start a framework task management request. : the handle to the controller object for which to start the task management request. : the handle to the remote device object for which to start the task management request. : the handle to the task request object to start.
enum sci_status sci_controller_terminate_request | ( | struct isci_host * | ihost, |
struct isci_remote_device * | idev, | ||
struct isci_request * | ireq | ||
) |
void sci_controller_transition_to_ready | ( | struct isci_host * | ihost, |
enum sci_status | status | ||
) |
void sci_init_sm | ( | struct sci_base_state_machine * | sm, |
const struct sci_base_state * | state_table, | ||
u32 | initial_state | ||
) |
int sci_oem_parameters_validate | ( | struct sci_oem_params * | oem, |
u8 | version | ||
) |