FreeBSD kernel MWL device code
mwldiag.h
Go to the documentation of this file.
1
/*-
2
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3
*
4
* Copyright (c) 2007-2009 Sam Leffler, Errno Consulting
5
* Copyright (c) 2007-2009 Marvell Semiconductor, Inc.
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer,
13
* without modification.
14
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
15
* similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
16
* redistribution must be conditioned upon including a substantially
17
* similar Disclaimer requirement for further binary redistribution.
18
*
19
* NO WARRANTY
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
* LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
23
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
24
* THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
25
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
28
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30
* THE POSSIBILITY OF SUCH DAMAGES.
31
*
32
* $FreeBSD$
33
*/
34
35
#ifndef _MWL_DIAG_H_
36
#define _MWL_DIAG_H_
37
/*
38
* Diagnostic interface. This is an open-ended interface that
39
* is opaque to applications. Diagnostic programs use this to
40
* retrieve internal data structures, etc. There is no guarantee
41
* that calling conventions for calls other than MWL_DIAG_REVS
42
* are stable between HAL releases; a diagnostic application must
43
* use the HAL revision information to deal with ABI/API differences.
44
*
45
* NB: do not renumber these, certain codes are publicly used.
46
*/
47
enum
{
48
MWL_DIAG_CMD_REVS
= 0,
/* MAC/PHY/Radio revs */
49
MWL_DIAG_CMD_REGS
= 1,
/* Registers */
50
MWL_DIAG_CMD_HOSTCMD
= 2,
/* issue arbitrary cmd */
51
MWL_DIAG_CMD_FWLOAD
= 3,
/* load firmware */
52
};
53
54
/*
55
* Device revision information.
56
*/
57
typedef
struct
{
58
uint16_t
mh_devid
;
/* PCI device ID */
59
uint16_t
mh_subvendorid
;
/* PCI subvendor ID */
60
uint16_t
mh_macRev
;
/* MAC revision */
61
uint16_t
mh_phyRev
;
/* PHY revision */
62
}
MWL_DIAG_REVS
;
63
64
typedef
struct
{
65
uint16_t
start
;
/* first register */
66
uint16_t
end
;
/* ending register or zero */
67
}
MWL_DIAG_REGRANGE
;
68
69
/*
70
* Registers are mapped into virtual banks; the hal converts
71
* r/w operations through the diag api to host cmds as required.
72
*
73
* NB: register offsets are 16-bits and we need to avoid real
74
* register mappings in BAR1.
75
*/
76
#define MWL_DIAG_BASE_MAC 0xa000
77
#define MWL_DIAG_ISMAC(r) \
78
(MWL_DIAG_BASE_MAC <= (r) && (r) < (MWL_DIAG_BASE_MAC+0x1000))
79
#define MWL_DIAG_BASE_BB 0xe000
80
#define MWL_DIAG_ISBB(r) \
81
(MWL_DIAG_BASE_BB <= (r) && (r) < (MWL_DIAG_BASE_BB+0x1000))
82
#define MWL_DIAG_BASE_RF 0xf000
83
#define MWL_DIAG_ISRF(r) \
84
(MWL_DIAG_BASE_RF <= (r) && (r) < (MWL_DIAG_BASE_RF+0x1000))
85
86
/*
87
* Firmware download
88
*/
89
typedef
struct
{
90
uint32_t
opmode
;
/* operating mode */
91
uint32_t
signature
;
/* f/w ready signature */
92
char
name[1];
/* variable length pathname */
93
}
MWL_DIAG_FWLOAD
;
94
95
struct
mwl_diag
{
96
char
md_name
[IFNAMSIZ];
/* if name, e.g. "mv0" */
97
uint16_t
md_id
;
98
#define MWL_DIAG_DYN 0x8000
/* allocate buffer in caller */
99
#define MWL_DIAG_IN 0x4000
/* copy in parameters */
100
#define MWL_DIAG_OUT 0x0000
/* copy out results (always) */
101
#define MWL_DIAG_ID 0x0fff
102
uint16_t
md_in_size
;
/* pack to fit, yech */
103
void
*
md_in_data
;
104
void
*
md_out_data
;
105
u_int
md_out_size
;
106
107
};
108
#define SIOCGMVDIAG _IOWR('i', 138, struct mwl_diag)
109
#define SIOCGMVRESET _IOW('i', 139, struct mwl_diag)
110
#endif
/* _MWL_DIAG_H_ */
MWL_DIAG_CMD_FWLOAD
@ MWL_DIAG_CMD_FWLOAD
Definition:
mwldiag.h:51
MWL_DIAG_CMD_REGS
@ MWL_DIAG_CMD_REGS
Definition:
mwldiag.h:49
MWL_DIAG_CMD_HOSTCMD
@ MWL_DIAG_CMD_HOSTCMD
Definition:
mwldiag.h:50
MWL_DIAG_CMD_REVS
@ MWL_DIAG_CMD_REVS
Definition:
mwldiag.h:48
MWL_DIAG_FWLOAD
Definition:
mwldiag.h:89
MWL_DIAG_FWLOAD::opmode
uint32_t opmode
Definition:
mwldiag.h:90
MWL_DIAG_FWLOAD::signature
uint32_t signature
Definition:
mwldiag.h:91
MWL_DIAG_REGRANGE
Definition:
mwldiag.h:64
MWL_DIAG_REGRANGE::end
uint16_t end
Definition:
mwldiag.h:66
MWL_DIAG_REGRANGE::start
uint16_t start
Definition:
mwldiag.h:65
MWL_DIAG_REVS
Definition:
mwldiag.h:57
MWL_DIAG_REVS::mh_subvendorid
uint16_t mh_subvendorid
Definition:
mwldiag.h:59
MWL_DIAG_REVS::mh_phyRev
uint16_t mh_phyRev
Definition:
mwldiag.h:61
MWL_DIAG_REVS::mh_devid
uint16_t mh_devid
Definition:
mwldiag.h:58
MWL_DIAG_REVS::mh_macRev
uint16_t mh_macRev
Definition:
mwldiag.h:60
mwl_diag
Definition:
mwldiag.h:95
mwl_diag::md_in_size
uint16_t md_in_size
Definition:
mwldiag.h:102
mwl_diag::md_id
uint16_t md_id
Definition:
mwldiag.h:97
mwl_diag::md_in_data
void * md_in_data
Definition:
mwldiag.h:103
mwl_diag::md_out_size
u_int md_out_size
Definition:
mwldiag.h:105
mwl_diag::md_out_data
void * md_out_data
Definition:
mwldiag.h:104
mwl_diag::md_name
char md_name[IFNAMSIZ]
Definition:
mwldiag.h:96
dev
mwl
mwldiag.h
Generated by
1.9.3