ea1a228c80597366447774aa1988868492330eb5schwartz/*
ea1a228c80597366447774aa1988868492330eb5schwartz * CDDL HEADER START
ea1a228c80597366447774aa1988868492330eb5schwartz *
ea1a228c80597366447774aa1988868492330eb5schwartz * The contents of this file are subject to the terms of the
ea1a228c80597366447774aa1988868492330eb5schwartz * Common Development and Distribution License (the "License").
ea1a228c80597366447774aa1988868492330eb5schwartz * You may not use this file except in compliance with the License.
ea1a228c80597366447774aa1988868492330eb5schwartz *
ea1a228c80597366447774aa1988868492330eb5schwartz * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
ea1a228c80597366447774aa1988868492330eb5schwartz * or http://www.opensolaris.org/os/licensing.
ea1a228c80597366447774aa1988868492330eb5schwartz * See the License for the specific language governing permissions
ea1a228c80597366447774aa1988868492330eb5schwartz * and limitations under the License.
ea1a228c80597366447774aa1988868492330eb5schwartz *
ea1a228c80597366447774aa1988868492330eb5schwartz * When distributing Covered Code, include this CDDL HEADER in each
ea1a228c80597366447774aa1988868492330eb5schwartz * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
ea1a228c80597366447774aa1988868492330eb5schwartz * If applicable, add the following below this CDDL HEADER, with the
ea1a228c80597366447774aa1988868492330eb5schwartz * fields enclosed by brackets "[]" replaced with your own identifying
ea1a228c80597366447774aa1988868492330eb5schwartz * information: Portions Copyright [yyyy] [name of copyright owner]
ea1a228c80597366447774aa1988868492330eb5schwartz *
ea1a228c80597366447774aa1988868492330eb5schwartz * CDDL HEADER END
ea1a228c80597366447774aa1988868492330eb5schwartz */
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartz/*
ea1a228c80597366447774aa1988868492330eb5schwartz * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
ea1a228c80597366447774aa1988868492330eb5schwartz * Use is subject to license terms.
ea1a228c80597366447774aa1988868492330eb5schwartz */
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartz#pragma ident "%Z%%M% %I% %E% SMI"
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartz/*
ea1a228c80597366447774aa1988868492330eb5schwartz * Tables to drive the N2 PIU performance counter driver.
ea1a228c80597366447774aa1988868492330eb5schwartz *
ea1a228c80597366447774aa1988868492330eb5schwartz * Please see n2piupc-tables.h for an explanation of how the table is put
ea1a228c80597366447774aa1988868492330eb5schwartz * together.
ea1a228c80597366447774aa1988868492330eb5schwartz */
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartz#include <sys/types.h>
ea1a228c80597366447774aa1988868492330eb5schwartz#include <sys/kstat.h>
ea1a228c80597366447774aa1988868492330eb5schwartz#include "n2piupc_tables.h"
ea1a228c80597366447774aa1988868492330eb5schwartz#include "n2piupc.h"
ea1a228c80597366447774aa1988868492330eb5schwartz#include "n2piupc_biterr.h"
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t imu_ctr_1_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_NONE, IMU01_EVT_NONE },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_CLK, IMU01_EVT_CLK },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_TOTAL_MONDO, IMU01_EVT_TOTAL_MONDO },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_TOTAL_MSI, IMU01_EVT_TOTAL_MSI },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_NAK_MONDO, IMU01_EVT_NAK_MONDO },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_EQ_WR, IMU01_EVT_EQ_WR },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_EQ_MONDO, IMU01_EVT_EQ_MONDO },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, IMU_CTR_EVT_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t imu_ctr_0_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_NONE, IMU01_EVT_NONE },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_CLK, IMU01_EVT_CLK },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_TOTAL_MONDO, IMU01_EVT_TOTAL_MONDO },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_TOTAL_MSI, IMU01_EVT_TOTAL_MSI },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_NAK_MONDO, IMU01_EVT_NAK_MONDO },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_EQ_WR, IMU01_EVT_EQ_WR },
ea1a228c80597366447774aa1988868492330eb5schwartz { IMU01_S_EVT_EQ_MONDO, IMU01_EVT_EQ_MONDO },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, IMU_CTR_EVT_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t mmu_ctr_1_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_NONE, MMU01_EVT_NONE },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_CLK, MMU01_EVT_CLK },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_TRANS, MMU01_EVT_TRANS },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_STALL, MMU01_EVT_STALL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_TRANS_MISS, MMU01_EVT_TRANS_MISS },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_TBLWLK_STALL, MMU01_EVT_TBLWLK_STALL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_BYPASS_TRANSL, MMU01_EVT_BYPASS_TRANSL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_TRANSL_TRANSL, MMU01_EVT_TRANSL_TRANSL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_FLOW_CNTL_STALL, MMU01_EVT_FLOW_CNTL_STALL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_FLUSH_CACHE_ENT, MMU01_EVT_FLUSH_CACHE_ENT },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, MMU_CTR_EVT_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t mmu_ctr_0_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_NONE, MMU01_EVT_NONE },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_CLK, MMU01_EVT_CLK },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_TRANS, MMU01_EVT_TRANS },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_STALL, MMU01_EVT_STALL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_TRANS_MISS, MMU01_EVT_TRANS_MISS },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_TBLWLK_STALL, MMU01_EVT_TBLWLK_STALL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_BYPASS_TRANSL, MMU01_EVT_BYPASS_TRANSL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_TRANSL_TRANSL, MMU01_EVT_TRANSL_TRANSL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_FLOW_CNTL_STALL, MMU01_EVT_FLOW_CNTL_STALL },
ea1a228c80597366447774aa1988868492330eb5schwartz { MMU01_S_EVT_FLUSH_CACHE_ENT, MMU01_EVT_FLUSH_CACHE_ENT },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, MMU_CTR_EVT_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t peu_ctr_2_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU2_S_EVT_NONE, PEU2_EVT_NONE },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU2_S_EVT_NONPST_CMPL_TIME, PEU2_EVT_NONPST_CMPL_TIME },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU2_S_EVT_XMIT_DATA, PEU2_EVT_XMIT_DATA },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU2_S_EVT_RCVD_DATA, PEU2_EVT_RCVD_DATA },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, PEU_CTR_2_EVT_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t peu_ctr_1_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_NONE, PEU01_EVT_NONE },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_CLK, PEU01_EVT_CLK },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_COMPL, PEU01_EVT_COMPL },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMT_POST_CR_UNAV, PEU01_EVT_XMT_POST_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMT_NPOST_CR_UNAV, PEU01_EVT_XMT_NPOST_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMT_CMPL_CR_UNAV, PEU01_EVT_XMT_CMPL_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMT_ANY_CR_UNAV, PEU01_EVT_XMT_ANY_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RETRY_CR_UNAV, PEU01_EVT_RETRY_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_MEMRD_PKT_RCVD, PEU01_EVT_MEMRD_PKT_RCVD },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_MEMWR_PKT_RCVD, PEU01_EVT_MEMWR_PKT_RCVD },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCV_CR_THRESH, PEU01_EVT_RCV_CR_THRESH },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCV_PST_HDR_CR_EXH, PEU01_EVT_RCV_PST_HDR_CR_EXH },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCV_PST_DA_CR_MPS, PEU01_EVT_RCV_PST_DA_CR_MPS },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCV_NPST_HDR_CR_EXH, PEU01_EVT_RCV_NPST_HDR_CR_EXH },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCVR_L0S, PEU01_EVT_RCVR_L0S },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCVR_L0S_TRANS, PEU01_EVT_RCVR_L0S_TRANS },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMTR_L0S, PEU01_EVT_XMTR_L0S },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMTR_L0S_TRANS, PEU01_EVT_XMTR_L0S_TRANS },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCVR_ERR, PEU01_EVT_RCVR_ERR },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_BAD_TLP, PEU01_EVT_BAD_TLP },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_BAD_DLLP, PEU01_EVT_BAD_DLLP },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_REPLAY_ROLLOVER, PEU01_EVT_REPLAY_ROLLOVER },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_REPLAY_TMO, PEU01_EVT_REPLAY_TMO },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, PEU_CTR_01_EVT_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t peu_ctr_0_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_NONE, PEU01_EVT_NONE },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_CLK, PEU01_EVT_CLK },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_COMPL, PEU01_EVT_COMPL },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMT_POST_CR_UNAV, PEU01_EVT_XMT_POST_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMT_NPOST_CR_UNAV, PEU01_EVT_XMT_NPOST_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMT_CMPL_CR_UNAV, PEU01_EVT_XMT_CMPL_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMT_ANY_CR_UNAV, PEU01_EVT_XMT_ANY_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RETRY_CR_UNAV, PEU01_EVT_RETRY_CR_UNAV },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_MEMRD_PKT_RCVD, PEU01_EVT_MEMRD_PKT_RCVD },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_MEMWR_PKT_RCVD, PEU01_EVT_MEMWR_PKT_RCVD },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCV_CR_THRESH, PEU01_EVT_RCV_CR_THRESH },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCV_PST_HDR_CR_EXH, PEU01_EVT_RCV_PST_HDR_CR_EXH },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCV_PST_DA_CR_MPS, PEU01_EVT_RCV_PST_DA_CR_MPS },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCV_NPST_HDR_CR_EXH, PEU01_EVT_RCV_NPST_HDR_CR_EXH },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCVR_L0S, PEU01_EVT_RCVR_L0S },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCVR_L0S_TRANS, PEU01_EVT_RCVR_L0S_TRANS },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMTR_L0S, PEU01_EVT_XMTR_L0S },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_XMTR_L0S_TRANS, PEU01_EVT_XMTR_L0S_TRANS },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_RCVR_ERR, PEU01_EVT_RCVR_ERR },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_BAD_TLP, PEU01_EVT_BAD_TLP },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_BAD_DLLP, PEU01_EVT_BAD_DLLP },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_REPLAY_ROLLOVER, PEU01_EVT_REPLAY_ROLLOVER },
ea1a228c80597366447774aa1988868492330eb5schwartz { PEU01_S_EVT_REPLAY_TMO, PEU01_EVT_REPLAY_TMO },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, PEU_CTR_01_EVT_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t bterr_ctr_3_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_NONE, BTERR3_EVT_ENC_NONE },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_ENC_ALL, BTERR3_EVT_ENC_ALL },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_ENC_LANE_0, BTERR3_EVT_ENC_LANE_0 },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_ENC_LANE_1, BTERR3_EVT_ENC_LANE_1 },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_ENC_LANE_2, BTERR3_EVT_ENC_LANE_2 },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_ENC_LANE_3, BTERR3_EVT_ENC_LANE_3 },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_ENC_LANE_4, BTERR3_EVT_ENC_LANE_4 },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_ENC_LANE_5, BTERR3_EVT_ENC_LANE_5 },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_ENC_LANE_6, BTERR3_EVT_ENC_LANE_6 },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR3_S_EVT_ENC_LANE_7, BTERR3_EVT_ENC_LANE_7 },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, BTERR_CTR_3_EVT_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t bterr_ctr_2_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR2_S_EVT_PRE, BTERR2_EVT_PRE },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, NONPROG_DUMMY_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t bterr_ctr_1_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR1_S_EVT_BTLP, BTERR1_EVT_BTLP },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, NONPROG_DUMMY_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_event_t bterr_ctr_0_evts[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR0_S_EVT_RESET, BTERR0_EVT_RESET },
ea1a228c80597366447774aa1988868492330eb5schwartz { BTERR0_S_EVT_BDLLP, BTERR0_EVT_BDLLP },
ea1a228c80597366447774aa1988868492330eb5schwartz { COMMON_S_CLEAR_PIC, BTERR_CTR_0_EVT_MASK }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_regsel_fld_t imu_regsel_flds[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { imu_ctr_0_evts, NUM_EVTS(imu_ctr_0_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz IMU_CTR_EVT_MASK, IMU_CTR_0_EVT_OFF },
ea1a228c80597366447774aa1988868492330eb5schwartz { imu_ctr_1_evts, NUM_EVTS(imu_ctr_1_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz IMU_CTR_EVT_MASK, IMU_CTR_1_EVT_OFF }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_regsel_fld_t mmu_regsel_flds[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { mmu_ctr_0_evts, NUM_EVTS(mmu_ctr_0_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz MMU_CTR_EVT_MASK, MMU_CTR_0_EVT_OFF },
ea1a228c80597366447774aa1988868492330eb5schwartz { mmu_ctr_1_evts, NUM_EVTS(mmu_ctr_1_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz MMU_CTR_EVT_MASK, MMU_CTR_1_EVT_OFF }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_regsel_fld_t peu_regsel_flds[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { peu_ctr_0_evts, NUM_EVTS(peu_ctr_0_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz PEU_CTR_01_EVT_MASK, PEU_CTR_0_EVT_OFF },
ea1a228c80597366447774aa1988868492330eb5schwartz { peu_ctr_1_evts, NUM_EVTS(peu_ctr_1_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz PEU_CTR_01_EVT_MASK, PEU_CTR_1_EVT_OFF },
ea1a228c80597366447774aa1988868492330eb5schwartz { peu_ctr_2_evts, NUM_EVTS(peu_ctr_2_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz PEU_CTR_2_EVT_MASK, PEU_CTR_2_EVT_OFF }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_regsel_fld_t bterr_regsel_flds[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { bterr_ctr_0_evts, NUM_EVTS(bterr_ctr_0_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz BTERR_CTR_ENABLE_MASK, BTERR_CTR_ENABLE_OFF },
ea1a228c80597366447774aa1988868492330eb5schwartz { bterr_ctr_1_evts, NUM_EVTS(bterr_ctr_1_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz NONPROG_DUMMY_MASK, NONPROG_DUMMY_OFF },
ea1a228c80597366447774aa1988868492330eb5schwartz { bterr_ctr_2_evts, NUM_EVTS(bterr_ctr_2_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz NONPROG_DUMMY_MASK, NONPROG_DUMMY_OFF },
ea1a228c80597366447774aa1988868492330eb5schwartz { bterr_ctr_3_evts, NUM_EVTS(bterr_ctr_3_evts),
ea1a228c80597366447774aa1988868492330eb5schwartz BTERR_CTR_3_EVT_MASK, BTERR_CTR_3_EVT_OFF }
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_regsel_t imu_regsel = {
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_IMU_SEL,
ea1a228c80597366447774aa1988868492330eb5schwartz imu_regsel_flds,
ea1a228c80597366447774aa1988868492330eb5schwartz NUM_FLDS(imu_regsel_flds)
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_regsel_t mmu_regsel = {
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_MMU_SEL,
ea1a228c80597366447774aa1988868492330eb5schwartz mmu_regsel_flds,
ea1a228c80597366447774aa1988868492330eb5schwartz NUM_FLDS(mmu_regsel_flds)
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_regsel_t peu_regsel = {
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_PEU_SEL,
ea1a228c80597366447774aa1988868492330eb5schwartz peu_regsel_flds,
ea1a228c80597366447774aa1988868492330eb5schwartz NUM_FLDS(peu_regsel_flds)
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_regsel_t bit_err_regsel = {
ea1a228c80597366447774aa1988868492330eb5schwartz SW_N2PIU_BITERR_SEL,
ea1a228c80597366447774aa1988868492330eb5schwartz bterr_regsel_flds,
ea1a228c80597366447774aa1988868492330eb5schwartz NUM_FLDS(bterr_regsel_flds)
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartz/* reg off, reg size, field mask */
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_cntr_t imu_cntrs[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { HVIO_N2PIU_PERFREG_IMU_CNT0, FULL64BIT,
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_IMU_CNT0, 0ULL},
ea1a228c80597366447774aa1988868492330eb5schwartz { HVIO_N2PIU_PERFREG_IMU_CNT1, FULL64BIT,
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_IMU_CNT1, 0ULL}
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_cntr_t mmu_cntrs[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { HVIO_N2PIU_PERFREG_MMU_CNT0, FULL64BIT,
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_MMU_CNT0, 0ULL},
ea1a228c80597366447774aa1988868492330eb5schwartz { HVIO_N2PIU_PERFREG_MMU_CNT1, FULL64BIT,
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_MMU_CNT1, 0ULL}
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_cntr_t peu_cntrs[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { HVIO_N2PIU_PERFREG_PEU_CNT0, FULL64BIT,
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_PEU_CNT0, 0ULL},
ea1a228c80597366447774aa1988868492330eb5schwartz { HVIO_N2PIU_PERFREG_PEU_CNT1, FULL64BIT,
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_PEU_CNT1, 0ULL},
ea1a228c80597366447774aa1988868492330eb5schwartz { HVIO_N2PIU_PERFREG_PEU_CNT2, FULL64BIT,
ea1a228c80597366447774aa1988868492330eb5schwartz HVIO_N2PIU_PERFREG_PEU_CNT2, 0ULL}
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_cntr_t bit_err_cntrs[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz { SW_N2PIU_BITERR_CNT1_DATA, BE1_BAD_DLLP_MASK,
ea1a228c80597366447774aa1988868492330eb5schwartz SW_N2PIU_BITERR_CLR, BTERR_CTR_CLR},
ea1a228c80597366447774aa1988868492330eb5schwartz { SW_N2PIU_BITERR_CNT1_DATA, BE1_BAD_TLP_MASK, NO_REGISTER, 0},
ea1a228c80597366447774aa1988868492330eb5schwartz { SW_N2PIU_BITERR_CNT1_DATA, BE1_BAD_PRE_MASK, NO_REGISTER, 0},
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartz /* Note: this register is a layered SW-implemented register. */
ea1a228c80597366447774aa1988868492330eb5schwartz { SW_N2PIU_BITERR_CNT2_DATA, BE2_8_10_MASK, NO_REGISTER, 0},
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_grp_t imu_grp = {
ea1a228c80597366447774aa1988868492330eb5schwartz "imu",
ea1a228c80597366447774aa1988868492330eb5schwartz &imu_regsel,
ea1a228c80597366447774aa1988868492330eb5schwartz imu_cntrs,
ea1a228c80597366447774aa1988868492330eb5schwartz NUM_CTRS(imu_cntrs),
ea1a228c80597366447774aa1988868492330eb5schwartz NULL /* Name kstats pointer, filled in at runtime. */
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_grp_t mmu_grp = {
ea1a228c80597366447774aa1988868492330eb5schwartz "mmu",
ea1a228c80597366447774aa1988868492330eb5schwartz &mmu_regsel,
ea1a228c80597366447774aa1988868492330eb5schwartz mmu_cntrs,
ea1a228c80597366447774aa1988868492330eb5schwartz NUM_CTRS(mmu_cntrs),
ea1a228c80597366447774aa1988868492330eb5schwartz NULL /* Name kstats pointer, filled in at runtime. */
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_grp_t peu_grp = {
ea1a228c80597366447774aa1988868492330eb5schwartz "peu",
ea1a228c80597366447774aa1988868492330eb5schwartz &peu_regsel,
ea1a228c80597366447774aa1988868492330eb5schwartz peu_cntrs,
ea1a228c80597366447774aa1988868492330eb5schwartz NUM_CTRS(peu_cntrs),
ea1a228c80597366447774aa1988868492330eb5schwartz NULL /* Name kstats pointer, filled in at runtime. */
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzstatic n2piu_grp_t bit_err_grp = {
ea1a228c80597366447774aa1988868492330eb5schwartz "bterr",
ea1a228c80597366447774aa1988868492330eb5schwartz &bit_err_regsel,
ea1a228c80597366447774aa1988868492330eb5schwartz bit_err_cntrs,
ea1a228c80597366447774aa1988868492330eb5schwartz NUM_CTRS(bit_err_cntrs),
ea1a228c80597366447774aa1988868492330eb5schwartz NULL /* Name kstats pointer, filled in at runtime. */
ea1a228c80597366447774aa1988868492330eb5schwartz};
ea1a228c80597366447774aa1988868492330eb5schwartz
ea1a228c80597366447774aa1988868492330eb5schwartzn2piu_grp_t *leaf_grps[] = {
ea1a228c80597366447774aa1988868492330eb5schwartz &imu_grp,
ea1a228c80597366447774aa1988868492330eb5schwartz &mmu_grp,
ea1a228c80597366447774aa1988868492330eb5schwartz &peu_grp,
ea1a228c80597366447774aa1988868492330eb5schwartz &bit_err_grp,
ea1a228c80597366447774aa1988868492330eb5schwartz NULL
ea1a228c80597366447774aa1988868492330eb5schwartz};