]>
git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - drivers/staging/keucr/transport.h
4 #include <linux/blkdev.h>
6 /* usb_stor_bulk_transfer_xxx() return codes, in order of severity */
7 #define USB_STOR_XFER_GOOD 0 /* good transfer */
8 #define USB_STOR_XFER_SHORT 1 /* transferred less than expected */
9 #define USB_STOR_XFER_STALLED 2 /* endpoint stalled */
10 #define USB_STOR_XFER_LONG 3 /* device tried to send too much */
11 #define USB_STOR_XFER_ERROR 4 /* transfer died in the middle */
13 /* Transport return codes */
14 #define USB_STOR_TRANSPORT_GOOD 0 /* Transport good, command good */
15 #define USB_STOR_TRANSPORT_FAILED 1 /* Transport good, command failed */
16 #define USB_STOR_TRANSPORT_NO_SENSE 2 /* Command failed, no auto-sense */
17 #define USB_STOR_TRANSPORT_ERROR 3 /* Transport bad (i.e. device dead) */
20 * We used to have USB_STOR_XFER_ABORTED and USB_STOR_TRANSPORT_ABORTED
21 * return codes. But now the transport and low-level transfer routines
22 * treat an abort as just another error (-ENOENT for a cancelled URB).
23 * It is up to the invoke_transport() function to test for aborts and
24 * distinguish them from genuine communication errors.
27 /* CBI accept device specific command */
29 extern int usb_stor_Bulk_transport(struct scsi_cmnd
*, struct us_data
*);
30 extern int usb_stor_Bulk_max_lun(struct us_data
*);
31 extern int usb_stor_Bulk_reset(struct us_data
*);
32 extern void usb_stor_invoke_transport(struct scsi_cmnd
*, struct us_data
*);
33 extern void usb_stor_stop_transport(struct us_data
*);
34 extern int usb_stor_control_msg(struct us_data
*us
, unsigned int pipe
,
35 u8 request
, u8 requesttype
, u16 value
, u16 index
,
36 void *data
, u16 size
, int timeout
);
37 extern int usb_stor_clear_halt(struct us_data
*us
, unsigned int pipe
);
38 extern int usb_stor_bulk_transfer_buf(struct us_data
*us
, unsigned int pipe
,
39 void *buf
, unsigned int length
, unsigned int *act_len
);
40 extern int usb_stor_bulk_transfer_sg(struct us_data
*us
, unsigned int pipe
,
41 void *buf
, unsigned int length
, int use_sg
, int *residual
);
42 extern int usb_stor_bulk_srb(struct us_data
*us
, unsigned int pipe
,
43 struct scsi_cmnd
*srb
);
44 extern int usb_stor_port_reset(struct us_data
*us
);
46 /* Protocol handling routines */
47 enum xfer_buf_dir
{TO_XFER_BUF
, FROM_XFER_BUF
};
48 extern unsigned int usb_stor_access_xfer_buf(struct us_data
*,
49 unsigned char *buffer
, unsigned int buflen
, struct scsi_cmnd
*srb
,
50 struct scatterlist
**, unsigned int *offset
, enum xfer_buf_dir dir
);
51 extern void usb_stor_set_xfer_buf(struct us_data
*, unsigned char *buffer
,
52 unsigned int buflen
, struct scsi_cmnd
*srb
,
58 extern void ENE_stor_invoke_transport(struct scsi_cmnd
*, struct us_data
*);
59 extern int ENE_InitMedia(struct us_data
*);
60 extern int ENE_SMInit(struct us_data
*);
61 extern int ENE_SendScsiCmd(struct us_data
*, BYTE
, void*, int);
62 extern int ENE_LoadBinCode(struct us_data
*, BYTE
);
63 extern int ene_read_byte(struct us_data
*, WORD index
, void *buf
);
64 extern int ENE_Read_Data(struct us_data
*, void *buf
, unsigned int length
);
65 extern int ENE_Write_Data(struct us_data
*, void *buf
, unsigned int length
);
66 extern void BuildSenseBuffer(struct scsi_cmnd
*, int);
71 extern int SM_SCSIIrp(struct us_data
*us
, struct scsi_cmnd
*srb
);