linux/drivers/usb/storage/protocol.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Driver for USB Mass Storage compliant devices
   4 * Protocol Functions Header File
   5 *
   6 * Current development and maintenance by:
   7 *   (c) 1999, 2000 Matthew Dharm (mdharm-usb@one-eyed-alien.net)
   8 *
   9 * This driver is based on the 'USB Mass Storage Class' document. This
  10 * describes in detail the protocol used to communicate with such
  11 * devices.  Clearly, the designers had SCSI and ATAPI commands in
  12 * mind when they created this document.  The commands are all very
  13 * similar to commands in the SCSI-II and ATAPI specifications.
  14 *
  15 * It is important to note that in a number of cases this class
  16 * exhibits class-specific exemptions from the USB specification.
  17 * Notably the usage of NAK, STALL and ACK differs from the norm, in
  18 * that they are used to communicate wait, failed and OK on commands.
  19 *
  20 * Also, for certain devices, the interrupt endpoint is used to convey
  21 * status of a command.
  22 */
  23
  24#ifndef _PROTOCOL_H_
  25#define _PROTOCOL_H_
  26
  27/* Protocol handling routines */
  28extern void usb_stor_pad12_command(struct scsi_cmnd*, struct us_data*);
  29extern void usb_stor_ufi_command(struct scsi_cmnd*, struct us_data*);
  30extern void usb_stor_transparent_scsi_command(struct scsi_cmnd*,
  31                struct us_data*);
  32
  33/* struct scsi_cmnd transfer buffer access utilities */
  34enum xfer_buf_dir       {TO_XFER_BUF, FROM_XFER_BUF};
  35
  36extern unsigned int usb_stor_access_xfer_buf(unsigned char *buffer,
  37        unsigned int buflen, struct scsi_cmnd *srb, struct scatterlist **,
  38        unsigned int *offset, enum xfer_buf_dir dir);
  39
  40extern void usb_stor_set_xfer_buf(unsigned char *buffer,
  41        unsigned int buflen, struct scsi_cmnd *srb);
  42#endif
  43