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