1 /*
2 * Driver for Microtek Scanmaker X6 USB scanner and possibly others.
3 *
4 * (C) Copyright 2000 John Fremlin <vii@penguinpowered.com>
5 * (C) Copyright 2000 Oliver Neukum <Oliver.Neukum@lrz.uni-muenchen.de>
6 *
7 * See microtek.c for history
8 *
9 */
10
11 typedef void (*mts_scsi_cmnd_callback)(Scsi_Cmnd *);
12 typedef void (*mts_usb_urb_callback) (struct urb *);
13
14
15 struct mts_transfer_context
16 {
17 struct mts_desc* instance;
18 mts_scsi_cmnd_callback final_callback;
19 Scsi_Cmnd *srb;
20
21 void* data;
22 unsigned data_length;
23 int data_pipe;
24
25 enum {
26 mts_con_none,
27 mts_con_command,
28 mts_con_data,
29 mts_con_status,
30 mts_con_error,
31 mts_con_done
32 }
33 state;
34
35 atomic_t do_abort; /* when != 0 URB completion routines will
36 return straightaway */
37
38 u8 status; /* status returned from ep_response after command completion */
39 };
40
41
42 struct mts_desc {
43 struct mts_desc *next;
44 struct mts_desc *prev;
45
46 struct usb_device *usb_dev;
47
48 int interface;
49
50 /* Endpoint addresses */
51 u8 ep_out;
52 u8 ep_response;
53 u8 ep_image;
54
55 struct Scsi_Host * host;
56 Scsi_Host_Template ctempl;
57 int host_number;
58
59 struct semaphore lock;
60
61 struct urb urb;
62 struct mts_transfer_context context;
63 };
64
65
66 #define MTS_EP_OUT 0x1
67 #define MTS_EP_RESPONSE 0x2
68 #define MTS_EP_IMAGE 0x3
69 #define MTS_EP_TOTAL 0x3
70
71 #define MTS_SCSI_ERR_MASK ~0x3fu
72
73
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.