ql_ioctl.h revision 250661
1250661Sdavidcs/*
2250661Sdavidcs * Copyright (c) 2013-2014 Qlogic Corporation
3250661Sdavidcs * All rights reserved.
4250661Sdavidcs *
5250661Sdavidcs *  Redistribution and use in source and binary forms, with or without
6250661Sdavidcs *  modification, are permitted provided that the following conditions
7250661Sdavidcs *  are met:
8250661Sdavidcs *
9250661Sdavidcs *  1. Redistributions of source code must retain the above copyright
10250661Sdavidcs *     notice, this list of conditions and the following disclaimer.
11250661Sdavidcs *  2. Redistributions in binary form must reproduce the above copyright
12250661Sdavidcs *     notice, this list of conditions and the following disclaimer in the
13250661Sdavidcs *     documentation and/or other materials provided with the distribution.
14250661Sdavidcs *
15250661Sdavidcs *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16250661Sdavidcs *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17250661Sdavidcs *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18250661Sdavidcs *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19250661Sdavidcs *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20250661Sdavidcs *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21250661Sdavidcs *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22250661Sdavidcs *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23250661Sdavidcs *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24250661Sdavidcs *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25250661Sdavidcs *  POSSIBILITY OF SUCH DAMAGE.
26250661Sdavidcs *
27250661Sdavidcs * $FreeBSD: head/sys/dev/qlxgbe/ql_ioctl.h 250661 2013-05-15 17:03:09Z davidcs $
28250661Sdavidcs */
29250661Sdavidcs/*
30250661Sdavidcs * File: ql_ioctl.h
31250661Sdavidcs * Author : David C Somayajulu, Qlogic Corporation, Aliso Viejo, CA 92656.
32250661Sdavidcs */
33250661Sdavidcs
34250661Sdavidcs#ifndef _QL_IOCTL_H_
35250661Sdavidcs#define _QL_IOCTL_H_
36250661Sdavidcs
37250661Sdavidcs#include <sys/ioccom.h>
38250661Sdavidcs
39250661Sdavidcsstruct qla_reg_val {
40250661Sdavidcs        uint16_t rd;
41250661Sdavidcs        uint16_t direct;
42250661Sdavidcs        uint32_t reg;
43250661Sdavidcs        uint32_t val;
44250661Sdavidcs};
45250661Sdavidcstypedef struct qla_reg_val qla_reg_val_t;
46250661Sdavidcs
47250661Sdavidcsstruct qla_rd_flash {
48250661Sdavidcs        uint32_t off;
49250661Sdavidcs        uint32_t data;
50250661Sdavidcs};
51250661Sdavidcstypedef struct qla_rd_flash qla_rd_flash_t;
52250661Sdavidcs
53250661Sdavidcsstruct qla_wr_flash {
54250661Sdavidcs	uint32_t off;
55250661Sdavidcs	uint32_t size;
56250661Sdavidcs	void *buffer;
57250661Sdavidcs	uint32_t pattern;
58250661Sdavidcs};
59250661Sdavidcstypedef struct qla_wr_flash qla_wr_flash_t;
60250661Sdavidcs
61250661Sdavidcsstruct qla_erase_flash {
62250661Sdavidcs	uint32_t off;
63250661Sdavidcs	uint32_t size;
64250661Sdavidcs};
65250661Sdavidcstypedef struct qla_erase_flash qla_erase_flash_t;
66250661Sdavidcs
67250661Sdavidcsstruct qla_rd_pci_ids {
68250661Sdavidcs	uint16_t ven_id;
69250661Sdavidcs	uint16_t dev_id;
70250661Sdavidcs	uint16_t subsys_ven_id;
71250661Sdavidcs	uint16_t subsys_dev_id;
72250661Sdavidcs	uint8_t rev_id;
73250661Sdavidcs};
74250661Sdavidcstypedef struct qla_rd_pci_ids qla_rd_pci_ids_t;
75250661Sdavidcs
76250661Sdavidcs/*
77250661Sdavidcs * structure encapsulating the value to read/write from/to offchip (MS) memory
78250661Sdavidcs */
79250661Sdavidcsstruct qla_offchip_mem_val {
80250661Sdavidcs	uint16_t rd;
81250661Sdavidcs	uint64_t off;
82250661Sdavidcs	uint32_t data_lo;
83250661Sdavidcs	uint32_t data_hi;
84250661Sdavidcs	uint32_t data_ulo;
85250661Sdavidcs	uint32_t data_uhi;
86250661Sdavidcs};
87250661Sdavidcstypedef struct qla_offchip_mem_val qla_offchip_mem_val_t;
88250661Sdavidcs
89250661Sdavidcsstruct qla_rd_fw_dump {
90250661Sdavidcs	uint16_t pci_func;
91250661Sdavidcs	uint32_t template_size;
92250661Sdavidcs	void *md_template;
93250661Sdavidcs};
94250661Sdavidcstypedef struct qla_rd_fw_dump qla_rd_fw_dump_t;
95250661Sdavidcs
96250661Sdavidcs/*
97250661Sdavidcs * Read/Write Register
98250661Sdavidcs */
99250661Sdavidcs#define QLA_RDWR_REG		_IOWR('q', 1, qla_reg_val_t)
100250661Sdavidcs
101250661Sdavidcs/*
102250661Sdavidcs * Read Flash
103250661Sdavidcs */
104250661Sdavidcs#define QLA_RD_FLASH		_IOWR('q', 2, qla_rd_flash_t)
105250661Sdavidcs
106250661Sdavidcs/*
107250661Sdavidcs * Write Flash
108250661Sdavidcs */
109250661Sdavidcs#define QLA_WR_FLASH		_IOWR('q', 3, qla_wr_flash_t)
110250661Sdavidcs
111250661Sdavidcs/*
112250661Sdavidcs * Read Offchip (MS) Memory
113250661Sdavidcs */
114250661Sdavidcs#define QLA_RDWR_MS_MEM		_IOWR('q', 4, qla_offchip_mem_val_t)
115250661Sdavidcs
116250661Sdavidcs/*
117250661Sdavidcs * Erase Flash
118250661Sdavidcs */
119250661Sdavidcs#define QLA_ERASE_FLASH		_IOWR('q', 5, qla_erase_flash_t)
120250661Sdavidcs
121250661Sdavidcs/*
122250661Sdavidcs * Read PCI IDs
123250661Sdavidcs */
124250661Sdavidcs#define QLA_RD_PCI_IDS		_IOWR('q', 6, qla_rd_pci_ids_t)
125250661Sdavidcs
126250661Sdavidcs/*
127250661Sdavidcs * Read Minidump Template Size
128250661Sdavidcs */
129250661Sdavidcs#define QLA_RD_FW_DUMP_SIZE	_IOWR('q', 7, qla_rd_fw_dump_t)
130250661Sdavidcs
131250661Sdavidcs/*
132250661Sdavidcs * Read Minidump Template
133250661Sdavidcs */
134250661Sdavidcs#define QLA_RD_FW_DUMP		_IOWR('q', 8, qla_rd_fw_dump_t)
135250661Sdavidcs
136250661Sdavidcs#endif /* #ifndef _QL_IOCTL_H_ */
137