Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 *  Copyright 2016-2021 Broadcom Inc. All rights reserved.
  4 *
  5 */
  6#ifndef MPI30_INIT_H
  7#define MPI30_INIT_H     1
  8struct mpi3_scsi_io_cdb_eedp32 {
  9	u8                 cdb[20];
 10	__be32          primary_reference_tag;
 11	__le16             primary_application_tag;
 12	__le16             primary_application_tag_mask;
 13	__le32             transfer_length;
 14};
 15
 16union mpi3_scso_io_cdb_union {
 17	u8                         cdb32[32];
 18	struct mpi3_scsi_io_cdb_eedp32 eedp32;
 19	struct mpi3_sge_common         sge;
 20};
 21
 22struct mpi3_scsi_io_request {
 23	__le16                     host_tag;
 24	u8                         ioc_use_only02;
 25	u8                         function;
 26	__le16                     ioc_use_only04;
 27	u8                         ioc_use_only06;
 28	u8                         msg_flags;
 29	__le16                     change_count;
 30	__le16                     dev_handle;
 31	__le32                     flags;
 32	__le32                     skip_count;
 33	__le32                     data_length;
 34	u8                         lun[8];
 35	union mpi3_scso_io_cdb_union  cdb;
 36	union mpi3_sge_union          sgl[4];
 37};
 38
 39#define MPI3_SCSIIO_MSGFLAGS_METASGL_VALID                  (0x80)
 40#define MPI3_SCSIIO_FLAGS_LARGE_CDB                         (0x60000000)
 41#define MPI3_SCSIIO_FLAGS_CDB_16_OR_LESS                    (0x00000000)
 42#define MPI3_SCSIIO_FLAGS_CDB_GREATER_THAN_16               (0x20000000)
 43#define MPI3_SCSIIO_FLAGS_CDB_IN_SEPARATE_BUFFER            (0x40000000)
 44#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_MASK                (0x07000000)
 45#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_SIMPLEQ             (0x00000000)
 46#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_HEADOFQ             (0x01000000)
 47#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_ORDEREDQ            (0x02000000)
 48#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_ACAQ                (0x04000000)
 49#define MPI3_SCSIIO_FLAGS_CMDPRI_MASK                       (0x00f00000)
 50#define MPI3_SCSIIO_FLAGS_CMDPRI_SHIFT                      (20)
 51#define MPI3_SCSIIO_FLAGS_DATADIRECTION_MASK                (0x000c0000)
 52#define MPI3_SCSIIO_FLAGS_DATADIRECTION_NO_DATA_TRANSFER    (0x00000000)
 53#define MPI3_SCSIIO_FLAGS_DATADIRECTION_WRITE               (0x00040000)
 54#define MPI3_SCSIIO_FLAGS_DATADIRECTION_READ                (0x00080000)
 55#define MPI3_SCSIIO_FLAGS_DMAOPERATION_MASK                 (0x00030000)
 56#define MPI3_SCSIIO_FLAGS_DMAOPERATION_HOST_PI              (0x00010000)
 57#define MPI3_SCSIIO_METASGL_INDEX                           (3)
 58struct mpi3_scsi_io_reply {
 59	__le16                     host_tag;
 60	u8                         ioc_use_only02;
 61	u8                         function;
 62	__le16                     ioc_use_only04;
 63	u8                         ioc_use_only06;
 64	u8                         msg_flags;
 65	__le16                     ioc_use_only08;
 66	__le16                     ioc_status;
 67	__le32                     ioc_log_info;
 68	u8                         scsi_status;
 69	u8                         scsi_state;
 70	__le16                     dev_handle;
 71	__le32                     transfer_count;
 72	__le32                     sense_count;
 73	__le32                     response_data;
 74	__le16                     task_tag;
 75	__le16                     scsi_status_qualifier;
 76	__le32                     eedp_error_offset;
 77	__le16                     eedp_observed_app_tag;
 78	__le16                     eedp_observed_guard;
 79	__le32                     eedp_observed_ref_tag;
 80	__le64                     sense_data_buffer_address;
 81};
 82
 83#define MPI3_SCSIIO_REPLY_MSGFLAGS_REFTAG_OBSERVED_VALID        (0x01)
 84#define MPI3_SCSIIO_REPLY_MSGFLAGS_APPTAG_OBSERVED_VALID        (0x02)
 85#define MPI3_SCSIIO_REPLY_MSGFLAGS_GUARD_OBSERVED_VALID         (0x04)
 86#define MPI3_SCSI_STATUS_GOOD                   (0x00)
 87#define MPI3_SCSI_STATUS_CHECK_CONDITION        (0x02)
 88#define MPI3_SCSI_STATUS_CONDITION_MET          (0x04)
 89#define MPI3_SCSI_STATUS_BUSY                   (0x08)
 90#define MPI3_SCSI_STATUS_INTERMEDIATE           (0x10)
 91#define MPI3_SCSI_STATUS_INTERMEDIATE_CONDMET   (0x14)
 92#define MPI3_SCSI_STATUS_RESERVATION_CONFLICT   (0x18)
 93#define MPI3_SCSI_STATUS_COMMAND_TERMINATED     (0x22)
 94#define MPI3_SCSI_STATUS_TASK_SET_FULL          (0x28)
 95#define MPI3_SCSI_STATUS_ACA_ACTIVE             (0x30)
 96#define MPI3_SCSI_STATUS_TASK_ABORTED           (0x40)
 97#define MPI3_SCSI_STATE_SENSE_MASK              (0x03)
 98#define MPI3_SCSI_STATE_SENSE_VALID             (0x00)
 99#define MPI3_SCSI_STATE_SENSE_FAILED            (0x01)
100#define MPI3_SCSI_STATE_SENSE_BUFF_Q_EMPTY      (0x02)
101#define MPI3_SCSI_STATE_SENSE_NOT_AVAILABLE     (0x03)
102#define MPI3_SCSI_STATE_NO_SCSI_STATUS          (0x04)
103#define MPI3_SCSI_STATE_TERMINATED              (0x08)
104#define MPI3_SCSI_STATE_RESPONSE_DATA_VALID     (0x10)
105#define MPI3_SCSI_RSP_RESPONSECODE_MASK         (0x000000ff)
106#define MPI3_SCSI_RSP_RESPONSECODE_SHIFT        (0)
107#define MPI3_SCSI_RSP_ARI2_MASK                 (0x0000ff00)
108#define MPI3_SCSI_RSP_ARI2_SHIFT                (8)
109#define MPI3_SCSI_RSP_ARI1_MASK                 (0x00ff0000)
110#define MPI3_SCSI_RSP_ARI1_SHIFT                (16)
111#define MPI3_SCSI_RSP_ARI0_MASK                 (0xff000000)
112#define MPI3_SCSI_RSP_ARI0_SHIFT                (24)
113#define MPI3_SCSI_TASKTAG_UNKNOWN               (0xffff)
114struct mpi3_scsi_task_mgmt_request {
115	__le16                     host_tag;
116	u8                         ioc_use_only02;
117	u8                         function;
118	__le16                     ioc_use_only04;
119	u8                         ioc_use_only06;
120	u8                         msg_flags;
121	__le16                     change_count;
122	__le16                     dev_handle;
123	__le16                     task_host_tag;
124	u8                         task_type;
125	u8                         reserved0f;
126	__le16                     task_request_queue_id;
127	__le16                     reserved12;
128	__le32                     reserved14;
129	u8                         lun[8];
130};
131
132#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU      (0x08)
133#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK               (0x01)
134#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET           (0x02)
135#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET             (0x03)
136#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET       (0x05)
137#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET           (0x06)
138#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK               (0x07)
139#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA                (0x08)
140#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET           (0x09)
141#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT        (0x0a)
142#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET          (0x0b)
143struct mpi3_scsi_task_mgmt_reply {
144	__le16                     host_tag;
145	u8                         ioc_use_only02;
146	u8                         function;
147	__le16                     ioc_use_only04;
148	u8                         ioc_use_only06;
149	u8                         msg_flags;
150	__le16                     ioc_use_only08;
151	__le16                     ioc_status;
152	__le32                     ioc_log_info;
153	__le32                     termination_count;
154	__le32                     response_data;
155	__le32                     reserved18;
156};
157
158#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC      (0x80)
159#endif