Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __ALPHA_ERR_EV7_H
0003 #define __ALPHA_ERR_EV7_H 1
0004 
0005 /*
0006  * Data for el packet class PAL (14), type LOGOUT_FRAME (1)
0007  */
0008 struct ev7_pal_logout_subpacket {
0009     u32 mchk_code;
0010     u32 subpacket_count;
0011     u64 whami;
0012     u64 rbox_whami;
0013     u64 rbox_int;
0014     u64 exc_addr;
0015     union el_timestamp timestamp;
0016     u64 halt_code;
0017     u64 reserved;
0018 };
0019 
0020 /*
0021  * Data for el packet class PAL (14), type EV7_PROCESSOR (4)
0022  */
0023 struct ev7_pal_processor_subpacket {
0024     u64 i_stat;
0025     u64 dc_stat;
0026     u64 c_addr;
0027     u64 c_syndrome_1;
0028     u64 c_syndrome_0;
0029     u64 c_stat;
0030     u64 c_sts;
0031     u64 mm_stat;
0032     u64 exc_addr;
0033     u64 ier_cm;
0034     u64 isum;
0035     u64 pal_base;
0036     u64 i_ctl;
0037     u64 process_context;
0038     u64 cbox_ctl;
0039     u64 cbox_stp_ctl;
0040     u64 cbox_acc_ctl;
0041     u64 cbox_lcl_set;
0042     u64 cbox_gbl_set;
0043     u64 bbox_ctl;
0044     u64 bbox_err_sts;
0045     u64 bbox_err_idx;
0046     u64 cbox_ddp_err_sts;
0047     u64 bbox_dat_rmp;
0048     u64 reserved[2];
0049 };
0050 
0051 /*
0052  * Data for el packet class PAL (14), type EV7_ZBOX (5)
0053  */
0054 struct ev7_pal_zbox_subpacket {
0055     u32 zbox0_dram_err_status_1;
0056     u32 zbox0_dram_err_status_2;
0057     u32 zbox0_dram_err_status_3;
0058     u32 zbox0_dram_err_ctl;
0059     u32 zbox0_dram_err_adr;
0060     u32 zbox0_dift_timeout;
0061     u32 zbox0_dram_mapper_ctl;
0062     u32 zbox0_frc_err_adr;
0063     u32 zbox0_dift_err_status;
0064     u32 reserved1;
0065     u32 zbox1_dram_err_status_1;
0066     u32 zbox1_dram_err_status_2;
0067     u32 zbox1_dram_err_status_3;
0068     u32 zbox1_dram_err_ctl;
0069     u32 zbox1_dram_err_adr;
0070     u32 zbox1_dift_timeout;
0071     u32 zbox1_dram_mapper_ctl;
0072     u32 zbox1_frc_err_adr;
0073     u32 zbox1_dift_err_status;
0074     u32 reserved2;
0075     u64 cbox_ctl;
0076     u64 cbox_stp_ctl;
0077     u64 zbox0_error_pa;
0078     u64 zbox1_error_pa;
0079     u64 zbox0_ored_syndrome;
0080     u64 zbox1_ored_syndrome;
0081     u64 reserved3[2];
0082 };
0083 
0084 /*
0085  * Data for el packet class PAL (14), type EV7_RBOX (6)
0086  */
0087 struct ev7_pal_rbox_subpacket {
0088     u64 rbox_cfg;
0089     u64 rbox_n_cfg;
0090     u64 rbox_s_cfg;
0091     u64 rbox_e_cfg;
0092     u64 rbox_w_cfg;
0093     u64 rbox_n_err;
0094     u64 rbox_s_err;
0095     u64 rbox_e_err;
0096     u64 rbox_w_err;
0097     u64 rbox_io_cfg;
0098     u64 rbox_io_err;
0099     u64 rbox_l_err;
0100     u64 rbox_whoami;
0101     u64 rbox_imask;
0102     u64 rbox_intq;
0103     u64 rbox_int;
0104     u64 reserved[2];
0105 };
0106 
0107 /*
0108  * Data for el packet class PAL (14), type EV7_IO (7)
0109  */
0110 struct ev7_pal_io_one_port {
0111     u64 pox_err_sum;
0112     u64 pox_tlb_err;
0113     u64 pox_spl_cmplt;
0114     u64 pox_trans_sum;
0115     u64 pox_first_err;
0116     u64 pox_mult_err;
0117     u64 pox_dm_source;
0118     u64 pox_dm_dest;
0119     u64 pox_dm_size;
0120     u64 pox_dm_ctrl;
0121     u64 reserved;
0122 };
0123 
0124 struct ev7_pal_io_subpacket {
0125     u64 io_asic_rev;
0126     u64 io_sys_rev;
0127     u64 io7_uph;
0128     u64 hpi_ctl;
0129     u64 crd_ctl;
0130     u64 hei_ctl;
0131     u64 po7_error_sum;
0132     u64 po7_uncrr_sym;
0133     u64 po7_crrct_sym;
0134     u64 po7_ugbge_sym;
0135     u64 po7_err_pkt0;
0136     u64 po7_err_pkt1;
0137     u64 reserved[2];
0138     struct ev7_pal_io_one_port ports[4];
0139 };
0140 
0141 /*
0142  * Environmental subpacket. Data used for el packets:
0143  *     class PAL (14), type AMBIENT_TEMPERATURE (10)
0144  *     class PAL (14), type AIRMOVER_FAN (11)
0145  *     class PAL (14), type VOLTAGE (12)
0146  *     class PAL (14), type INTRUSION (13)
0147  *     class PAL (14), type POWER_SUPPLY (14)
0148  *     class PAL (14), type LAN (15)
0149  *     class PAL (14), type HOT_PLUG (16)
0150  */
0151 struct ev7_pal_environmental_subpacket {
0152     u16 cabinet;
0153     u16 drawer;
0154     u16 reserved1[2];
0155     u8 module_type;
0156     u8 unit_id;     /* unit reporting condition */
0157     u8 reserved2;
0158     u8 condition;       /* condition reported       */
0159 };
0160 
0161 /*
0162  * Convert environmental type to index
0163  */
0164 static inline int ev7_lf_env_index(int type)
0165 {
0166     BUG_ON((type < EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE) 
0167            || (type > EL_TYPE__PAL__ENV__HOT_PLUG));
0168 
0169     return type - EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE;
0170 }
0171 
0172 /*
0173  * Data for generic el packet class PAL.
0174  */
0175 struct ev7_pal_subpacket {
0176     union {
0177         struct ev7_pal_logout_subpacket logout;      /* Type     1 */
0178         struct ev7_pal_processor_subpacket ev7;      /* Type     4 */
0179         struct ev7_pal_zbox_subpacket zbox;      /* Type     5 */
0180         struct ev7_pal_rbox_subpacket rbox;      /* Type     6 */
0181         struct ev7_pal_io_subpacket io;          /* Type     7 */
0182         struct ev7_pal_environmental_subpacket env;  /* Type 10-16 */
0183         u64 as_quad[1];                  /* Raw u64    */
0184     } by_type;
0185 };
0186 
0187 /*
0188  * Struct to contain collected logout from subpackets.
0189  */
0190 struct ev7_lf_subpackets {
0191     struct ev7_pal_logout_subpacket *logout;        /* Type  1 */
0192     struct ev7_pal_processor_subpacket *ev7;        /* Type  4 */
0193     struct ev7_pal_zbox_subpacket *zbox;            /* Type  5 */
0194     struct ev7_pal_rbox_subpacket *rbox;            /* Type  6 */
0195     struct ev7_pal_io_subpacket *io;            /* Type  7 */
0196     struct ev7_pal_environmental_subpacket *env[7];      /* Type 10-16 */
0197 
0198     unsigned int io_pid;
0199 };
0200 
0201 #endif /* __ALPHA_ERR_EV7_H */
0202 
0203