1*80e3aec6SDavid C Somayajulu /* 2*80e3aec6SDavid C Somayajulu * Copyright (c) 2013-2016 Qlogic Corporation 3*80e3aec6SDavid C Somayajulu * All rights reserved. 4*80e3aec6SDavid C Somayajulu * 5*80e3aec6SDavid C Somayajulu * Redistribution and use in source and binary forms, with or without 6*80e3aec6SDavid C Somayajulu * modification, are permitted provided that the following conditions 7*80e3aec6SDavid C Somayajulu * are met: 8*80e3aec6SDavid C Somayajulu * 9*80e3aec6SDavid C Somayajulu * 1. Redistributions of source code must retain the above copyright 10*80e3aec6SDavid C Somayajulu * notice, this list of conditions and the following disclaimer. 11*80e3aec6SDavid C Somayajulu * 2. Redistributions in binary form must reproduce the above copyright 12*80e3aec6SDavid C Somayajulu * notice, this list of conditions and the following disclaimer in the 13*80e3aec6SDavid C Somayajulu * documentation and/or other materials provided with the distribution. 14*80e3aec6SDavid C Somayajulu * 15*80e3aec6SDavid C Somayajulu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16*80e3aec6SDavid C Somayajulu * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*80e3aec6SDavid C Somayajulu * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*80e3aec6SDavid C Somayajulu * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19*80e3aec6SDavid C Somayajulu * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20*80e3aec6SDavid C Somayajulu * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21*80e3aec6SDavid C Somayajulu * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22*80e3aec6SDavid C Somayajulu * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23*80e3aec6SDavid C Somayajulu * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24*80e3aec6SDavid C Somayajulu * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25*80e3aec6SDavid C Somayajulu * POSSIBILITY OF SUCH DAMAGE. 26*80e3aec6SDavid C Somayajulu */ 27*80e3aec6SDavid C Somayajulu 28*80e3aec6SDavid C Somayajulu /* 29*80e3aec6SDavid C Somayajulu * File: ql_minidump.h 30*80e3aec6SDavid C Somayajulu */ 31*80e3aec6SDavid C Somayajulu #ifndef _QL_MINIDUMP_H_ 32*80e3aec6SDavid C Somayajulu #define _QL_MINIDUMP_H_ 33*80e3aec6SDavid C Somayajulu 34*80e3aec6SDavid C Somayajulu #define QL_DBG_STATE_ARRAY_LEN 16 35*80e3aec6SDavid C Somayajulu #define QL_DBG_CAP_SIZE_ARRAY_LEN 8 36*80e3aec6SDavid C Somayajulu #define QL_NO_OF_OCM_WINDOWS 16 37*80e3aec6SDavid C Somayajulu 38*80e3aec6SDavid C Somayajulu typedef struct ql_mdump_tmplt_hdr { 39*80e3aec6SDavid C Somayajulu uint32_t entry_type ; 40*80e3aec6SDavid C Somayajulu uint32_t first_entry_offset ; 41*80e3aec6SDavid C Somayajulu uint32_t size_of_template ; 42*80e3aec6SDavid C Somayajulu uint32_t recommended_capture_mask; 43*80e3aec6SDavid C Somayajulu 44*80e3aec6SDavid C Somayajulu uint32_t num_of_entries ; 45*80e3aec6SDavid C Somayajulu uint32_t version ; 46*80e3aec6SDavid C Somayajulu uint32_t driver_timestamp ; 47*80e3aec6SDavid C Somayajulu uint32_t checksum ; 48*80e3aec6SDavid C Somayajulu 49*80e3aec6SDavid C Somayajulu uint32_t driver_capture_mask ; 50*80e3aec6SDavid C Somayajulu uint32_t driver_info_word2 ; 51*80e3aec6SDavid C Somayajulu uint32_t driver_info_word3 ; 52*80e3aec6SDavid C Somayajulu uint32_t driver_info_word4 ; 53*80e3aec6SDavid C Somayajulu 54*80e3aec6SDavid C Somayajulu uint32_t saved_state_array[QL_DBG_STATE_ARRAY_LEN] ; 55*80e3aec6SDavid C Somayajulu uint32_t capture_size_array[QL_DBG_CAP_SIZE_ARRAY_LEN] ; 56*80e3aec6SDavid C Somayajulu 57*80e3aec6SDavid C Somayajulu uint32_t ocm_window_array[QL_NO_OF_OCM_WINDOWS] ; 58*80e3aec6SDavid C Somayajulu } ql_minidump_template_hdr_t ; 59*80e3aec6SDavid C Somayajulu 60*80e3aec6SDavid C Somayajulu /* 61*80e3aec6SDavid C Somayajulu * MIU AGENT ADDRESSES. 62*80e3aec6SDavid C Somayajulu */ 63*80e3aec6SDavid C Somayajulu 64*80e3aec6SDavid C Somayajulu #define MD_TA_CTL_ENABLE 0x2 65*80e3aec6SDavid C Somayajulu #define MD_TA_CTL_START 0x1 66*80e3aec6SDavid C Somayajulu #define MD_TA_CTL_BUSY 0x8 67*80e3aec6SDavid C Somayajulu #define MD_TA_CTL_CHECK 1000 68*80e3aec6SDavid C Somayajulu 69*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_CTRL 0x41000090 70*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_ADDR_LO 0x41000094 71*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_ADDR_HI 0x41000098 72*80e3aec6SDavid C Somayajulu 73*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_RDDATA_0_31 0x410000A8 74*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_RDDATA_32_63 0x410000AC 75*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_RDDATA_64_95 0x410000B8 76*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_RDDATA_96_127 0x410000BC 77*80e3aec6SDavid C Somayajulu 78*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_WRDATA_0_31 0x410000A0 79*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_WRDATA_32_63 0x410000A4 80*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_WRDATA_64_95 0x410000B0 81*80e3aec6SDavid C Somayajulu #define MD_MIU_TEST_AGT_WRDATA_96_127 0x410000B4 82*80e3aec6SDavid C Somayajulu 83*80e3aec6SDavid C Somayajulu /* 84*80e3aec6SDavid C Somayajulu * ROM Read Address 85*80e3aec6SDavid C Somayajulu */ 86*80e3aec6SDavid C Somayajulu 87*80e3aec6SDavid C Somayajulu #define MD_DIRECT_ROM_WINDOW 0x42110030 88*80e3aec6SDavid C Somayajulu #define MD_DIRECT_ROM_READ_BASE 0x42150000 89*80e3aec6SDavid C Somayajulu 90*80e3aec6SDavid C Somayajulu /* 91*80e3aec6SDavid C Somayajulu * Entry Type Defines 92*80e3aec6SDavid C Somayajulu */ 93*80e3aec6SDavid C Somayajulu 94*80e3aec6SDavid C Somayajulu #define RDNOP 0 95*80e3aec6SDavid C Somayajulu #define RDCRB 1 96*80e3aec6SDavid C Somayajulu #define RDMUX 2 97*80e3aec6SDavid C Somayajulu #define QUEUE 3 98*80e3aec6SDavid C Somayajulu #define BOARD 4 99*80e3aec6SDavid C Somayajulu #define RDOCM 6 100*80e3aec6SDavid C Somayajulu #define L1DAT 11 101*80e3aec6SDavid C Somayajulu #define L1INS 12 102*80e3aec6SDavid C Somayajulu #define L2DTG 21 103*80e3aec6SDavid C Somayajulu #define L2ITG 22 104*80e3aec6SDavid C Somayajulu #define L2DAT 23 105*80e3aec6SDavid C Somayajulu #define L2INS 24 106*80e3aec6SDavid C Somayajulu #define POLLRD 35 107*80e3aec6SDavid C Somayajulu #define RDMUX2 36 108*80e3aec6SDavid C Somayajulu #define POLLRDMWR 37 109*80e3aec6SDavid C Somayajulu #define RDROM 71 110*80e3aec6SDavid C Somayajulu #define RDMEM 72 111*80e3aec6SDavid C Somayajulu #define CNTRL 98 112*80e3aec6SDavid C Somayajulu #define TLHDR 99 113*80e3aec6SDavid C Somayajulu #define RDEND 255 114*80e3aec6SDavid C Somayajulu 115*80e3aec6SDavid C Somayajulu /* 116*80e3aec6SDavid C Somayajulu * Index of State Table. The Template header maintains 117*80e3aec6SDavid C Somayajulu * an array of 8 (0..7) words that is used to store some 118*80e3aec6SDavid C Somayajulu * "State Information" from the board. 119*80e3aec6SDavid C Somayajulu */ 120*80e3aec6SDavid C Somayajulu 121*80e3aec6SDavid C Somayajulu #define QL_PCIE_FUNC_INDX 0 122*80e3aec6SDavid C Somayajulu #define QL_CLK_STATE_INDX 1 123*80e3aec6SDavid C Somayajulu #define QL_SRE_STATE_INDX 2 124*80e3aec6SDavid C Somayajulu #define QL_OCM0_ADDR_INDX 3 125*80e3aec6SDavid C Somayajulu 126*80e3aec6SDavid C Somayajulu #define QL_REVID_STATE_INDX 4 127*80e3aec6SDavid C Somayajulu #define QL_MAJVER_STATE_INDX 5 128*80e3aec6SDavid C Somayajulu #define QL_MINVER_STATE_INDX 6 129*80e3aec6SDavid C Somayajulu #define QL_SUBVER_STATE_INDX 7 130*80e3aec6SDavid C Somayajulu 131*80e3aec6SDavid C Somayajulu /* 132*80e3aec6SDavid C Somayajulu * Opcodes for Control Entries. 133*80e3aec6SDavid C Somayajulu * These Flags are bit fields. 134*80e3aec6SDavid C Somayajulu */ 135*80e3aec6SDavid C Somayajulu 136*80e3aec6SDavid C Somayajulu #define QL_DBG_OPCODE_WR 0x01 137*80e3aec6SDavid C Somayajulu #define QL_DBG_OPCODE_RW 0x02 138*80e3aec6SDavid C Somayajulu #define QL_DBG_OPCODE_AND 0x04 139*80e3aec6SDavid C Somayajulu #define QL_DBG_OPCODE_OR 0x08 140*80e3aec6SDavid C Somayajulu #define QL_DBG_OPCODE_POLL 0x10 141*80e3aec6SDavid C Somayajulu #define QL_DBG_OPCODE_RDSTATE 0x20 142*80e3aec6SDavid C Somayajulu #define QL_DBG_OPCODE_WRSTATE 0x40 143*80e3aec6SDavid C Somayajulu #define QL_DBG_OPCODE_MDSTATE 0x80 144*80e3aec6SDavid C Somayajulu 145*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_hdr_s { 146*80e3aec6SDavid C Somayajulu uint32_t entry_type ; 147*80e3aec6SDavid C Somayajulu uint32_t entry_size ; 148*80e3aec6SDavid C Somayajulu uint32_t entry_capture_size ; 149*80e3aec6SDavid C Somayajulu union { 150*80e3aec6SDavid C Somayajulu struct { 151*80e3aec6SDavid C Somayajulu uint8_t entry_capture_mask ; 152*80e3aec6SDavid C Somayajulu uint8_t entry_code ; 153*80e3aec6SDavid C Somayajulu uint8_t driver_code ; 154*80e3aec6SDavid C Somayajulu uint8_t driver_flags ; 155*80e3aec6SDavid C Somayajulu }; 156*80e3aec6SDavid C Somayajulu uint32_t entry_ctrl_word ; 157*80e3aec6SDavid C Somayajulu }; 158*80e3aec6SDavid C Somayajulu } ql_minidump_entry_hdr_t ; 159*80e3aec6SDavid C Somayajulu 160*80e3aec6SDavid C Somayajulu /* 161*80e3aec6SDavid C Somayajulu * Driver Flags 162*80e3aec6SDavid C Somayajulu */ 163*80e3aec6SDavid C Somayajulu #define QL_DBG_SKIPPED_FLAG 0x80 /* driver skipped this entry */ 164*80e3aec6SDavid C Somayajulu #define QL_DBG_SIZE_ERR_FLAG 0x40 /* entry size vs capture size mismatch*/ 165*80e3aec6SDavid C Somayajulu 166*80e3aec6SDavid C Somayajulu /* 167*80e3aec6SDavid C Somayajulu * Generic Entry Including Header 168*80e3aec6SDavid C Somayajulu */ 169*80e3aec6SDavid C Somayajulu 170*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_s { 171*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t hdr ; 172*80e3aec6SDavid C Somayajulu 173*80e3aec6SDavid C Somayajulu uint32_t entry_data00 ; 174*80e3aec6SDavid C Somayajulu uint32_t entry_data01 ; 175*80e3aec6SDavid C Somayajulu uint32_t entry_data02 ; 176*80e3aec6SDavid C Somayajulu uint32_t entry_data03 ; 177*80e3aec6SDavid C Somayajulu 178*80e3aec6SDavid C Somayajulu uint32_t entry_data04 ; 179*80e3aec6SDavid C Somayajulu uint32_t entry_data05 ; 180*80e3aec6SDavid C Somayajulu uint32_t entry_data06 ; 181*80e3aec6SDavid C Somayajulu uint32_t entry_data07 ; 182*80e3aec6SDavid C Somayajulu } ql_minidump_entry_t; 183*80e3aec6SDavid C Somayajulu 184*80e3aec6SDavid C Somayajulu /* 185*80e3aec6SDavid C Somayajulu * Read CRB Entry Header 186*80e3aec6SDavid C Somayajulu */ 187*80e3aec6SDavid C Somayajulu 188*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_rdcrb_s { 189*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 190*80e3aec6SDavid C Somayajulu 191*80e3aec6SDavid C Somayajulu uint32_t addr ; 192*80e3aec6SDavid C Somayajulu union { 193*80e3aec6SDavid C Somayajulu struct { 194*80e3aec6SDavid C Somayajulu uint8_t addr_stride ; 195*80e3aec6SDavid C Somayajulu uint8_t rsvd_0; 196*80e3aec6SDavid C Somayajulu uint16_t rsvd_1 ; 197*80e3aec6SDavid C Somayajulu } ; 198*80e3aec6SDavid C Somayajulu uint32_t addr_cntrl ; 199*80e3aec6SDavid C Somayajulu } ; 200*80e3aec6SDavid C Somayajulu 201*80e3aec6SDavid C Somayajulu uint32_t data_size ; 202*80e3aec6SDavid C Somayajulu uint32_t op_count; 203*80e3aec6SDavid C Somayajulu 204*80e3aec6SDavid C Somayajulu uint32_t rsvd_2 ; 205*80e3aec6SDavid C Somayajulu uint32_t rsvd_3 ; 206*80e3aec6SDavid C Somayajulu uint32_t rsvd_4 ; 207*80e3aec6SDavid C Somayajulu uint32_t rsvd_5 ; 208*80e3aec6SDavid C Somayajulu 209*80e3aec6SDavid C Somayajulu } ql_minidump_entry_rdcrb_t ; 210*80e3aec6SDavid C Somayajulu 211*80e3aec6SDavid C Somayajulu /* 212*80e3aec6SDavid C Somayajulu * Cache Entry Header 213*80e3aec6SDavid C Somayajulu */ 214*80e3aec6SDavid C Somayajulu 215*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_cache_s { 216*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 217*80e3aec6SDavid C Somayajulu 218*80e3aec6SDavid C Somayajulu uint32_t tag_reg_addr ; 219*80e3aec6SDavid C Somayajulu union { 220*80e3aec6SDavid C Somayajulu struct { 221*80e3aec6SDavid C Somayajulu uint16_t tag_value_stride ; 222*80e3aec6SDavid C Somayajulu uint16_t init_tag_value ; 223*80e3aec6SDavid C Somayajulu } ; 224*80e3aec6SDavid C Somayajulu uint32_t select_addr_cntrl ; 225*80e3aec6SDavid C Somayajulu } ; 226*80e3aec6SDavid C Somayajulu 227*80e3aec6SDavid C Somayajulu uint32_t data_size ; 228*80e3aec6SDavid C Somayajulu uint32_t op_count; 229*80e3aec6SDavid C Somayajulu 230*80e3aec6SDavid C Somayajulu uint32_t control_addr ; 231*80e3aec6SDavid C Somayajulu union { 232*80e3aec6SDavid C Somayajulu struct { 233*80e3aec6SDavid C Somayajulu uint16_t write_value ; 234*80e3aec6SDavid C Somayajulu uint8_t poll_mask ; 235*80e3aec6SDavid C Somayajulu uint8_t poll_wait ; 236*80e3aec6SDavid C Somayajulu }; 237*80e3aec6SDavid C Somayajulu uint32_t control_value ; 238*80e3aec6SDavid C Somayajulu } ; 239*80e3aec6SDavid C Somayajulu 240*80e3aec6SDavid C Somayajulu uint32_t read_addr ; 241*80e3aec6SDavid C Somayajulu union { 242*80e3aec6SDavid C Somayajulu struct { 243*80e3aec6SDavid C Somayajulu uint8_t read_addr_stride ; 244*80e3aec6SDavid C Somayajulu uint8_t read_addr_cnt ; 245*80e3aec6SDavid C Somayajulu uint16_t rsvd_1 ; 246*80e3aec6SDavid C Somayajulu } ; 247*80e3aec6SDavid C Somayajulu uint32_t read_addr_cntrl ; 248*80e3aec6SDavid C Somayajulu } ; 249*80e3aec6SDavid C Somayajulu } ql_minidump_entry_cache_t ; 250*80e3aec6SDavid C Somayajulu 251*80e3aec6SDavid C Somayajulu /* 252*80e3aec6SDavid C Somayajulu * Read OCM Entry Header 253*80e3aec6SDavid C Somayajulu */ 254*80e3aec6SDavid C Somayajulu 255*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_rdocm_s { 256*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 257*80e3aec6SDavid C Somayajulu 258*80e3aec6SDavid C Somayajulu uint32_t rsvd_0 ; 259*80e3aec6SDavid C Somayajulu uint32_t rsvd_1 ; 260*80e3aec6SDavid C Somayajulu 261*80e3aec6SDavid C Somayajulu uint32_t data_size ; 262*80e3aec6SDavid C Somayajulu uint32_t op_count; 263*80e3aec6SDavid C Somayajulu 264*80e3aec6SDavid C Somayajulu uint32_t rsvd_2 ; 265*80e3aec6SDavid C Somayajulu uint32_t rsvd_3 ; 266*80e3aec6SDavid C Somayajulu 267*80e3aec6SDavid C Somayajulu uint32_t read_addr ; 268*80e3aec6SDavid C Somayajulu uint32_t read_addr_stride ; 269*80e3aec6SDavid C Somayajulu 270*80e3aec6SDavid C Somayajulu } ql_minidump_entry_rdocm_t ; 271*80e3aec6SDavid C Somayajulu 272*80e3aec6SDavid C Somayajulu /* 273*80e3aec6SDavid C Somayajulu * Read MEM Entry Header 274*80e3aec6SDavid C Somayajulu */ 275*80e3aec6SDavid C Somayajulu 276*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_rdmem_s { 277*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 278*80e3aec6SDavid C Somayajulu 279*80e3aec6SDavid C Somayajulu uint32_t rsvd_0[6] ; 280*80e3aec6SDavid C Somayajulu 281*80e3aec6SDavid C Somayajulu uint32_t read_addr ; 282*80e3aec6SDavid C Somayajulu uint32_t read_data_size ; 283*80e3aec6SDavid C Somayajulu 284*80e3aec6SDavid C Somayajulu } ql_minidump_entry_rdmem_t ; 285*80e3aec6SDavid C Somayajulu 286*80e3aec6SDavid C Somayajulu /* 287*80e3aec6SDavid C Somayajulu * Read ROM Entry Header 288*80e3aec6SDavid C Somayajulu */ 289*80e3aec6SDavid C Somayajulu 290*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_rdrom_s { 291*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 292*80e3aec6SDavid C Somayajulu 293*80e3aec6SDavid C Somayajulu uint32_t rsvd_0[6] ; 294*80e3aec6SDavid C Somayajulu 295*80e3aec6SDavid C Somayajulu uint32_t read_addr ; 296*80e3aec6SDavid C Somayajulu uint32_t read_data_size ; 297*80e3aec6SDavid C Somayajulu 298*80e3aec6SDavid C Somayajulu } ql_minidump_entry_rdrom_t ; 299*80e3aec6SDavid C Somayajulu 300*80e3aec6SDavid C Somayajulu /* 301*80e3aec6SDavid C Somayajulu * Read MUX Entry Header 302*80e3aec6SDavid C Somayajulu */ 303*80e3aec6SDavid C Somayajulu 304*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_mux_s { 305*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 306*80e3aec6SDavid C Somayajulu 307*80e3aec6SDavid C Somayajulu uint32_t select_addr ; 308*80e3aec6SDavid C Somayajulu union { 309*80e3aec6SDavid C Somayajulu struct { 310*80e3aec6SDavid C Somayajulu uint32_t rsvd_0 ; 311*80e3aec6SDavid C Somayajulu } ; 312*80e3aec6SDavid C Somayajulu uint32_t select_addr_cntrl ; 313*80e3aec6SDavid C Somayajulu } ; 314*80e3aec6SDavid C Somayajulu 315*80e3aec6SDavid C Somayajulu uint32_t data_size ; 316*80e3aec6SDavid C Somayajulu uint32_t op_count; 317*80e3aec6SDavid C Somayajulu 318*80e3aec6SDavid C Somayajulu uint32_t select_value ; 319*80e3aec6SDavid C Somayajulu uint32_t select_value_stride ; 320*80e3aec6SDavid C Somayajulu 321*80e3aec6SDavid C Somayajulu uint32_t read_addr ; 322*80e3aec6SDavid C Somayajulu uint32_t rsvd_1 ; 323*80e3aec6SDavid C Somayajulu 324*80e3aec6SDavid C Somayajulu } ql_minidump_entry_mux_t ; 325*80e3aec6SDavid C Somayajulu 326*80e3aec6SDavid C Somayajulu /* 327*80e3aec6SDavid C Somayajulu * Read MUX2 Entry Header 328*80e3aec6SDavid C Somayajulu */ 329*80e3aec6SDavid C Somayajulu 330*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_mux2_s { 331*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 332*80e3aec6SDavid C Somayajulu 333*80e3aec6SDavid C Somayajulu uint32_t select_addr_1; 334*80e3aec6SDavid C Somayajulu uint32_t select_addr_2; 335*80e3aec6SDavid C Somayajulu uint32_t select_value_1; 336*80e3aec6SDavid C Somayajulu uint32_t select_value_2; 337*80e3aec6SDavid C Somayajulu uint32_t select_value_count; 338*80e3aec6SDavid C Somayajulu uint32_t select_value_mask; 339*80e3aec6SDavid C Somayajulu uint32_t read_addr; 340*80e3aec6SDavid C Somayajulu union { 341*80e3aec6SDavid C Somayajulu struct { 342*80e3aec6SDavid C Somayajulu uint8_t select_value_stride; 343*80e3aec6SDavid C Somayajulu uint8_t data_size; 344*80e3aec6SDavid C Somayajulu uint8_t reserved_0; 345*80e3aec6SDavid C Somayajulu uint8_t reserved_1; 346*80e3aec6SDavid C Somayajulu }; 347*80e3aec6SDavid C Somayajulu uint32_t select_addr_value_cntrl; 348*80e3aec6SDavid C Somayajulu }; 349*80e3aec6SDavid C Somayajulu 350*80e3aec6SDavid C Somayajulu } ql_minidump_entry_mux2_t; 351*80e3aec6SDavid C Somayajulu 352*80e3aec6SDavid C Somayajulu /* 353*80e3aec6SDavid C Somayajulu * Read QUEUE Entry Header 354*80e3aec6SDavid C Somayajulu */ 355*80e3aec6SDavid C Somayajulu 356*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_queue_s { 357*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 358*80e3aec6SDavid C Somayajulu 359*80e3aec6SDavid C Somayajulu uint32_t select_addr ; 360*80e3aec6SDavid C Somayajulu union { 361*80e3aec6SDavid C Somayajulu struct { 362*80e3aec6SDavid C Somayajulu uint16_t queue_id_stride ; 363*80e3aec6SDavid C Somayajulu uint16_t rsvd_0 ; 364*80e3aec6SDavid C Somayajulu } ; 365*80e3aec6SDavid C Somayajulu uint32_t select_addr_cntrl ; 366*80e3aec6SDavid C Somayajulu } ; 367*80e3aec6SDavid C Somayajulu 368*80e3aec6SDavid C Somayajulu uint32_t data_size ; 369*80e3aec6SDavid C Somayajulu uint32_t op_count ; 370*80e3aec6SDavid C Somayajulu 371*80e3aec6SDavid C Somayajulu uint32_t rsvd_1 ; 372*80e3aec6SDavid C Somayajulu uint32_t rsvd_2 ; 373*80e3aec6SDavid C Somayajulu 374*80e3aec6SDavid C Somayajulu uint32_t read_addr ; 375*80e3aec6SDavid C Somayajulu union { 376*80e3aec6SDavid C Somayajulu struct { 377*80e3aec6SDavid C Somayajulu uint8_t read_addr_stride ; 378*80e3aec6SDavid C Somayajulu uint8_t read_addr_cnt ; 379*80e3aec6SDavid C Somayajulu uint16_t rsvd_3 ; 380*80e3aec6SDavid C Somayajulu } ; 381*80e3aec6SDavid C Somayajulu uint32_t read_addr_cntrl ; 382*80e3aec6SDavid C Somayajulu } ; 383*80e3aec6SDavid C Somayajulu 384*80e3aec6SDavid C Somayajulu } ql_minidump_entry_queue_t ; 385*80e3aec6SDavid C Somayajulu 386*80e3aec6SDavid C Somayajulu /* 387*80e3aec6SDavid C Somayajulu * Control Entry Header 388*80e3aec6SDavid C Somayajulu */ 389*80e3aec6SDavid C Somayajulu 390*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_cntrl_s { 391*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 392*80e3aec6SDavid C Somayajulu 393*80e3aec6SDavid C Somayajulu uint32_t addr ; 394*80e3aec6SDavid C Somayajulu union { 395*80e3aec6SDavid C Somayajulu struct { 396*80e3aec6SDavid C Somayajulu uint8_t addr_stride ; 397*80e3aec6SDavid C Somayajulu uint8_t state_index_a ; 398*80e3aec6SDavid C Somayajulu uint16_t poll_timeout ; 399*80e3aec6SDavid C Somayajulu } ; 400*80e3aec6SDavid C Somayajulu uint32_t addr_cntrl ; 401*80e3aec6SDavid C Somayajulu } ; 402*80e3aec6SDavid C Somayajulu 403*80e3aec6SDavid C Somayajulu uint32_t data_size ; 404*80e3aec6SDavid C Somayajulu uint32_t op_count; 405*80e3aec6SDavid C Somayajulu 406*80e3aec6SDavid C Somayajulu union { 407*80e3aec6SDavid C Somayajulu struct { 408*80e3aec6SDavid C Somayajulu uint8_t opcode ; 409*80e3aec6SDavid C Somayajulu uint8_t state_index_v ; 410*80e3aec6SDavid C Somayajulu uint8_t shl ; 411*80e3aec6SDavid C Somayajulu uint8_t shr ; 412*80e3aec6SDavid C Somayajulu } ; 413*80e3aec6SDavid C Somayajulu uint32_t control_value ; 414*80e3aec6SDavid C Somayajulu } ; 415*80e3aec6SDavid C Somayajulu 416*80e3aec6SDavid C Somayajulu uint32_t value_1 ; 417*80e3aec6SDavid C Somayajulu uint32_t value_2 ; 418*80e3aec6SDavid C Somayajulu uint32_t value_3 ; 419*80e3aec6SDavid C Somayajulu } ql_minidump_entry_cntrl_t ; 420*80e3aec6SDavid C Somayajulu 421*80e3aec6SDavid C Somayajulu /* 422*80e3aec6SDavid C Somayajulu * Read with poll. 423*80e3aec6SDavid C Somayajulu */ 424*80e3aec6SDavid C Somayajulu 425*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_rdcrb_with_poll_s { 426*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 427*80e3aec6SDavid C Somayajulu 428*80e3aec6SDavid C Somayajulu uint32_t select_addr; 429*80e3aec6SDavid C Somayajulu uint32_t read_addr; 430*80e3aec6SDavid C Somayajulu uint32_t select_value; 431*80e3aec6SDavid C Somayajulu union { 432*80e3aec6SDavid C Somayajulu struct { 433*80e3aec6SDavid C Somayajulu uint16_t select_value_stride; 434*80e3aec6SDavid C Somayajulu uint16_t op_count; 435*80e3aec6SDavid C Somayajulu }; 436*80e3aec6SDavid C Somayajulu uint32_t select_value_cntrl; 437*80e3aec6SDavid C Somayajulu }; 438*80e3aec6SDavid C Somayajulu 439*80e3aec6SDavid C Somayajulu uint32_t poll; 440*80e3aec6SDavid C Somayajulu uint32_t mask; 441*80e3aec6SDavid C Somayajulu 442*80e3aec6SDavid C Somayajulu uint32_t data_size; 443*80e3aec6SDavid C Somayajulu uint32_t rsvd_0; 444*80e3aec6SDavid C Somayajulu 445*80e3aec6SDavid C Somayajulu } ql_minidump_entry_pollrd_t; 446*80e3aec6SDavid C Somayajulu 447*80e3aec6SDavid C Somayajulu /* 448*80e3aec6SDavid C Somayajulu * Read_Modify_Write with poll. 449*80e3aec6SDavid C Somayajulu */ 450*80e3aec6SDavid C Somayajulu 451*80e3aec6SDavid C Somayajulu typedef struct ql_minidump_entry_rd_modify_wr_with_poll_s { 452*80e3aec6SDavid C Somayajulu ql_minidump_entry_hdr_t h; 453*80e3aec6SDavid C Somayajulu 454*80e3aec6SDavid C Somayajulu uint32_t addr_1; 455*80e3aec6SDavid C Somayajulu uint32_t addr_2; 456*80e3aec6SDavid C Somayajulu uint32_t value_1; 457*80e3aec6SDavid C Somayajulu uint32_t value_2; 458*80e3aec6SDavid C Somayajulu uint32_t poll; 459*80e3aec6SDavid C Somayajulu uint32_t mask; 460*80e3aec6SDavid C Somayajulu uint32_t modify_mask; 461*80e3aec6SDavid C Somayajulu uint32_t data_size; 462*80e3aec6SDavid C Somayajulu 463*80e3aec6SDavid C Somayajulu } ql_minidump_entry_rd_modify_wr_with_poll_t; 464*80e3aec6SDavid C Somayajulu 465*80e3aec6SDavid C Somayajulu #endif /* #ifndef _QL_MINIDUMP_H_ */ 466