| 1 |
|
| 2 | |
| 3 | * Driver for Microtek Scanmaker X6 USB scanner and possibly others.
|
| 4 | *
|
| 5 | * (C) Copyright 2000 John Fremlin <[email protected]>
|
| 6 | * (C) Copyright 2000 Oliver Neukum <[email protected]>
|
| 7 | *
|
| 8 | * See microtek.c for history
|
| 9 | *
|
| 10 |
|
| 11 |
|
| 12 | typedef void (*mts_scsi_cmnd_callback)(struct scsi_cmnd *);
|
| 13 |
|
| 14 |
|
| 15 | struct mts_transfer_context
|
| 16 | {
|
| 17 | struct mts_desc *instance;
|
| 18 | mts_scsi_cmnd_callback final_callback;
|
| 19 | struct scsi_cmnd *srb;
|
| 20 |
|
| 21 | void *data;
|
| 22 | unsigned data_length;
|
| 23 | int data_pipe;
|
| 24 | struct scatterlist *curr_sg;
|
| 25 |
|
| 26 | u8 *scsi_status;
|
| 27 | };
|
| 28 |
|
| 29 |
|
| 30 | struct mts_desc {
|
| 31 | struct mts_desc *next;
|
| 32 | struct mts_desc *prev;
|
| 33 |
|
| 34 | struct usb_device *usb_dev;
|
| 35 | struct usb_interface *usb_intf;
|
| 36 |
|
| 37 |
|
| 38 | u8 ep_out;
|
| 39 | u8 ep_response;
|
| 40 | u8 ep_image;
|
| 41 |
|
| 42 | struct Scsi_Host *host;
|
| 43 |
|
| 44 | struct urb *urb;
|
| 45 | struct mts_transfer_context context;
|
| 46 | };
|
| 47 |
|
| 48 |
|
| 49 | #define MTS_EP_OUT 0x1
|
| 50 | #define MTS_EP_RESPONSE 0x2
|
| 51 | #define MTS_EP_IMAGE 0x3
|
| 52 | #define MTS_EP_TOTAL 0x3
|
| 53 |
|
| 54 | #define MTS_SCSI_ERR_MASK ~0x3fu
|
| 55 |
|