microtek.h 1015 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. typedef void (*mts_scsi_cmnd_callback)(struct scsi_cmnd *);
  11. struct mts_transfer_context
  12. {
  13. struct mts_desc* instance;
  14. mts_scsi_cmnd_callback final_callback;
  15. struct scsi_cmnd *srb;
  16. void* data;
  17. unsigned data_length;
  18. int data_pipe;
  19. int fragment;
  20. u8 *scsi_status; /* status returned from ep_response after command completion */
  21. };
  22. struct mts_desc {
  23. struct mts_desc *next;
  24. struct mts_desc *prev;
  25. struct usb_device *usb_dev;
  26. struct usb_interface *usb_intf;
  27. /* Endpoint addresses */
  28. u8 ep_out;
  29. u8 ep_response;
  30. u8 ep_image;
  31. struct Scsi_Host * host;
  32. struct urb *urb;
  33. struct mts_transfer_context context;
  34. };
  35. #define MTS_EP_OUT 0x1
  36. #define MTS_EP_RESPONSE 0x2
  37. #define MTS_EP_IMAGE 0x3
  38. #define MTS_EP_TOTAL 0x3
  39. #define MTS_SCSI_ERR_MASK ~0x3fu