1 /*- 2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3 * 4 * Copyright (c) 2013-2016 Qlogic Corporation 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 * POSSIBILITY OF SUCH DAMAGE. 28 * 29 * $FreeBSD$ 30 */ 31 /* 32 * File: ql_tmplt.h 33 * Author : David C Somayajulu, Qlogic Corporation, Aliso Viejo, CA 92656. 34 */ 35 #ifndef _QL_TMPLT_H_ 36 #define _QL_TMPLT_H_ 37 38 typedef struct _q8_tmplt_hdr { 39 uint16_t version; 40 uint16_t signature; 41 uint16_t size; 42 uint16_t nentries; 43 uint16_t stop_seq_off; 44 uint16_t csum; 45 uint16_t init_seq_off; 46 uint16_t start_seq_off; 47 } __packed q8_tmplt_hdr_t; 48 49 typedef struct _q8_ce_hdr { 50 uint16_t opcode; 51 uint16_t size; 52 uint16_t opcount; 53 uint16_t delay_to; 54 } __packed q8_ce_hdr_t; 55 56 /* 57 * Values for opcode field in q8_ce_hdr_t 58 */ 59 #define Q8_CE_OPCODE_NOP 0x000 60 #define Q8_CE_OPCODE_WRITE_LIST 0x001 61 #define Q8_CE_OPCODE_READ_WRITE_LIST 0x002 62 #define Q8_CE_OPCODE_POLL_LIST 0x004 63 #define Q8_CE_OPCODE_POLL_WRITE_LIST 0x008 64 #define Q8_CE_OPCODE_READ_MODIFY_WRITE 0x010 65 #define Q8_CE_OPCODE_SEQ_PAUSE 0x020 66 #define Q8_CE_OPCODE_SEQ_END 0x040 67 #define Q8_CE_OPCODE_TMPLT_END 0x080 68 #define Q8_CE_OPCODE_POLL_RD_LIST 0x100 69 70 /* 71 * structure for Q8_CE_OPCODE_WRITE_LIST 72 */ 73 typedef struct _q8_wrl_e { 74 uint32_t addr; 75 uint32_t value; 76 } __packed q8_wrl_e_t; 77 78 /* 79 * structure for Q8_CE_OPCODE_READ_WRITE_LIST 80 */ 81 typedef struct _q8_rdwrl_e { 82 uint32_t rd_addr; 83 uint32_t wr_addr; 84 } __packed q8_rdwrl_e_t; 85 86 /* 87 * common for 88 * Q8_CE_OPCODE_POLL_LIST 89 * Q8_CE_OPCODE_POLL_WRITE_LIST 90 * Q8_CE_OPCODE_POLL_RD_LIST 91 */ 92 typedef struct _q8_poll_hdr { 93 uint32_t tmask; 94 uint32_t tvalue; 95 } q8_poll_hdr_t; 96 97 /* 98 * structure for Q8_CE_OPCODE_POLL_LIST 99 */ 100 typedef struct _q8_poll_e { 101 uint32_t addr; 102 uint32_t to_addr; 103 } q8_poll_e_t; 104 105 /* 106 * structure for Q8_CE_OPCODE_POLL_WRITE_LIST 107 */ 108 typedef struct _q8_poll_wr_e { 109 uint32_t dr_addr; 110 uint32_t dr_value; 111 uint32_t ar_addr; 112 uint32_t ar_value; 113 } q8_poll_wr_e_t; 114 115 /* 116 * structure for Q8_CE_OPCODE_POLL_RD_LIST 117 */ 118 typedef struct _q8_poll_rd_e { 119 uint32_t ar_addr; 120 uint32_t ar_value; 121 uint32_t dr_addr; 122 uint32_t rsrvd; 123 } q8_poll_rd_e_t; 124 125 /* 126 * structure for Q8_CE_OPCODE_READ_MODIFY_WRITE 127 */ 128 typedef struct _q8_rdmwr_hdr { 129 uint32_t and_value; 130 uint32_t xor_value; 131 uint32_t or_value; 132 uint8_t shl; 133 uint8_t shr; 134 uint8_t index_a; 135 uint8_t rsrvd; 136 } q8_rdmwr_hdr_t; 137 138 typedef struct _q8_rdmwr_e { 139 uint32_t rd_addr; 140 uint32_t wr_addr; 141 } q8_rdmwr_e_t; 142 143 #endif /* #ifndef _QL_TMPLT_H_ */ 144