root/drivers/scsi/isci/scu_event_codes.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * This file is provided under a dual BSD/GPLv2 license.  When using or
   3  * redistributing this file, you may do so under either license.
   4  *
   5  * GPL LICENSE SUMMARY
   6  *
   7  * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
   8  *
   9  * This program is free software; you can redistribute it and/or modify
  10  * it under the terms of version 2 of the GNU General Public License as
  11  * published by the Free Software Foundation.
  12  *
  13  * This program is distributed in the hope that it will be useful, but
  14  * WITHOUT ANY WARRANTY; without even the implied warranty of
  15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16  * General Public License for more details.
  17  *
  18  * You should have received a copy of the GNU General Public License
  19  * along with this program; if not, write to the Free Software
  20  * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  21  * The full GNU General Public License is included in this distribution
  22  * in the file called LICENSE.GPL.
  23  *
  24  * BSD LICENSE
  25  *
  26  * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
  27  * All rights reserved.
  28  *
  29  * Redistribution and use in source and binary forms, with or without
  30  * modification, are permitted provided that the following conditions
  31  * are met:
  32  *
  33  *   * Redistributions of source code must retain the above copyright
  34  *     notice, this list of conditions and the following disclaimer.
  35  *   * Redistributions in binary form must reproduce the above copyright
  36  *     notice, this list of conditions and the following disclaimer in
  37  *     the documentation and/or other materials provided with the
  38  *     distribution.
  39  *   * Neither the name of Intel Corporation nor the names of its
  40  *     contributors may be used to endorse or promote products derived
  41  *     from this software without specific prior written permission.
  42  *
  43  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  44  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  45  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  46  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  47  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  48  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  49  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  50  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  51  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  52  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  53  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  54  */
  55 
  56 #ifndef __SCU_EVENT_CODES_HEADER__
  57 #define __SCU_EVENT_CODES_HEADER__
  58 
  59 /**
  60  * This file contains the constants and macros for the SCU event codes.
  61  *
  62  *
  63  */
  64 
  65 #define SCU_EVENT_TYPE_CODE_SHIFT      24
  66 #define SCU_EVENT_TYPE_CODE_MASK       0x0F000000
  67 
  68 #define SCU_EVENT_SPECIFIC_CODE_SHIFT  18
  69 #define SCU_EVENT_SPECIFIC_CODE_MASK   0x00FC0000
  70 
  71 #define SCU_EVENT_CODE_MASK \
  72         (SCU_EVENT_TYPE_CODE_MASK | SCU_EVENT_SPECIFIC_CODE_MASK)
  73 
  74 /**
  75  * SCU_EVENT_TYPE() -
  76  *
  77  * This macro constructs an SCU event type from the type value.
  78  */
  79 #define SCU_EVENT_TYPE(type) \
  80         ((u32)(type) << SCU_EVENT_TYPE_CODE_SHIFT)
  81 
  82 /**
  83  * SCU_EVENT_SPECIFIC() -
  84  *
  85  * This macro constructs an SCU event specifier from the code value.
  86  */
  87 #define SCU_EVENT_SPECIFIC(code) \
  88         ((u32)(code) << SCU_EVENT_SPECIFIC_CODE_SHIFT)
  89 
  90 /**
  91  * SCU_EVENT_MESSAGE() -
  92  *
  93  * This macro constructs a combines an SCU event type and SCU event specifier
  94  * from the type and code values.
  95  */
  96 #define SCU_EVENT_MESSAGE(type, code) \
  97         ((type) | SCU_EVENT_SPECIFIC(code))
  98 
  99 /**
 100  * SCU_EVENT_TYPE() -
 101  *
 102  * SCU_EVENT_TYPES
 103  */
 104 #define SCU_EVENT_TYPE_SMU_COMMAND_ERROR  SCU_EVENT_TYPE(0x08)
 105 #define SCU_EVENT_TYPE_SMU_PCQ_ERROR      SCU_EVENT_TYPE(0x09)
 106 #define SCU_EVENT_TYPE_SMU_ERROR          SCU_EVENT_TYPE(0x00)
 107 #define SCU_EVENT_TYPE_TRANSPORT_ERROR    SCU_EVENT_TYPE(0x01)
 108 #define SCU_EVENT_TYPE_BROADCAST_CHANGE   SCU_EVENT_TYPE(0x02)
 109 #define SCU_EVENT_TYPE_OSSP_EVENT         SCU_EVENT_TYPE(0x03)
 110 #define SCU_EVENT_TYPE_FATAL_MEMORY_ERROR SCU_EVENT_TYPE(0x0F)
 111 #define SCU_EVENT_TYPE_RNC_SUSPEND_TX     SCU_EVENT_TYPE(0x04)
 112 #define SCU_EVENT_TYPE_RNC_SUSPEND_TX_RX  SCU_EVENT_TYPE(0x05)
 113 #define SCU_EVENT_TYPE_RNC_OPS_MISC       SCU_EVENT_TYPE(0x06)
 114 #define SCU_EVENT_TYPE_PTX_SCHEDULE_EVENT SCU_EVENT_TYPE(0x07)
 115 #define SCU_EVENT_TYPE_ERR_CNT_EVENT      SCU_EVENT_TYPE(0x0A)
 116 
 117 /**
 118  *
 119  *
 120  * SCU_EVENT_SPECIFIERS
 121  */
 122 #define SCU_EVENT_SPECIFIER_DRIVER_SUSPEND 0x20
 123 #define SCU_EVENT_SPECIFIER_RNC_RELEASE    0x00
 124 
 125 /**
 126  *
 127  *
 128  * SMU_COMMAND_EVENTS
 129  */
 130 #define SCU_EVENT_INVALID_CONTEXT_COMMAND \
 131         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_SMU_COMMAND_ERROR, 0x00)
 132 
 133 /**
 134  *
 135  *
 136  * SMU_PCQ_EVENTS
 137  */
 138 #define SCU_EVENT_UNCORRECTABLE_PCQ_ERROR \
 139         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_SMU_PCQ_ERROR, 0x00)
 140 
 141 /**
 142  *
 143  *
 144  * SMU_EVENTS
 145  */
 146 #define SCU_EVENT_UNCORRECTABLE_REGISTER_WRITE \
 147         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_SMU_ERROR, 0x02)
 148 #define SCU_EVENT_UNCORRECTABLE_REGISTER_READ \
 149         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_SMU_ERROR, 0x03)
 150 #define SCU_EVENT_PCIE_INTERFACE_ERROR \
 151         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_SMU_ERROR, 0x04)
 152 #define SCU_EVENT_FUNCTION_LEVEL_RESET \
 153         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_SMU_ERROR, 0x05)
 154 
 155 /**
 156  *
 157  *
 158  * TRANSPORT_LEVEL_ERRORS
 159  */
 160 #define SCU_EVENT_ACK_NAK_TIMEOUT_ERROR \
 161         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_TRANSPORT_ERROR, 0x00)
 162 
 163 /**
 164  *
 165  *
 166  * BROADCAST_CHANGE_EVENTS
 167  */
 168 #define SCU_EVENT_BROADCAST_CHANGE \
 169         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_BROADCAST_CHANGE, 0x01)
 170 #define SCU_EVENT_BROADCAST_RESERVED0 \
 171         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_BROADCAST_CHANGE, 0x02)
 172 #define SCU_EVENT_BROADCAST_RESERVED1 \
 173         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_BROADCAST_CHANGE, 0x03)
 174 #define SCU_EVENT_BROADCAST_SES \
 175         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_BROADCAST_CHANGE, 0x04)
 176 #define SCU_EVENT_BROADCAST_EXPANDER \
 177         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_BROADCAST_CHANGE, 0x05)
 178 #define SCU_EVENT_BROADCAST_AEN \
 179         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_BROADCAST_CHANGE, 0x06)
 180 #define SCU_EVENT_BROADCAST_RESERVED3 \
 181         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_BROADCAST_CHANGE, 0x07)
 182 #define SCU_EVENT_BROADCAST_RESERVED4 \
 183         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_BROADCAST_CHANGE, 0x08)
 184 #define SCU_EVENT_PE_SUSPENDED \
 185         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_BROADCAST_CHANGE, 0x09)
 186 
 187 /**
 188  *
 189  *
 190  * OSSP_EVENTS
 191  */
 192 #define SCU_EVENT_PORT_SELECTOR_DETECTED \
 193         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x10)
 194 #define SCU_EVENT_SENT_PORT_SELECTION \
 195         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x11)
 196 #define SCU_EVENT_HARD_RESET_TRANSMITTED \
 197         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x12)
 198 #define SCU_EVENT_HARD_RESET_RECEIVED \
 199         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x13)
 200 #define SCU_EVENT_RECEIVED_IDENTIFY_TIMEOUT \
 201         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x15)
 202 #define SCU_EVENT_LINK_FAILURE \
 203         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x16)
 204 #define SCU_EVENT_SATA_SPINUP_HOLD \
 205         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x17)
 206 #define SCU_EVENT_SAS_15_SSC \
 207         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x18)
 208 #define SCU_EVENT_SAS_15 \
 209         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x19)
 210 #define SCU_EVENT_SAS_30_SSC \
 211         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x1A)
 212 #define SCU_EVENT_SAS_30 \
 213         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x1B)
 214 #define SCU_EVENT_SAS_60_SSC \
 215         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x1C)
 216 #define SCU_EVENT_SAS_60 \
 217         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x1D)
 218 #define SCU_EVENT_SATA_15_SSC \
 219         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x1E)
 220 #define SCU_EVENT_SATA_15 \
 221         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x1F)
 222 #define SCU_EVENT_SATA_30_SSC \
 223         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x20)
 224 #define SCU_EVENT_SATA_30 \
 225         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x21)
 226 #define SCU_EVENT_SATA_60_SSC \
 227         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x22)
 228 #define SCU_EVENT_SATA_60 \
 229         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x23)
 230 #define SCU_EVENT_SAS_PHY_DETECTED \
 231         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x24)
 232 #define SCU_EVENT_SATA_PHY_DETECTED \
 233         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_OSSP_EVENT, 0x25)
 234 
 235 /**
 236  *
 237  *
 238  * FATAL_INTERNAL_MEMORY_ERROR_EVENTS
 239  */
 240 #define SCU_EVENT_TSC_RNSC_UNCORRECTABLE_ERROR \
 241         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_FATAL_MEMORY_ERROR,  0x00)
 242 #define SCU_EVENT_TC_RNC_UNCORRECTABLE_ERROR \
 243         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_FATAL_MEMORY_ERROR,  0x01)
 244 #define SCU_EVENT_ZPT_UNCORRECTABLE_ERROR \
 245         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_FATAL_MEMORY_ERROR,  0x02)
 246 
 247 /**
 248  *
 249  *
 250  * REMOTE_NODE_SUSPEND_EVENTS
 251  */
 252 #define SCU_EVENT_TL_RNC_SUSPEND_TX \
 253         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_RNC_SUSPEND_TX, 0x00)
 254 #define SCU_EVENT_TL_RNC_SUSPEND_TX_RX \
 255         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_RNC_SUSPEND_TX_RX, 0x00)
 256 #define SCU_EVENT_DRIVER_POST_RNC_SUSPEND_TX \
 257         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_RNC_SUSPEND_TX, 0x20)
 258 #define SCU_EVENT_DRIVER_POST_RNC_SUSPEND_TX_RX \
 259         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_RNC_SUSPEND_TX_RX, 0x20)
 260 
 261 /**
 262  *
 263  *
 264  * REMOTE_NODE_MISC_EVENTS
 265  */
 266 #define SCU_EVENT_POST_RCN_RELEASE \
 267         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_RNC_OPS_MISC, SCU_EVENT_SPECIFIER_RNC_RELEASE)
 268 #define SCU_EVENT_POST_IT_NEXUS_LOSS_TIMER_ENABLE \
 269         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_RNC_OPS_MISC, 0x01)
 270 #define SCU_EVENT_POST_IT_NEXUS_LOSS_TIMER_DISABLE \
 271         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_RNC_OPS_MISC, 0x02)
 272 #define SCU_EVENT_POST_RNC_COMPLETE \
 273         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_RNC_OPS_MISC, 0x03)
 274 #define SCU_EVENT_POST_RNC_INVALIDATE_COMPLETE \
 275         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_RNC_OPS_MISC, 0x04)
 276 
 277 /**
 278  *
 279  *
 280  * ERROR_COUNT_EVENT
 281  */
 282 #define SCU_EVENT_RX_CREDIT_BLOCKED_RECEIVED \
 283         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_ERR_CNT_EVENT, 0x00)
 284 #define SCU_EVENT_TX_DONE_CREDIT_TIMEOUT \
 285         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_ERR_CNT_EVENT, 0x01)
 286 #define SCU_EVENT_RX_DONE_CREDIT_TIMEOUT \
 287         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_ERR_CNT_EVENT, 0x02)
 288 
 289 /**
 290  * scu_get_event_type() -
 291  *
 292  * This macro returns the SCU event type from the event code.
 293  */
 294 #define scu_get_event_type(event_code) \
 295         ((event_code) & SCU_EVENT_TYPE_CODE_MASK)
 296 
 297 /**
 298  * scu_get_event_specifier() -
 299  *
 300  * This macro returns the SCU event specifier from the event code.
 301  */
 302 #define scu_get_event_specifier(event_code) \
 303         ((event_code) & SCU_EVENT_SPECIFIC_CODE_MASK)
 304 
 305 /**
 306  * scu_get_event_code() -
 307  *
 308  * This macro returns the combined SCU event type and SCU event specifier from
 309  * the event code.
 310  */
 311 #define scu_get_event_code(event_code) \
 312         ((event_code) & SCU_EVENT_CODE_MASK)
 313 
 314 
 315 /**
 316  *
 317  *
 318  * PTS_SCHEDULE_EVENT
 319  */
 320 #define SCU_EVENT_SMP_RESPONSE_NO_PE \
 321         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_PTX_SCHEDULE_EVENT, 0x00)
 322 #define SCU_EVENT_SPECIFIC_SMP_RESPONSE_NO_PE \
 323         scu_get_event_specifier(SCU_EVENT_SMP_RESPONSE_NO_PE)
 324 
 325 #define SCU_EVENT_TASK_TIMEOUT \
 326         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_PTX_SCHEDULE_EVENT, 0x01)
 327 #define SCU_EVENT_SPECIFIC_TASK_TIMEOUT \
 328         scu_get_event_specifier(SCU_EVENT_TASK_TIMEOUT)
 329 
 330 #define SCU_EVENT_IT_NEXUS_TIMEOUT \
 331         SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_PTX_SCHEDULE_EVENT, 0x02)
 332 #define SCU_EVENT_SPECIFIC_IT_NEXUS_TIMEOUT \
 333         scu_get_event_specifier(SCU_EVENT_IT_NEXUS_TIMEOUT)
 334 
 335 
 336 #endif /* __SCU_EVENT_CODES_HEADER__ */

/* [<][>][^][v][top][bottom][index][help] */