Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Aug 2016 01:57:58 +0000 (UTC)
From:      David C Somayajulu <davidcs@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r304248 - head/sys/dev/qlxgbe
Message-ID:  <201608170157.u7H1vwrg082020@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: davidcs
Date: Wed Aug 17 01:57:58 2016
New Revision: 304248
URL: https://svnweb.freebsd.org/changeset/base/304248

Log:
  Add ql_minidump.h
  
  MFC after:5 days

Added:
  head/sys/dev/qlxgbe/ql_minidump.h   (contents, props changed)

Added: head/sys/dev/qlxgbe/ql_minidump.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/dev/qlxgbe/ql_minidump.h	Wed Aug 17 01:57:58 2016	(r304248)
@@ -0,0 +1,470 @@
+/*
+ * Copyright (c) 2013-2016 Qlogic Corporation
+ * All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *  1. Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *  2. Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ *  POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * File: ql_minidump.h
+ *
+ * $FreeBSD$
+ */
+#ifndef _QL_MINIDUMP_H_
+#define _QL_MINIDUMP_H_
+
+#define QL_DBG_STATE_ARRAY_LEN          16
+#define QL_DBG_CAP_SIZE_ARRAY_LEN       8
+#define QL_NO_OF_OCM_WINDOWS            16
+
+
+typedef struct ql_mdump_tmplt_hdr {
+        uint32_t  entry_type ;
+        uint32_t  first_entry_offset ;
+        uint32_t  size_of_template ;
+        uint32_t  recommended_capture_mask;
+
+        uint32_t  num_of_entries ;
+        uint32_t  version ;
+        uint32_t  driver_timestamp ;
+        uint32_t  checksum ;
+
+        uint32_t  driver_capture_mask ;
+        uint32_t  driver_info_word2 ;
+        uint32_t  driver_info_word3 ;
+        uint32_t  driver_info_word4 ;
+
+        uint32_t  saved_state_array[QL_DBG_STATE_ARRAY_LEN] ;
+        uint32_t  capture_size_array[QL_DBG_CAP_SIZE_ARRAY_LEN] ;
+
+        uint32_t ocm_window_array[QL_NO_OF_OCM_WINDOWS] ;
+} ql_minidump_template_hdr_t ;
+
+/*
+ * MIU AGENT ADDRESSES.
+ */
+
+#define MD_TA_CTL_ENABLE                0x2
+#define MD_TA_CTL_START                 0x1
+#define MD_TA_CTL_BUSY                  0x8
+#define MD_TA_CTL_CHECK                 1000
+
+#define MD_MIU_TEST_AGT_CTRL            0x41000090
+#define MD_MIU_TEST_AGT_ADDR_LO         0x41000094
+#define MD_MIU_TEST_AGT_ADDR_HI         0x41000098
+
+#define MD_MIU_TEST_AGT_RDDATA_0_31     0x410000A8
+#define MD_MIU_TEST_AGT_RDDATA_32_63    0x410000AC
+#define MD_MIU_TEST_AGT_RDDATA_64_95    0x410000B8
+#define MD_MIU_TEST_AGT_RDDATA_96_127   0x410000BC
+
+#define MD_MIU_TEST_AGT_WRDATA_0_31     0x410000A0
+#define MD_MIU_TEST_AGT_WRDATA_32_63    0x410000A4
+#define MD_MIU_TEST_AGT_WRDATA_64_95    0x410000B0
+#define MD_MIU_TEST_AGT_WRDATA_96_127   0x410000B4
+
+/*
+ * ROM Read Address
+ */
+
+#define MD_DIRECT_ROM_WINDOW            0x42110030
+#define MD_DIRECT_ROM_READ_BASE         0x42150000
+
+/*
+ * Entry Type Defines
+ */
+
+#define RDNOP			0
+#define RDCRB			1
+#define	RDMUX			2
+#define QUEUE			3
+#define BOARD			4
+#define RDOCM			6
+#define L1DAT			11
+#define L1INS			12
+#define L2DTG                  	21
+#define L2ITG                  	22
+#define L2DAT                  	23
+#define L2INS                  	24
+#define POLLRD                  35
+#define RDMUX2                  36
+#define POLLRDMWR               37
+#define RDROM                  	71
+#define RDMEM                  	72
+#define CNTRL                  	98
+#define TLHDR                  	99
+#define RDEND			255
+
+/*
+ * Index of State Table.  The Template header maintains
+ * an array of 8 (0..7) words that is used to store some
+ * "State Information" from the board.
+ */
+
+#define QL_PCIE_FUNC_INDX       0
+#define QL_CLK_STATE_INDX       1
+#define QL_SRE_STATE_INDX       2
+#define QL_OCM0_ADDR_INDX       3
+
+#define QL_REVID_STATE_INDX     4
+#define QL_MAJVER_STATE_INDX    5
+#define QL_MINVER_STATE_INDX    6
+#define QL_SUBVER_STATE_INDX    7
+
+/*
+ * Opcodes for Control Entries.
+ * These Flags are bit fields.
+ */
+
+#define QL_DBG_OPCODE_WR        0x01
+#define QL_DBG_OPCODE_RW        0x02
+#define QL_DBG_OPCODE_AND       0x04
+#define QL_DBG_OPCODE_OR        0x08
+#define QL_DBG_OPCODE_POLL      0x10
+#define QL_DBG_OPCODE_RDSTATE   0x20
+#define QL_DBG_OPCODE_WRSTATE   0x40
+#define QL_DBG_OPCODE_MDSTATE   0x80
+
+typedef struct ql_minidump_entry_hdr_s {
+        uint32_t      entry_type ;
+        uint32_t      entry_size ;
+        uint32_t      entry_capture_size ;
+    	union {
+        	struct {
+            		uint8_t   entry_capture_mask ;
+            		uint8_t   entry_code ;
+            		uint8_t   driver_code ;
+            		uint8_t   driver_flags ;
+        	};
+        	uint32_t entry_ctrl_word ;
+    	};
+} ql_minidump_entry_hdr_t ;
+
+/*
+ * Driver Flags
+ */
+#define QL_DBG_SKIPPED_FLAG	0x80 /*  driver skipped this entry  */
+#define QL_DBG_SIZE_ERR_FLAG    0x40 /*  entry size vs capture size mismatch*/
+
+/*
+ * Generic Entry Including Header
+ */
+
+typedef struct ql_minidump_entry_s {
+        ql_minidump_entry_hdr_t hdr ;
+
+    uint32_t entry_data00 ;
+    uint32_t entry_data01 ;
+    uint32_t entry_data02 ;
+    uint32_t entry_data03 ;
+
+    uint32_t entry_data04 ;
+    uint32_t entry_data05 ;
+    uint32_t entry_data06 ;
+    uint32_t entry_data07 ;
+} ql_minidump_entry_t;
+
+/*
+ *  Read CRB Entry Header
+ */
+
+typedef struct ql_minidump_entry_rdcrb_s {
+        ql_minidump_entry_hdr_t h;
+
+        uint32_t addr ;
+    union {
+        struct {
+            uint8_t  addr_stride ;
+            uint8_t  rsvd_0;
+            uint16_t rsvd_1 ;
+        } ;
+            uint32_t addr_cntrl  ;
+    } ;
+
+        uint32_t data_size ;
+        uint32_t op_count;
+
+    uint32_t    rsvd_2 ;
+    uint32_t    rsvd_3 ;
+    uint32_t    rsvd_4 ;
+    uint32_t    rsvd_5 ;
+
+} ql_minidump_entry_rdcrb_t ;
+
+/*
+ * Cache Entry Header
+ */
+
+typedef struct ql_minidump_entry_cache_s {
+        ql_minidump_entry_hdr_t h;
+
+        uint32_t tag_reg_addr ;
+    	union {
+        	struct {
+            		uint16_t   tag_value_stride ;
+            		uint16_t  init_tag_value ;
+        	} ;
+            	uint32_t select_addr_cntrl  ;
+    	} ;
+
+        uint32_t data_size ;
+        uint32_t op_count;
+
+    	uint32_t control_addr ;
+    	union {
+        	struct {
+            		uint16_t  write_value ;
+            		uint8_t   poll_mask ;
+            		uint8_t   poll_wait ;
+        	};
+        	uint32_t control_value ;
+    	} ;
+
+    	uint32_t read_addr ;
+    	union {
+        	struct {
+            		uint8_t   read_addr_stride ;
+            		uint8_t   read_addr_cnt ;
+            		uint16_t  rsvd_1 ;
+        	} ;
+            	uint32_t read_addr_cntrl  ;
+    	} ;
+} ql_minidump_entry_cache_t ;
+
+
+/*
+ * Read OCM Entry Header
+ */
+
+typedef struct ql_minidump_entry_rdocm_s {
+        ql_minidump_entry_hdr_t h;
+
+        uint32_t rsvd_0 ;
+        uint32_t rsvd_1 ;
+
+        uint32_t data_size ;
+        uint32_t op_count;
+
+    uint32_t rsvd_2 ;
+    uint32_t rsvd_3 ;
+
+    uint32_t read_addr ;
+    uint32_t read_addr_stride ;
+
+} ql_minidump_entry_rdocm_t ;
+
+/*
+ * Read MEM Entry Header
+ */
+
+typedef struct ql_minidump_entry_rdmem_s {
+        ql_minidump_entry_hdr_t h;
+
+    uint32_t rsvd_0[6] ;
+
+    uint32_t read_addr ;
+    uint32_t read_data_size ;
+
+} ql_minidump_entry_rdmem_t ;
+
+/*
+ * Read ROM Entry Header
+ */
+
+typedef struct ql_minidump_entry_rdrom_s {
+        ql_minidump_entry_hdr_t h;
+
+    uint32_t rsvd_0[6] ;
+
+    uint32_t read_addr ;
+    uint32_t read_data_size ;
+
+} ql_minidump_entry_rdrom_t ;
+
+/*
+ * Read MUX Entry Header
+ */
+
+typedef struct ql_minidump_entry_mux_s {
+        ql_minidump_entry_hdr_t h;
+
+        uint32_t select_addr ;
+    union {
+        struct {
+            uint32_t rsvd_0 ;
+        } ;
+            uint32_t select_addr_cntrl  ;
+    } ;
+
+        uint32_t data_size ;
+        uint32_t op_count;
+
+    uint32_t select_value ;
+    uint32_t select_value_stride ;
+
+    uint32_t read_addr ;
+    uint32_t rsvd_1 ;
+
+} ql_minidump_entry_mux_t ;
+
+/*
+ * Read MUX2 Entry Header
+ */
+
+typedef struct ql_minidump_entry_mux2_s {
+        ql_minidump_entry_hdr_t h;
+
+        uint32_t select_addr_1;
+        uint32_t select_addr_2;
+        uint32_t select_value_1;
+        uint32_t select_value_2;
+        uint32_t select_value_count;
+        uint32_t select_value_mask;
+        uint32_t read_addr;
+        union {
+                struct {
+                        uint8_t select_value_stride;
+                        uint8_t data_size;
+                        uint8_t reserved_0;
+                        uint8_t reserved_1;
+                };
+                uint32_t select_addr_value_cntrl;
+        };
+
+} ql_minidump_entry_mux2_t;
+
+/*
+ * Read QUEUE Entry Header
+ */
+
+typedef struct ql_minidump_entry_queue_s {
+        ql_minidump_entry_hdr_t h;
+
+        uint32_t select_addr ;
+    union {
+        struct {
+            uint16_t  queue_id_stride ;
+            uint16_t  rsvd_0 ;
+        } ;
+            uint32_t select_addr_cntrl  ;
+    } ;
+
+        uint32_t data_size ;
+        uint32_t op_count ;
+
+    uint32_t rsvd_1 ;
+    uint32_t rsvd_2 ;
+
+    uint32_t read_addr ;
+    union {
+        struct {
+            uint8_t   read_addr_stride ;
+            uint8_t   read_addr_cnt ;
+            uint16_t  rsvd_3 ;
+        } ;
+            uint32_t read_addr_cntrl  ;
+    } ;
+
+} ql_minidump_entry_queue_t ;
+
+/*
+ * Control Entry Header
+ */
+
+typedef struct ql_minidump_entry_cntrl_s {
+        ql_minidump_entry_hdr_t h;
+
+        uint32_t addr ;
+    union {
+        struct {
+            uint8_t  addr_stride ;
+            uint8_t  state_index_a ;
+            uint16_t poll_timeout ;
+        } ;
+            uint32_t addr_cntrl  ;
+    } ;
+
+        uint32_t data_size ;
+        uint32_t op_count;
+
+    union {
+        struct {
+            uint8_t opcode ;
+            uint8_t state_index_v ;
+            uint8_t shl ;
+            uint8_t shr ;
+        } ;
+        uint32_t control_value ;
+    } ;
+
+    uint32_t value_1 ;
+    uint32_t value_2 ;
+    uint32_t value_3 ;
+} ql_minidump_entry_cntrl_t ;
+
+/*
+ * Read with poll.
+ */
+
+typedef struct ql_minidump_entry_rdcrb_with_poll_s {
+        ql_minidump_entry_hdr_t h;
+
+        uint32_t select_addr;
+        uint32_t read_addr;
+        uint32_t select_value;
+        union {
+                struct {
+                        uint16_t select_value_stride;
+                        uint16_t op_count;
+                };
+                uint32_t select_value_cntrl;
+        };
+
+        uint32_t poll;
+        uint32_t mask;
+
+        uint32_t data_size;
+        uint32_t rsvd_0;
+
+} ql_minidump_entry_pollrd_t;
+
+/*
+ * Read_Modify_Write with poll.
+ */
+
+typedef struct ql_minidump_entry_rd_modify_wr_with_poll_s {
+        ql_minidump_entry_hdr_t h;
+
+        uint32_t addr_1;
+        uint32_t addr_2;
+        uint32_t value_1;
+        uint32_t value_2;
+        uint32_t poll;
+        uint32_t mask;
+        uint32_t modify_mask;
+        uint32_t data_size;
+
+} ql_minidump_entry_rd_modify_wr_with_poll_t;
+
+#endif /* #ifndef _QL_MINIDUMP_H_ */
+



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608170157.u7H1vwrg082020>