| 1 |
|
| 2 | |
| 3 | * Driver for USB Mass Storage compliant devices
|
| 4 | * Debugging Functions Header File
|
| 5 | *
|
| 6 | * Current development and maintenance by:
|
| 7 | * (c) 1999-2002 Matthew Dharm ([email protected])
|
| 8 | *
|
| 9 | * Initial work by:
|
| 10 | * (c) 1999 Michael Gee ([email protected])
|
| 11 | *
|
| 12 | * This driver is based on the 'USB Mass Storage Class' document. This
|
| 13 | * describes in detail the protocol used to communicate with such
|
| 14 | * devices. Clearly, the designers had SCSI and ATAPI commands in
|
| 15 | * mind when they created this document. The commands are all very
|
| 16 | * similar to commands in the SCSI-II and ATAPI specifications.
|
| 17 | *
|
| 18 | * It is important to note that in a number of cases this class
|
| 19 | * exhibits class-specific exemptions from the USB specification.
|
| 20 | * Notably the usage of NAK, STALL and ACK differs from the norm, in
|
| 21 | * that they are used to communicate wait, failed and OK on commands.
|
| 22 | *
|
| 23 | * Also, for certain devices, the interrupt endpoint is used to convey
|
| 24 | * status of a command.
|
| 25 |
|
| 26 |
|
| 27 | #ifndef _DEBUG_H_
|
| 28 | #define _DEBUG_H_
|
| 29 |
|
| 30 | #include <linux/kernel.h>
|
| 31 |
|
| 32 | #ifdef CONFIG_USB_STORAGE_DEBUG
|
| 33 | void usb_stor_show_command(const struct us_data *us, struct scsi_cmnd *srb);
|
| 34 | void usb_stor_show_sense(const struct us_data *us, unsigned char key,
|
| 35 | unsigned char asc, unsigned char ascq);
|
| 36 | __printf(2, 3) void usb_stor_dbg(const struct us_data *us,
|
| 37 | const char *fmt, ...);
|
| 38 |
|
| 39 | #define US_DEBUG(x) x
|
| 40 | #else
|
| 41 | __printf(2, 3)
|
| 42 | static inline void _usb_stor_dbg(const struct us_data *us,
|
| 43 | const char *fmt, ...)
|
| 44 | {
|
| 45 | }
|
| 46 | #define usb_stor_dbg(us, fmt, ...) \
|
| 47 | do { if (0) _usb_stor_dbg(us, fmt, ##__VA_ARGS__); } while (0)
|
| 48 | #define US_DEBUG(x)
|
| 49 | #endif
|
| 50 |
|
| 51 | #endif
|