4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * CDDL HEADER START
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * The contents of this file are subject to the terms of the
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Common Development and Distribution License (the "License").
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * You may not use this file except in compliance with the License.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * or http://www.opensolaris.org/os/licensing.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * See the License for the specific language governing permissions
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * and limitations under the License.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * When distributing Covered Code, include this CDDL HEADER in each
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * If applicable, add the following below this CDDL HEADER, with the
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * fields enclosed by brackets "[]" replaced with your own identifying
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * information: Portions Copyright [yyyy] [name of copyright owner]
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * CDDL HEADER END
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Use is subject to license terms.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * PMC 8x6G Message Passing Interface Definitions
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#ifndef _PMCS_MPI_H
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define _PMCS_MPI_H
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#ifdef __cplusplus
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dhextern "C" {
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#endif
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_DWRD(x) (x << 2)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * MPI Configuration Table Offsets
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_AS PMCS_DWRD(0) /* ASCII Signature */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_SIGNATURE 0x53434D50
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IR PMCS_DWRD(1) /* Interface Revision */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_REVISION1 1
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_FW PMCS_DWRD(2) /* Firmware Version */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_TYPE(hwp) (hwp->fw & 0xf)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_TYPE_RELEASED 0
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_TYPE_DEVELOPMENT 1
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_TYPE_ALPHA 2
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_TYPE_BETA 3
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_VARIANT(hwp) ((hwp->fw >> 4) & 0xf)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_MAJOR(hwp) ((hwp->fw >> 24) & 0xff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_MINOR(hwp) ((hwp->fw >> 16) & 0xff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_MICRO(hwp) ((hwp->fw >> 8) & 0xff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_REV(hwp) ((hwp->fw >> 8) & 0xffffff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FW_VERSION(maj, min, mic) ((maj << 16)|(min << 8)|mic)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_MOIO PMCS_DWRD(3) /* Maximum # of outstandiong I/Os */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_INFO0 PMCS_DWRD(4) /* Maximum S/G Elem, Max Dev Handle */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MSGL(x) (x & 0xffff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MD(x) ((x >> 16) & 0xffff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_INFO1 PMCS_DWRD(5) /* Info #0 */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MNIQ(x) (x & 0xff) /* Max # of Inbound Queues */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MNOQ(x) ((x >> 8) & 0xff) /* Max # of Outbound Queues */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_HPIQ(x) ((x >> 16) & 0x1) /* High Pri Queue Supported */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_ICS(x) ((x >> 18) & 0x1) /* Interrupt Coalescing */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_NPHY(x) ((x >> 19) & 0x3f) /* Numbers of PHYs */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_SASREV(x) ((x >> 25) & 0x7) /* SAS Revision Specification */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_GSTO PMCS_DWRD(6) /* General Status Table Offset */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IQCTO PMCS_DWRD(7) /* Inbound Queue Config Table Offset */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_OQCTO PMCS_DWRD(8) /* Outbound Queue Config Table Offset */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_INFO2 PMCS_DWRD(9) /* Info #1 */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define IQ_NORMAL_PRI_DEPTH_SHIFT 0
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define IQ_NORMAL_PRI_DEPTH_MASK 0xff
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define IQ_HIPRI_PRI_DEPTH_SHIFT 8
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define IQ_HIPRI_PRI_DEPTH_MASK 0xff00
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define GENERAL_EVENT_OQ_SHIFT 16
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define GENERAL_EVENT_OQ_MASK 0xff0000
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define DEVICE_HANDLE_REMOVED_SHIFT 24
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define DEVICE_HANDLE_REMOVED_MASK 0xff000000ul
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_EVQS PMCS_DWRD(0xA) /* SAS Event Queues */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_EVQSET(pwp, oq, phy) { \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t woff = phy / 4; \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t shf = (phy % 4) * 8; \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t tmp = pmcs_rd_mpi_tbl(pwp, PMCS_MPI_EVQS + (woff << 2)); \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh tmp &= ~(0xff << shf); \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh tmp |= ((oq & 0xff) << shf); \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh pmcs_wr_mpi_tbl(pwp, PMCS_MPI_EVQS + (woff << 2), tmp); \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh}
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_SNCQ PMCS_DWRD(0xC) /* Sata NCQ Notification Queues */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_NCQSET(pwp, oq, phy) { \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t woff = phy / 4; \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t shf = (phy % 4) * 8; \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh uint32_t tmp = pmcs_rd_mpi_tbl(pwp, PMCS_MPI_SNCQ + (woff << 2)); \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh tmp &= ~(0xff << shf); \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh tmp |= ((oq & 0xff) << shf); \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh pmcs_wr_mpi_tbl(pwp, PMCS_MPI_SNCQ + (woff << 2), tmp); \
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh}
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * I_T Nexus Target Event Notification Queue
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IT_NTENQ PMCS_DWRD(0xE)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * SSP Target Event Notification Queue
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_SSP_TENQ PMCS_DWRD(0x10)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister * I/O Abort Delay
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister#define PMCS_MPI_IOABTDLY PMCS_DWRD(0x12)
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister/*
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister * Customization Setting
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister */
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister#define PMCS_MPI_CUSTSET PMCS_DWRD(0x13)
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister#define PMCS_MPI_CUST_HW_RSC_BSY_ALT 0x1 /* Bit 0 */
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister#define PMCS_MPI_CUST_ABORT_ITNL 0x2 /* Bit 1 */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * This specifies a log buffer in host memory for the MSGU.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_MELBAH PMCS_DWRD(0x14) /* MSGU Log Buffer high 32 bits */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_MELBAL PMCS_DWRD(0x15) /* MSGU Log Buffer low 32 bits */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_MELBS PMCS_DWRD(0x16) /* size in bytes of MSGU log buffer */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_MELSEV PMCS_DWRD(0x17) /* Log Severity */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * This specifies a log buffer in host memory for the IOP.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IELBAH PMCS_DWRD(0x18) /* IOP Log Buffer high 32 bits */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IELBAL PMCS_DWRD(0x19) /* IOP Log Buffer low 32 bits */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IELBS PMCS_DWRD(0x1A) /* size in bytes of IOP log buffer */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IELSEV PMCS_DWRD(0x1B) /* Log Severity */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Fatal Error Handling
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_FERR PMCS_DWRD(0x1C)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FERRIE 0x1 /* Fatal Err Interrupt Enable */
c280a92b706bf16eee2a24cc328c9b78d71cb38cDavid Hollister#define PMCS_PCAD64 0x2 /* PI/CI addresses are 64-bit */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FERIV_MASK 0xff00 /* Fatal Err Interrupt Mask */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FERIV_SHIFT 8 /* Fatal Err Interrupt Shift */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IRAE 0x20000 /* Interrupt Reassertion Enable */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IRAU 0x40000 /* Interrupt Reassertion Unit */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_IRAD_MASK 0xfff80000 /* Reassertion Delay Mask */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FERDOMSGU PMCS_DWRD(0x1D)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FERDLMSGU PMCS_DWRD(0x1E)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FERDOIOP PMCS_DWRD(0x1F)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_FERDLIOP PMCS_DWRD(0x20)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * MPI GST Table Offsets
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_GST_BASE 0
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_GST_IQFRZ0 (PMCS_GST_BASE + PMCS_DWRD(1))
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_GST_IQFRZ1 (PMCS_GST_BASE + PMCS_DWRD(2))
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_GST_MSGU_TICK (PMCS_GST_BASE + PMCS_DWRD(3))
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_GST_IOP_TICK (PMCS_GST_BASE + PMCS_DWRD(4))
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_GST_PHY_INFO(x) (PMCS_GST_BASE + PMCS_DWRD(0x6) + PMCS_DWRD(x))
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_GST_RERR_BASE (PMCS_GST_BASE + PMCS_DWRD(0x11))
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_GST_RERR_INFO(x) (PMCS_GST_RERR_BASE + PMCS_DWRD(x))
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_S(x) ((x) & 0x7)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_QF(x) (((x) >> 3) & 0x1)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_GSTLEN(x) (((x) >> 4) & 0x3fff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_HMI_ERR(x) (((x) >> 16) & 0xffff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_STATE_NIL 0
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_STATE_INIT 1
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_STATE_DEINIT 2
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_MPI_STATE_ERR 3
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * MPI Inbound Queue Configuration Table Offsets
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Each Inbound Queue configuration area consumes 8 DWORDS (32 bit words),
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * or 32 bytes.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQC_PARMX(x) ((x) << 5)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQBAHX(x) (((x) << 5) + 4)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQBALX(x) (((x) << 5) + 8)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQCIBAHX(x) (((x) << 5) + 12)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQCIBALX(x) (((x) << 5) + 16)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQPIBARX(x) (((x) << 5) + 20)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQPIOFFX(x) (((x) << 5) + 24)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQDX(x) ((x) & 0xffff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQESX(x) (((x) >> 16) & 0x3fff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_IQPX(x) (((x) >> 30) & 0x3)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh/*
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * MPI Outbound Queue Configuration Table Offsets
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh *
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * Each Outbound Queue configuration area consumes 9 DWORDS (32 bit words),
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh * or 36 bytes.
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh */
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQC_PARMX(x) (x * 36)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQBAHX(x) ((x * 36) + 4)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQBALX(x) ((x * 36) + 8)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQPIBAHX(x) ((x * 36) + 12)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQPIBALX(x) ((x * 36) + 16)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQCIBARX(x) ((x * 36) + 20)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQCIOFFX(x) ((x * 36) + 24)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQIPARM(x) ((x * 36) + 28)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQDICX(x) ((x * 36) + 32)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQDX(x) ((x) & 0xffff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQESX(x) (((x) >> 16) & 0x3fff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQICT(x) ((x) & 0xffff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQICC(x) (((x) >> 16) & 0xff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define PMCS_OQIV(x) (((x) >> 24) & 0xff)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#define OQIEX (1 << 30)
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#ifdef __cplusplus
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh}
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#endif
4c06356b0f0fffb4fc1b6eccc8e5d8e2254a84d6dh#endif /* _PMCS_MPI_H */