18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci /* 38c2ecf20Sopenharmony_ci * Driver for Microtek Scanmaker X6 USB scanner and possibly others. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * (C) Copyright 2000 John Fremlin <vii@penguinpowered.com> 68c2ecf20Sopenharmony_ci * (C) Copyright 2000 Oliver Neukum <Oliver.Neukum@lrz.uni-muenchen.de> 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * See microtek.c for history 98c2ecf20Sopenharmony_ci * 108c2ecf20Sopenharmony_ci */ 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_citypedef void (*mts_scsi_cmnd_callback)(struct scsi_cmnd *); 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_cistruct mts_transfer_context 168c2ecf20Sopenharmony_ci{ 178c2ecf20Sopenharmony_ci struct mts_desc *instance; 188c2ecf20Sopenharmony_ci mts_scsi_cmnd_callback final_callback; 198c2ecf20Sopenharmony_ci struct scsi_cmnd *srb; 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci void *data; 228c2ecf20Sopenharmony_ci unsigned data_length; 238c2ecf20Sopenharmony_ci int data_pipe; 248c2ecf20Sopenharmony_ci struct scatterlist *curr_sg; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci u8 *scsi_status; /* status returned from ep_response after command completion */ 278c2ecf20Sopenharmony_ci}; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_cistruct mts_desc { 318c2ecf20Sopenharmony_ci struct mts_desc *next; 328c2ecf20Sopenharmony_ci struct mts_desc *prev; 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci struct usb_device *usb_dev; 358c2ecf20Sopenharmony_ci struct usb_interface *usb_intf; 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci /* Endpoint addresses */ 388c2ecf20Sopenharmony_ci u8 ep_out; 398c2ecf20Sopenharmony_ci u8 ep_response; 408c2ecf20Sopenharmony_ci u8 ep_image; 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci struct Scsi_Host *host; 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci struct urb *urb; 458c2ecf20Sopenharmony_ci struct mts_transfer_context context; 468c2ecf20Sopenharmony_ci}; 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci#define MTS_EP_OUT 0x1 508c2ecf20Sopenharmony_ci#define MTS_EP_RESPONSE 0x2 518c2ecf20Sopenharmony_ci#define MTS_EP_IMAGE 0x3 528c2ecf20Sopenharmony_ci#define MTS_EP_TOTAL 0x3 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci#define MTS_SCSI_ERR_MASK ~0x3fu 558c2ecf20Sopenharmony_ci 56