162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci /* 362306a36Sopenharmony_ci * Driver for Microtek Scanmaker X6 USB scanner and possibly others. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * (C) Copyright 2000 John Fremlin <vii@penguinpowered.com> 662306a36Sopenharmony_ci * (C) Copyright 2000 Oliver Neukum <Oliver.Neukum@lrz.uni-muenchen.de> 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * See microtek.c for history 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_citypedef void (*mts_scsi_cmnd_callback)(struct scsi_cmnd *); 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_cistruct mts_transfer_context 1662306a36Sopenharmony_ci{ 1762306a36Sopenharmony_ci struct mts_desc *instance; 1862306a36Sopenharmony_ci mts_scsi_cmnd_callback final_callback; 1962306a36Sopenharmony_ci struct scsi_cmnd *srb; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci void *data; 2262306a36Sopenharmony_ci unsigned data_length; 2362306a36Sopenharmony_ci int data_pipe; 2462306a36Sopenharmony_ci struct scatterlist *curr_sg; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci u8 *scsi_status; /* status returned from ep_response after command completion */ 2762306a36Sopenharmony_ci}; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cistruct mts_desc { 3162306a36Sopenharmony_ci struct mts_desc *next; 3262306a36Sopenharmony_ci struct mts_desc *prev; 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci struct usb_device *usb_dev; 3562306a36Sopenharmony_ci struct usb_interface *usb_intf; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci /* Endpoint addresses */ 3862306a36Sopenharmony_ci u8 ep_out; 3962306a36Sopenharmony_ci u8 ep_response; 4062306a36Sopenharmony_ci u8 ep_image; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci struct Scsi_Host *host; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci struct urb *urb; 4562306a36Sopenharmony_ci struct mts_transfer_context context; 4662306a36Sopenharmony_ci}; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci#define MTS_EP_OUT 0x1 5062306a36Sopenharmony_ci#define MTS_EP_RESPONSE 0x2 5162306a36Sopenharmony_ci#define MTS_EP_IMAGE 0x3 5262306a36Sopenharmony_ci#define MTS_EP_TOTAL 0x3 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#define MTS_SCSI_ERR_MASK ~0x3fu 5562306a36Sopenharmony_ci 56