xref: /freebsd/sys/dev/qlxgbe/ql_tmplt.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
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