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