1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
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 (mdharm-usb@one-eyed-alien.net) |
8 | * |
9 | * Initial work by: |
10 | * (c) 1999 Michael Gee (michael@linuxspecific.com) |
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 |
52 | |