337 lines · c
1/*2 * This file is provided under a dual BSD/GPLv2 license. When using or3 * redistributing this file, you may do so under either license.4 *5 * GPL LICENSE SUMMARY6 *7 * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.8 *9 * This program is free software; you can redistribute it and/or modify10 * it under the terms of version 2 of the GNU General Public License as11 * published by the Free Software Foundation.12 *13 * This program is distributed in the hope that it will be useful, but14 * WITHOUT ANY WARRANTY; without even the implied warranty of15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU16 * General Public License for more details.17 *18 * You should have received a copy of the GNU General Public License19 * along with this program; if not, write to the Free Software20 * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.21 * The full GNU General Public License is included in this distribution22 * in the file called LICENSE.GPL.23 *24 * BSD LICENSE25 *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 without30 * modification, are permitted provided that the following conditions31 * are met:32 *33 * * Redistributions of source code must retain the above copyright34 * notice, this list of conditions and the following disclaimer.35 * * Redistributions in binary form must reproduce the above copyright36 * notice, this list of conditions and the following disclaimer in37 * the documentation and/or other materials provided with the38 * distribution.39 * * Neither the name of Intel Corporation nor the names of its40 * contributors may be used to endorse or promote products derived41 * from this software without specific prior written permission.42 *43 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS44 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT45 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR46 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT47 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,48 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT49 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,50 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY51 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT52 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE53 * 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 2466#define SCU_EVENT_TYPE_CODE_MASK 0x0F00000067 68#define SCU_EVENT_SPECIFIC_CODE_SHIFT 1869#define SCU_EVENT_SPECIFIC_CODE_MASK 0x00FC000070 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 specifier94 * 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_TYPES103 */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_SPECIFIERS121 */122#define SCU_EVENT_SPECIFIER_DRIVER_SUSPEND 0x20123#define SCU_EVENT_SPECIFIER_RNC_RELEASE 0x00124 125/**126 *127 *128 * SMU_COMMAND_EVENTS129 */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_EVENTS137 */138#define SCU_EVENT_UNCORRECTABLE_PCQ_ERROR \139 SCU_EVENT_MESSAGE(SCU_EVENT_TYPE_SMU_PCQ_ERROR, 0x00)140 141/**142 *143 *144 * SMU_EVENTS145 */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_ERRORS159 */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_EVENTS167 */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_EVENTS191 */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_EVENTS239 */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_EVENTS251 */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_EVENTS265 */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_EVENT281 */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 from309 * 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_EVENT319 */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