1/*- 2 * SPDX-License-Identifier: BSD-2-Clause 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/* 30 * File: ql_tmplt.h 31 * Author : David C Somayajulu, Qlogic Corporation, Aliso Viejo, CA 92656. 32 */ 33#ifndef _QL_TMPLT_H_ 34#define _QL_TMPLT_H_ 35 36typedef struct _q8_tmplt_hdr { 37 uint16_t version; 38 uint16_t signature; 39 uint16_t size; 40 uint16_t nentries; 41 uint16_t stop_seq_off; 42 uint16_t csum; 43 uint16_t init_seq_off; 44 uint16_t start_seq_off; 45} __packed q8_tmplt_hdr_t; 46 47typedef struct _q8_ce_hdr { 48 uint16_t opcode; 49 uint16_t size; 50 uint16_t opcount; 51 uint16_t delay_to; 52} __packed q8_ce_hdr_t; 53 54/* 55 * Values for opcode field in q8_ce_hdr_t 56 */ 57#define Q8_CE_OPCODE_NOP 0x000 58#define Q8_CE_OPCODE_WRITE_LIST 0x001 59#define Q8_CE_OPCODE_READ_WRITE_LIST 0x002 60#define Q8_CE_OPCODE_POLL_LIST 0x004 61#define Q8_CE_OPCODE_POLL_WRITE_LIST 0x008 62#define Q8_CE_OPCODE_READ_MODIFY_WRITE 0x010 63#define Q8_CE_OPCODE_SEQ_PAUSE 0x020 64#define Q8_CE_OPCODE_SEQ_END 0x040 65#define Q8_CE_OPCODE_TMPLT_END 0x080 66#define Q8_CE_OPCODE_POLL_RD_LIST 0x100 67 68/* 69 * structure for Q8_CE_OPCODE_WRITE_LIST 70 */ 71typedef struct _q8_wrl_e { 72 uint32_t addr; 73 uint32_t value; 74} __packed q8_wrl_e_t; 75 76/* 77 * structure for Q8_CE_OPCODE_READ_WRITE_LIST 78 */ 79typedef struct _q8_rdwrl_e { 80 uint32_t rd_addr; 81 uint32_t wr_addr; 82} __packed q8_rdwrl_e_t; 83 84/* 85 * common for 86 * Q8_CE_OPCODE_POLL_LIST 87 * Q8_CE_OPCODE_POLL_WRITE_LIST 88 * Q8_CE_OPCODE_POLL_RD_LIST 89 */ 90typedef struct _q8_poll_hdr { 91 uint32_t tmask; 92 uint32_t tvalue; 93} q8_poll_hdr_t; 94 95/* 96 * structure for Q8_CE_OPCODE_POLL_LIST 97 */ 98typedef struct _q8_poll_e { 99 uint32_t addr; 100 uint32_t to_addr; 101} q8_poll_e_t; 102 103/* 104 * structure for Q8_CE_OPCODE_POLL_WRITE_LIST 105 */ 106typedef struct _q8_poll_wr_e { 107 uint32_t dr_addr; 108 uint32_t dr_value; 109 uint32_t ar_addr; 110 uint32_t ar_value; 111} q8_poll_wr_e_t; 112 113/* 114 * structure for Q8_CE_OPCODE_POLL_RD_LIST 115 */ 116typedef struct _q8_poll_rd_e { 117 uint32_t ar_addr; 118 uint32_t ar_value; 119 uint32_t dr_addr; 120 uint32_t rsrvd; 121} q8_poll_rd_e_t; 122 123/* 124 * structure for Q8_CE_OPCODE_READ_MODIFY_WRITE 125 */ 126typedef struct _q8_rdmwr_hdr { 127 uint32_t and_value; 128 uint32_t xor_value; 129 uint32_t or_value; 130 uint8_t shl; 131 uint8_t shr; 132 uint8_t index_a; 133 uint8_t rsrvd; 134} q8_rdmwr_hdr_t; 135 136typedef struct _q8_rdmwr_e { 137 uint32_t rd_addr; 138 uint32_t wr_addr; 139} q8_rdmwr_e_t; 140 141#endif /* #ifndef _QL_TMPLT_H_ */ 142