18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef __ALPHA_ERR_EV7_H 38c2ecf20Sopenharmony_ci#define __ALPHA_ERR_EV7_H 1 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci/* 68c2ecf20Sopenharmony_ci * Data for el packet class PAL (14), type LOGOUT_FRAME (1) 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_cistruct ev7_pal_logout_subpacket { 98c2ecf20Sopenharmony_ci u32 mchk_code; 108c2ecf20Sopenharmony_ci u32 subpacket_count; 118c2ecf20Sopenharmony_ci u64 whami; 128c2ecf20Sopenharmony_ci u64 rbox_whami; 138c2ecf20Sopenharmony_ci u64 rbox_int; 148c2ecf20Sopenharmony_ci u64 exc_addr; 158c2ecf20Sopenharmony_ci union el_timestamp timestamp; 168c2ecf20Sopenharmony_ci u64 halt_code; 178c2ecf20Sopenharmony_ci u64 reserved; 188c2ecf20Sopenharmony_ci}; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci/* 218c2ecf20Sopenharmony_ci * Data for el packet class PAL (14), type EV7_PROCESSOR (4) 228c2ecf20Sopenharmony_ci */ 238c2ecf20Sopenharmony_cistruct ev7_pal_processor_subpacket { 248c2ecf20Sopenharmony_ci u64 i_stat; 258c2ecf20Sopenharmony_ci u64 dc_stat; 268c2ecf20Sopenharmony_ci u64 c_addr; 278c2ecf20Sopenharmony_ci u64 c_syndrome_1; 288c2ecf20Sopenharmony_ci u64 c_syndrome_0; 298c2ecf20Sopenharmony_ci u64 c_stat; 308c2ecf20Sopenharmony_ci u64 c_sts; 318c2ecf20Sopenharmony_ci u64 mm_stat; 328c2ecf20Sopenharmony_ci u64 exc_addr; 338c2ecf20Sopenharmony_ci u64 ier_cm; 348c2ecf20Sopenharmony_ci u64 isum; 358c2ecf20Sopenharmony_ci u64 pal_base; 368c2ecf20Sopenharmony_ci u64 i_ctl; 378c2ecf20Sopenharmony_ci u64 process_context; 388c2ecf20Sopenharmony_ci u64 cbox_ctl; 398c2ecf20Sopenharmony_ci u64 cbox_stp_ctl; 408c2ecf20Sopenharmony_ci u64 cbox_acc_ctl; 418c2ecf20Sopenharmony_ci u64 cbox_lcl_set; 428c2ecf20Sopenharmony_ci u64 cbox_gbl_set; 438c2ecf20Sopenharmony_ci u64 bbox_ctl; 448c2ecf20Sopenharmony_ci u64 bbox_err_sts; 458c2ecf20Sopenharmony_ci u64 bbox_err_idx; 468c2ecf20Sopenharmony_ci u64 cbox_ddp_err_sts; 478c2ecf20Sopenharmony_ci u64 bbox_dat_rmp; 488c2ecf20Sopenharmony_ci u64 reserved[2]; 498c2ecf20Sopenharmony_ci}; 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci/* 528c2ecf20Sopenharmony_ci * Data for el packet class PAL (14), type EV7_ZBOX (5) 538c2ecf20Sopenharmony_ci */ 548c2ecf20Sopenharmony_cistruct ev7_pal_zbox_subpacket { 558c2ecf20Sopenharmony_ci u32 zbox0_dram_err_status_1; 568c2ecf20Sopenharmony_ci u32 zbox0_dram_err_status_2; 578c2ecf20Sopenharmony_ci u32 zbox0_dram_err_status_3; 588c2ecf20Sopenharmony_ci u32 zbox0_dram_err_ctl; 598c2ecf20Sopenharmony_ci u32 zbox0_dram_err_adr; 608c2ecf20Sopenharmony_ci u32 zbox0_dift_timeout; 618c2ecf20Sopenharmony_ci u32 zbox0_dram_mapper_ctl; 628c2ecf20Sopenharmony_ci u32 zbox0_frc_err_adr; 638c2ecf20Sopenharmony_ci u32 zbox0_dift_err_status; 648c2ecf20Sopenharmony_ci u32 reserved1; 658c2ecf20Sopenharmony_ci u32 zbox1_dram_err_status_1; 668c2ecf20Sopenharmony_ci u32 zbox1_dram_err_status_2; 678c2ecf20Sopenharmony_ci u32 zbox1_dram_err_status_3; 688c2ecf20Sopenharmony_ci u32 zbox1_dram_err_ctl; 698c2ecf20Sopenharmony_ci u32 zbox1_dram_err_adr; 708c2ecf20Sopenharmony_ci u32 zbox1_dift_timeout; 718c2ecf20Sopenharmony_ci u32 zbox1_dram_mapper_ctl; 728c2ecf20Sopenharmony_ci u32 zbox1_frc_err_adr; 738c2ecf20Sopenharmony_ci u32 zbox1_dift_err_status; 748c2ecf20Sopenharmony_ci u32 reserved2; 758c2ecf20Sopenharmony_ci u64 cbox_ctl; 768c2ecf20Sopenharmony_ci u64 cbox_stp_ctl; 778c2ecf20Sopenharmony_ci u64 zbox0_error_pa; 788c2ecf20Sopenharmony_ci u64 zbox1_error_pa; 798c2ecf20Sopenharmony_ci u64 zbox0_ored_syndrome; 808c2ecf20Sopenharmony_ci u64 zbox1_ored_syndrome; 818c2ecf20Sopenharmony_ci u64 reserved3[2]; 828c2ecf20Sopenharmony_ci}; 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ci/* 858c2ecf20Sopenharmony_ci * Data for el packet class PAL (14), type EV7_RBOX (6) 868c2ecf20Sopenharmony_ci */ 878c2ecf20Sopenharmony_cistruct ev7_pal_rbox_subpacket { 888c2ecf20Sopenharmony_ci u64 rbox_cfg; 898c2ecf20Sopenharmony_ci u64 rbox_n_cfg; 908c2ecf20Sopenharmony_ci u64 rbox_s_cfg; 918c2ecf20Sopenharmony_ci u64 rbox_e_cfg; 928c2ecf20Sopenharmony_ci u64 rbox_w_cfg; 938c2ecf20Sopenharmony_ci u64 rbox_n_err; 948c2ecf20Sopenharmony_ci u64 rbox_s_err; 958c2ecf20Sopenharmony_ci u64 rbox_e_err; 968c2ecf20Sopenharmony_ci u64 rbox_w_err; 978c2ecf20Sopenharmony_ci u64 rbox_io_cfg; 988c2ecf20Sopenharmony_ci u64 rbox_io_err; 998c2ecf20Sopenharmony_ci u64 rbox_l_err; 1008c2ecf20Sopenharmony_ci u64 rbox_whoami; 1018c2ecf20Sopenharmony_ci u64 rbox_imask; 1028c2ecf20Sopenharmony_ci u64 rbox_intq; 1038c2ecf20Sopenharmony_ci u64 rbox_int; 1048c2ecf20Sopenharmony_ci u64 reserved[2]; 1058c2ecf20Sopenharmony_ci}; 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci/* 1088c2ecf20Sopenharmony_ci * Data for el packet class PAL (14), type EV7_IO (7) 1098c2ecf20Sopenharmony_ci */ 1108c2ecf20Sopenharmony_cistruct ev7_pal_io_one_port { 1118c2ecf20Sopenharmony_ci u64 pox_err_sum; 1128c2ecf20Sopenharmony_ci u64 pox_tlb_err; 1138c2ecf20Sopenharmony_ci u64 pox_spl_cmplt; 1148c2ecf20Sopenharmony_ci u64 pox_trans_sum; 1158c2ecf20Sopenharmony_ci u64 pox_first_err; 1168c2ecf20Sopenharmony_ci u64 pox_mult_err; 1178c2ecf20Sopenharmony_ci u64 pox_dm_source; 1188c2ecf20Sopenharmony_ci u64 pox_dm_dest; 1198c2ecf20Sopenharmony_ci u64 pox_dm_size; 1208c2ecf20Sopenharmony_ci u64 pox_dm_ctrl; 1218c2ecf20Sopenharmony_ci u64 reserved; 1228c2ecf20Sopenharmony_ci}; 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_cistruct ev7_pal_io_subpacket { 1258c2ecf20Sopenharmony_ci u64 io_asic_rev; 1268c2ecf20Sopenharmony_ci u64 io_sys_rev; 1278c2ecf20Sopenharmony_ci u64 io7_uph; 1288c2ecf20Sopenharmony_ci u64 hpi_ctl; 1298c2ecf20Sopenharmony_ci u64 crd_ctl; 1308c2ecf20Sopenharmony_ci u64 hei_ctl; 1318c2ecf20Sopenharmony_ci u64 po7_error_sum; 1328c2ecf20Sopenharmony_ci u64 po7_uncrr_sym; 1338c2ecf20Sopenharmony_ci u64 po7_crrct_sym; 1348c2ecf20Sopenharmony_ci u64 po7_ugbge_sym; 1358c2ecf20Sopenharmony_ci u64 po7_err_pkt0; 1368c2ecf20Sopenharmony_ci u64 po7_err_pkt1; 1378c2ecf20Sopenharmony_ci u64 reserved[2]; 1388c2ecf20Sopenharmony_ci struct ev7_pal_io_one_port ports[4]; 1398c2ecf20Sopenharmony_ci}; 1408c2ecf20Sopenharmony_ci 1418c2ecf20Sopenharmony_ci/* 1428c2ecf20Sopenharmony_ci * Environmental subpacket. Data used for el packets: 1438c2ecf20Sopenharmony_ci * class PAL (14), type AMBIENT_TEMPERATURE (10) 1448c2ecf20Sopenharmony_ci * class PAL (14), type AIRMOVER_FAN (11) 1458c2ecf20Sopenharmony_ci * class PAL (14), type VOLTAGE (12) 1468c2ecf20Sopenharmony_ci * class PAL (14), type INTRUSION (13) 1478c2ecf20Sopenharmony_ci * class PAL (14), type POWER_SUPPLY (14) 1488c2ecf20Sopenharmony_ci * class PAL (14), type LAN (15) 1498c2ecf20Sopenharmony_ci * class PAL (14), type HOT_PLUG (16) 1508c2ecf20Sopenharmony_ci */ 1518c2ecf20Sopenharmony_cistruct ev7_pal_environmental_subpacket { 1528c2ecf20Sopenharmony_ci u16 cabinet; 1538c2ecf20Sopenharmony_ci u16 drawer; 1548c2ecf20Sopenharmony_ci u16 reserved1[2]; 1558c2ecf20Sopenharmony_ci u8 module_type; 1568c2ecf20Sopenharmony_ci u8 unit_id; /* unit reporting condition */ 1578c2ecf20Sopenharmony_ci u8 reserved2; 1588c2ecf20Sopenharmony_ci u8 condition; /* condition reported */ 1598c2ecf20Sopenharmony_ci}; 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci/* 1628c2ecf20Sopenharmony_ci * Convert environmental type to index 1638c2ecf20Sopenharmony_ci */ 1648c2ecf20Sopenharmony_cistatic inline int ev7_lf_env_index(int type) 1658c2ecf20Sopenharmony_ci{ 1668c2ecf20Sopenharmony_ci BUG_ON((type < EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE) 1678c2ecf20Sopenharmony_ci || (type > EL_TYPE__PAL__ENV__HOT_PLUG)); 1688c2ecf20Sopenharmony_ci 1698c2ecf20Sopenharmony_ci return type - EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE; 1708c2ecf20Sopenharmony_ci} 1718c2ecf20Sopenharmony_ci 1728c2ecf20Sopenharmony_ci/* 1738c2ecf20Sopenharmony_ci * Data for generic el packet class PAL. 1748c2ecf20Sopenharmony_ci */ 1758c2ecf20Sopenharmony_cistruct ev7_pal_subpacket { 1768c2ecf20Sopenharmony_ci union { 1778c2ecf20Sopenharmony_ci struct ev7_pal_logout_subpacket logout; /* Type 1 */ 1788c2ecf20Sopenharmony_ci struct ev7_pal_processor_subpacket ev7; /* Type 4 */ 1798c2ecf20Sopenharmony_ci struct ev7_pal_zbox_subpacket zbox; /* Type 5 */ 1808c2ecf20Sopenharmony_ci struct ev7_pal_rbox_subpacket rbox; /* Type 6 */ 1818c2ecf20Sopenharmony_ci struct ev7_pal_io_subpacket io; /* Type 7 */ 1828c2ecf20Sopenharmony_ci struct ev7_pal_environmental_subpacket env; /* Type 10-16 */ 1838c2ecf20Sopenharmony_ci u64 as_quad[1]; /* Raw u64 */ 1848c2ecf20Sopenharmony_ci } by_type; 1858c2ecf20Sopenharmony_ci}; 1868c2ecf20Sopenharmony_ci 1878c2ecf20Sopenharmony_ci/* 1888c2ecf20Sopenharmony_ci * Struct to contain collected logout from subpackets. 1898c2ecf20Sopenharmony_ci */ 1908c2ecf20Sopenharmony_cistruct ev7_lf_subpackets { 1918c2ecf20Sopenharmony_ci struct ev7_pal_logout_subpacket *logout; /* Type 1 */ 1928c2ecf20Sopenharmony_ci struct ev7_pal_processor_subpacket *ev7; /* Type 4 */ 1938c2ecf20Sopenharmony_ci struct ev7_pal_zbox_subpacket *zbox; /* Type 5 */ 1948c2ecf20Sopenharmony_ci struct ev7_pal_rbox_subpacket *rbox; /* Type 6 */ 1958c2ecf20Sopenharmony_ci struct ev7_pal_io_subpacket *io; /* Type 7 */ 1968c2ecf20Sopenharmony_ci struct ev7_pal_environmental_subpacket *env[7]; /* Type 10-16 */ 1978c2ecf20Sopenharmony_ci 1988c2ecf20Sopenharmony_ci unsigned int io_pid; 1998c2ecf20Sopenharmony_ci}; 2008c2ecf20Sopenharmony_ci 2018c2ecf20Sopenharmony_ci#endif /* __ALPHA_ERR_EV7_H */ 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ci 204