#include <linux/bitfield.h>
#include "esas2r.h"
u8 *esas2r_buffered_ioctl;
dma_addr_t esas2r_buffered_ioctl_addr;
u32 esas2r_buffered_ioctl_size;
struct pci_dev *esas2r_buffered_ioctl_pcid;
static DEFINE_SEMAPHORE(buffered_ioctl_semaphore, 1);
BUFFERED_IOCTL_CALLBACK;
BUFFERED_IOCTL_DONE_CALLBACK;
struct esas2r_buffered_ioctl { … };
static void complete_fm_api_req(struct esas2r_adapter *a,
struct esas2r_request *rq)
{ … }
static u32 get_physaddr_fm_api(struct esas2r_sg_context *sgc, u64 *addr)
{ … }
static u32 get_physaddr_fm_api_header(struct esas2r_sg_context *sgc, u64 *addr)
{ … }
static void do_fm_api(struct esas2r_adapter *a, struct esas2r_flash_img *fi)
{ … }
static void complete_nvr_req(struct esas2r_adapter *a,
struct esas2r_request *rq)
{ … }
static u32 get_physaddr_buffered_ioctl(struct esas2r_sg_context *sgc,
u64 *addr)
{ … }
static void complete_buffered_ioctl_req(struct esas2r_adapter *a,
struct esas2r_request *rq)
{ … }
static u8 handle_buffered_ioctl(struct esas2r_buffered_ioctl *bi)
{ … }
static int smp_ioctl_callback(struct esas2r_adapter *a,
struct esas2r_request *rq,
struct esas2r_sg_context *sgc, void *context)
{ … }
static u8 handle_smp_ioctl(struct esas2r_adapter *a, struct atto_ioctl_smp *si)
{ … }
static void esas2r_csmi_ioctl_tunnel_comp_cb(struct esas2r_adapter *a,
struct esas2r_request *rq)
{ … }
static bool csmi_ioctl_tunnel(struct esas2r_adapter *a,
union atto_ioctl_csmi *ci,
struct esas2r_request *rq,
struct esas2r_sg_context *sgc,
u32 ctrl_code,
u16 target_id)
{ … }
static bool check_lun(struct scsi_lun lun)
{ … }
static int csmi_ioctl_callback(struct esas2r_adapter *a,
struct esas2r_request *rq,
struct esas2r_sg_context *sgc, void *context)
{ … }
static void csmi_ioctl_done_callback(struct esas2r_adapter *a,
struct esas2r_request *rq, void *context)
{ … }
static u8 handle_csmi_ioctl(struct esas2r_adapter *a, struct atto_csmi *ci)
{ … }
static bool hba_ioctl_tunnel(struct esas2r_adapter *a,
struct atto_ioctl *hi,
struct esas2r_request *rq,
struct esas2r_sg_context *sgc)
{ … }
static void scsi_passthru_comp_cb(struct esas2r_adapter *a,
struct esas2r_request *rq)
{ … }
static int hba_ioctl_callback(struct esas2r_adapter *a,
struct esas2r_request *rq,
struct esas2r_sg_context *sgc,
void *context)
{ … }
static void hba_ioctl_done_callback(struct esas2r_adapter *a,
struct esas2r_request *rq, void *context)
{ … }
u8 handle_hba_ioctl(struct esas2r_adapter *a,
struct atto_ioctl *ioctl_hba)
{ … }
int esas2r_write_params(struct esas2r_adapter *a, struct esas2r_request *rq,
struct esas2r_sas_nvram *data)
{ … }
int esas2r_ioctl_handler(void *hostdata, unsigned int cmd, void __user *arg)
{ … }
int esas2r_ioctl(struct scsi_device *sd, unsigned int cmd, void __user *arg)
{ … }
static void free_fw_buffers(struct esas2r_adapter *a)
{ … }
static int allocate_fw_buffers(struct esas2r_adapter *a, u32 length)
{ … }
int esas2r_read_fw(struct esas2r_adapter *a, char *buf, long off, int count)
{ … }
int esas2r_write_fw(struct esas2r_adapter *a, const char *buf, long off,
int count)
{ … }
static void vda_complete_req(struct esas2r_adapter *a,
struct esas2r_request *rq)
{ … }
static u32 get_physaddr_vda(struct esas2r_sg_context *sgc, u64 *addr)
{ … }
int esas2r_read_vda(struct esas2r_adapter *a, char *buf, long off, int count)
{ … }
int esas2r_write_vda(struct esas2r_adapter *a, const char *buf, long off,
int count)
{ … }
static void fs_api_complete_req(struct esas2r_adapter *a,
struct esas2r_request *rq)
{ … }
static u32 get_physaddr_fs_api(struct esas2r_sg_context *sgc, u64 *addr)
{ … }
int esas2r_read_fs(struct esas2r_adapter *a, char *buf, long off, int count)
{ … }
int esas2r_write_fs(struct esas2r_adapter *a, const char *buf, long off,
int count)
{ … }