root/usr/src/uts/sun4u/io/px/oberon_regs.h
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#ifndef _SYS_OBERON_REGS_H
#define _SYS_OBERON_REGS_H

#ifdef  __cplusplus
extern "C" {
#endif


#define UBC_ERROR_LOG_ENABLE                    0x471000
#define UBC_ERROR_STATUS_CLEAR                  0x471018
#define UBC_INTERRUPT_ENABLE                    0x471008
#define UBC_INTERRUPT_STATUS                    0x471010
#define UBC_INTERRUPT_STATUS_DMARDUEA_P         0
#define UBC_INTERRUPT_STATUS_DMAWTUEA_P         1
#define UBC_INTERRUPT_STATUS_MEMRDAXA_P         2
#define UBC_INTERRUPT_STATUS_MEMWTAXA_P         3
#define UBC_INTERRUPT_STATUS_DMARDUEB_P         8
#define UBC_INTERRUPT_STATUS_DMAWTUEB_P         9
#define UBC_INTERRUPT_STATUS_MEMRDAXB_P         10
#define UBC_INTERRUPT_STATUS_MEMWTAXB_P         11
#define UBC_INTERRUPT_STATUS_PIOWTUE_P          16
#define UBC_INTERRUPT_STATUS_PIOWBEUE_P         17
#define UBC_INTERRUPT_STATUS_PIORBEUE_P         18
#define UBC_INTERRUPT_STATUS_DMARDUEA_S         32
#define UBC_INTERRUPT_STATUS_DMAWTUEA_S         33
#define UBC_INTERRUPT_STATUS_MEMRDAXA_S         34
#define UBC_INTERRUPT_STATUS_MEMWTAXA_S         35
#define UBC_INTERRUPT_STATUS_DMARDUEB_S         40
#define UBC_INTERRUPT_STATUS_DMAWTUEB_S         41
#define UBC_INTERRUPT_STATUS_MEMRDAXB_S         42
#define UBC_INTERRUPT_STATUS_MEMWTAXB_S         43
#define UBC_INTERRUPT_STATUS_PIOWTUE_S          48
#define UBC_INTERRUPT_STATUS_PIOWBEUE_S         49
#define UBC_INTERRUPT_STATUS_PIORBEUE_S         50
#define UBC_ERROR_STATUS_SET                    0x471020
#define UBC_PERFORMANCE_COUNTER_SELECT          0x472000
#define UBC_PERFORMANCE_COUNTER_ZERO            0x472008
#define UBC_PERFORMANCE_COUNTER_ONE             0x472010
#define UBC_PERFORMANCE_COUNTER_SEL_MASKS       0x3f3f
#define UBC_MEMORY_UE_LOG                       0x471028
#define UBC_MEMORY_UE_LOG_EID                   60
#define UBC_MEMORY_UE_LOG_EID_MASK              0x3
#define UBC_MEMORY_UE_LOG_MARKED                48
#define UBC_MEMORY_UE_LOG_MARKED_MASK           0x3fff
#define UBC_MARKED_MAX_CPUID_MASK               0x1ff
/*
 * Class qualifiers on errors for which EID is valid.
 */
#define UBC_EID_MEM     0
#define UBC_EID_CHANNEL 1
#define UBC_EID_CPU     2
#define UBC_EID_PATH    3
/*
 * Mask within UBC_INTERRUPT_STATUS for Leaf-A errors
 */
#define UBC_INTERRUPT_STATUS_LEAFA      \
        ((1UL << UBC_INTERRUPT_STATUS_DMARDUEA_P) |\
        (1UL << UBC_INTERRUPT_STATUS_DMAWTUEA_P) |\
        (1UL << UBC_INTERRUPT_STATUS_MEMRDAXA_P) |\
        (1UL << UBC_INTERRUPT_STATUS_MEMWTAXA_P) |\
        (1UL << UBC_INTERRUPT_STATUS_DMARDUEA_S) |\
        (1UL << UBC_INTERRUPT_STATUS_DMAWTUEA_S) |\
        (1UL << UBC_INTERRUPT_STATUS_MEMRDAXA_S) |\
        (1UL << UBC_INTERRUPT_STATUS_MEMWTAXA_S))
/*
 * Mask within UBC_INTERRUPT_STATUS for Leaf-B errors
 */
#define UBC_INTERRUPT_STATUS_LEAFB      \
        ((1UL << UBC_INTERRUPT_STATUS_DMARDUEB_P) |\
        (1UL << UBC_INTERRUPT_STATUS_DMAWTUEB_P) |\
        (1UL << UBC_INTERRUPT_STATUS_MEMRDAXB_P) |\
        (1UL << UBC_INTERRUPT_STATUS_MEMWTAXB_P) |\
        (1UL << UBC_INTERRUPT_STATUS_DMARDUEB_S) |\
        (1UL << UBC_INTERRUPT_STATUS_DMAWTUEB_S) |\
        (1UL << UBC_INTERRUPT_STATUS_MEMRDAXB_S) |\
        (1UL << UBC_INTERRUPT_STATUS_MEMWTAXB_S))

#define OBERON_UBC_ID_MAX               64
#define OBERON_UBC_ID_IOC               0
#define OBERON_UBC_ID_LSB               2

#define OBERON_PORT_ID_LEAF             0
#define OBERON_PORT_ID_LEAF_MASK        0x1
#define OBERON_PORT_ID_IOC              1
#define OBERON_PORT_ID_IOC_MASK         0x03
#define OBERON_PORT_ID_LSB              4
#define OBERON_PORT_ID_LSB_MASK         0x0F

/* values for OBERON_PORT_ID_LEAF field */
#define OBERON_PORT_ID_LEAF_A           0
#define OBERON_PORT_ID_LEAF_B           1

#define INTERRUPT_MAPPING_ENTRIES_T_DESTID      21
#define INTERRUPT_MAPPING_ENTRIES_T_DESTID_MASK 0x3ff

#define OBERON_TLU_CONTROL_DRN_TR_DIS           35
#define OBERON_TLU_CONTROL_CPLEP_DEN            34
#define OBERON_TLU_CONTROL_ECRCCHK_DIS          33
#define OBERON_TLU_CONTROL_ECRCGEN_DIS          32

#define TLU_SLOT_CAPABILITIES_HP                6
#define TLU_SLOT_CAPABILITIES_HPSUP             5
#define TLU_SLOT_CAPABILITIES_PWINDP            4
#define TLU_SLOT_CAPABILITIES_ATINDP            3
#define TLU_SLOT_CAPABILITIES_MRLSP             2
#define TLU_SLOT_CAPABILITIES_PWCNTLP           1
#define TLU_SLOT_CAPABILITIES_ATBTNP            0

#define DLU_INTERRUPT_MASK                                      0xe2048
#define DLU_INTERRUPT_MASK_MSK_INTERRUPT_EN                     31
#define DLU_INTERRUPT_MASK_MSK_LINK_LAYER                       5
#define DLU_INTERRUPT_MASK_MSK_PHY_ERROR                        4
#define DLU_LINK_LAYER_CONFIG                                   0xe2200
#define DLU_LINK_LAYER_CONFIG_VC0_EN                            8
#define DLU_LINK_LAYER_CONFIG_TLP_XMIT_FC_EN                    3
#define DLU_LINK_LAYER_CONFIG_FREQ_ACK_ENABLE                   2
#define DLU_LINK_LAYER_CONFIG_RETRY_DISABLE                     1
#define DLU_LINK_LAYER_STATUS                                   0xe2208
#define DLU_LINK_LAYER_STATUS_LNK_STATE_MACH_STS_MASK           0x7
#define DLU_LINK_LAYER_STATUS_LNK_STATE_MACH_STS_DL_INACTIVE    0x1
#define DLU_LINK_LAYER_STATUS_LNK_STATE_MACH_STS_DL_INIT        0x2
#define DLU_LINK_LAYER_STATUS_LNK_STATE_MACH_STS_DL_ACTIVE      0x4
#define DLU_LINK_LAYER_STATUS_DLUP_STS                          3
#define DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS                    4
#define DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_MASK               0x3
#define DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_FC_IDLE            0x0
#define DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_FC_INIT_1          0x1
#define DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_FC_INIT_2          0x3
#define DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_FC_INIT_DONE       0x2
#define DLU_LINK_LAYER_INTERRUPT_AND_STATUS                     0xe2210
#define DLU_LINK_LAYER_INTERRUPT_AND_STATUS_INT_LINK_ERR_ACT    31
#define DLU_LINK_LAYER_INTERRUPT_AND_STATUS_INT_PARABUS_PE      23
#define DLU_LINK_LAYER_INTERRUPT_AND_STATUS_INT_UNSPRTD_DLLP    22
#define DLU_LINK_LAYER_INTERRUPT_AND_STATUS_INT_SRC_ERR_TLP     17
#define DLU_LINK_LAYER_INTERRUPT_MASK                           0xe2220
#define DLU_LINK_LAYER_INTERRUPT_MASK_MSK_LINK_ERR_ACT          31
#define DLU_LINK_LAYER_INTERRUPT_MASK_MSK_PARABUS_PE            23
#define DLU_LINK_LAYER_INTERRUPT_MASK_MSK_UNSPRTD_DLLP          22
#define DLU_LINK_LAYER_INTERRUPT_MASK_MSK_SRC_ERR_TLP           17
#define DLU_FLOW_CONTROL_UPDATE_CONTROL                         0xe2240
#define DLU_FLOW_CONTROL_UPDATE_CONTROL_FC0_U_C_EN              2
#define DLU_FLOW_CONTROL_UPDATE_CONTROL_FC0_U_NP_EN             1
#define DLU_FLOW_CONTROL_UPDATE_CONTROL_FC0_U_P_EN              0
#define DLU_TXLINK_REPLAY_TIMER_THRESHOLD                       0xe2410
#define DLU_TXLINK_REPLAY_TIMER_THRESHOLD_RPLAY_TMR_THR         0
#define DLU_TXLINK_REPLAY_TIMER_THRESHOLD_RPLAY_TMR_THR_MASK    0xfffff
#define DLU_TXLINK_REPLAY_TIMER_THRESHOLD_DEFAULT               0xc9
#define DLU_PORT_CONTROL                                        0xe2b00
#define DLU_PORT_CONTROL_CK_EN                                  0
#define DLU_PORT_STATUS                                         0xe2b08

#define MMU_INTERRUPT_STATUS_TTC_DUE_P                          8
#define MMU_INTERRUPT_STATUS_TTC_DUE_S                          40
#define ILU_INTERRUPT_STATUS_IHB_UE_P                           4
#define ILU_INTERRUPT_STATUS_IHB_UE_S                           36
#define TLU_UNCORRECTABLE_ERROR_STATUS_CLEAR_ECRC_P             19
#define TLU_UNCORRECTABLE_ERROR_STATUS_CLEAR_ECRC_S             51
#define TLU_UNCORRECTABLE_ERROR_STATUS_CLEAR_POIS_P             12
#define TLU_UNCORRECTABLE_ERROR_STATUS_CLEAR_POIS_S             44
#define TLU_OTHER_EVENT_STATUS_CLEAR_EIUE_P                     0
#define TLU_OTHER_EVENT_STATUS_CLEAR_EIUE_S                     32
#define TLU_OTHER_EVENT_STATUS_CLEAR_ERBUE_P                    1
#define TLU_OTHER_EVENT_STATUS_CLEAR_ERBUE_S                    33
#define TLU_OTHER_EVENT_STATUS_CLEAR_TLUEITMO_P                 7
#define TLU_OTHER_EVENT_STATUS_CLEAR_TLUEITMO_S                 39
#define TLU_OTHER_EVENT_STATUS_CLEAR_EHBUE_P                    12
#define TLU_OTHER_EVENT_STATUS_CLEAR_EHBUE_S                    44
#define TLU_OTHER_EVENT_STATUS_CLEAR_EDBUE_P                    12
#define TLU_OTHER_EVENT_STATUS_CLEAR_EDBUE_S                    44

#define TLU_CONTROL_DRN_TR_DIS                                  35

#define TLU_SLOT_CONTROL                                        0x90038
#define TLU_SLOT_CONTROL_PWFDEN                                 1
#define TLU_SLOT_STATUS                                         0x90040
#define TLU_SLOT_STATUS_PSD                                     6
#define TLU_SLOT_STATUS_MRLS                                    5
#define TLU_SLOT_STATUS_CMDCPLT                                 4
#define TLU_SLOT_STATUS_PSDC                                    3
#define TLU_SLOT_STATUS_MRLC                                    2
#define TLU_SLOT_STATUS_PWFD                                    1
#define TLU_SLOT_STATUS_ABTN                                    0

#define FLP_PORT_LINK_CONTROL                                   0xe5008
#define FLP_PORT_LINK_CONTROL_RETRAIN                           5

#define FLP_PORT_CONTROL                                        0xe5200
#define FLP_PORT_CONTROL_PORT_DIS                               0

#define FLP_PORT_ACTIVE_STATUS                                  0xe5240
#define FLP_PORT_ACTIVE_STATUS_TRAIN_ERROR                      1

#define HOTPLUG_CONTROL                                         0x88000
#define HOTPLUG_CONTROL_SLOTPON                                 3
#define HOTPLUG_CONTROL_PWREN                                   2
#define HOTPLUG_CONTROL_CLKEN                                   1
#define HOTPLUG_CONTROL_N_PERST                                 0

#define DRAIN_CONTROL_STATUS                                    0x51100
#define DRAIN_CONTROL_STATUS_DRAIN                              0

#ifdef  __cplusplus
}
#endif

#endif  /* _SYS_OBERON_REGS_H */