162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef _SCSI_SCSI_DBG_H
362306a36Sopenharmony_ci#define _SCSI_SCSI_DBG_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_cistruct scsi_cmnd;
662306a36Sopenharmony_cistruct scsi_device;
762306a36Sopenharmony_cistruct scsi_sense_hdr;
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciextern void scsi_print_command(struct scsi_cmnd *);
1062306a36Sopenharmony_ciextern size_t __scsi_format_command(char *, size_t,
1162306a36Sopenharmony_ci				   const unsigned char *, size_t);
1262306a36Sopenharmony_ciextern void scsi_print_sense_hdr(const struct scsi_device *, const char *,
1362306a36Sopenharmony_ci				 const struct scsi_sense_hdr *);
1462306a36Sopenharmony_ciextern void scsi_print_sense(const struct scsi_cmnd *);
1562306a36Sopenharmony_ciextern void __scsi_print_sense(const struct scsi_device *, const char *name,
1662306a36Sopenharmony_ci			       const unsigned char *sense_buffer,
1762306a36Sopenharmony_ci			       int sense_len);
1862306a36Sopenharmony_ciextern void scsi_print_result(const struct scsi_cmnd *, const char *, int);
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#ifdef CONFIG_SCSI_CONSTANTS
2162306a36Sopenharmony_ciextern bool scsi_opcode_sa_name(int, int, const char **, const char **);
2262306a36Sopenharmony_ciextern const char *scsi_sense_key_string(unsigned char);
2362306a36Sopenharmony_ciextern const char *scsi_extd_sense_format(unsigned char, unsigned char,
2462306a36Sopenharmony_ci					  const char **);
2562306a36Sopenharmony_ciextern const char *scsi_mlreturn_string(int);
2662306a36Sopenharmony_ciextern const char *scsi_hostbyte_string(int);
2762306a36Sopenharmony_ciextern const char *scsi_driverbyte_string(int);
2862306a36Sopenharmony_ci#else
2962306a36Sopenharmony_cistatic inline bool
3062306a36Sopenharmony_ciscsi_opcode_sa_name(int cmd, int sa,
3162306a36Sopenharmony_ci		    const char **cdb_name, const char **sa_name)
3262306a36Sopenharmony_ci{
3362306a36Sopenharmony_ci	*cdb_name = NULL;
3462306a36Sopenharmony_ci	switch (cmd) {
3562306a36Sopenharmony_ci	case VARIABLE_LENGTH_CMD:
3662306a36Sopenharmony_ci	case MAINTENANCE_IN:
3762306a36Sopenharmony_ci	case MAINTENANCE_OUT:
3862306a36Sopenharmony_ci	case PERSISTENT_RESERVE_IN:
3962306a36Sopenharmony_ci	case PERSISTENT_RESERVE_OUT:
4062306a36Sopenharmony_ci	case SERVICE_ACTION_IN_12:
4162306a36Sopenharmony_ci	case SERVICE_ACTION_OUT_12:
4262306a36Sopenharmony_ci	case SERVICE_ACTION_BIDIRECTIONAL:
4362306a36Sopenharmony_ci	case SERVICE_ACTION_IN_16:
4462306a36Sopenharmony_ci	case SERVICE_ACTION_OUT_16:
4562306a36Sopenharmony_ci	case EXTENDED_COPY:
4662306a36Sopenharmony_ci	case RECEIVE_COPY_RESULTS:
4762306a36Sopenharmony_ci		*sa_name = NULL;
4862306a36Sopenharmony_ci		return true;
4962306a36Sopenharmony_ci	default:
5062306a36Sopenharmony_ci		return false;
5162306a36Sopenharmony_ci	}
5262306a36Sopenharmony_ci}
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_cistatic inline const char *
5562306a36Sopenharmony_ciscsi_sense_key_string(unsigned char key)
5662306a36Sopenharmony_ci{
5762306a36Sopenharmony_ci	return NULL;
5862306a36Sopenharmony_ci}
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_cistatic inline const char *
6162306a36Sopenharmony_ciscsi_extd_sense_format(unsigned char asc, unsigned char ascq, const char **fmt)
6262306a36Sopenharmony_ci{
6362306a36Sopenharmony_ci	*fmt = NULL;
6462306a36Sopenharmony_ci	return NULL;
6562306a36Sopenharmony_ci}
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cistatic inline const char *
6862306a36Sopenharmony_ciscsi_mlreturn_string(int result)
6962306a36Sopenharmony_ci{
7062306a36Sopenharmony_ci	return NULL;
7162306a36Sopenharmony_ci}
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_cistatic inline const char *
7462306a36Sopenharmony_ciscsi_hostbyte_string(int result)
7562306a36Sopenharmony_ci{
7662306a36Sopenharmony_ci	return NULL;
7762306a36Sopenharmony_ci}
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_cistatic inline const char *
8062306a36Sopenharmony_ciscsi_driverbyte_string(int result)
8162306a36Sopenharmony_ci{
8262306a36Sopenharmony_ci	return NULL;
8362306a36Sopenharmony_ci}
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci#endif
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci#endif /* _SCSI_SCSI_DBG_H */
88