linux/drivers/scsi/isci/scu_event_codes.h
<<
>>
Prefs
   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__ */
 337