~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to drivers/net/wireless/iwlwifi/iwl-testmode.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************************************
 
2
 *
 
3
 * This file is provided under a dual BSD/GPLv2 license.  When using or
 
4
 * redistributing this file, you may do so under either license.
 
5
 *
 
6
 * GPL LICENSE SUMMARY
 
7
 *
 
8
 * Copyright(c) 2010 - 2011 Intel Corporation. All rights reserved.
 
9
 *
 
10
 * This program is free software; you can redistribute it and/or modify
 
11
 * it under the terms of version 2 of the GNU General Public License as
 
12
 * published by the Free Software Foundation.
 
13
 *
 
14
 * This program is distributed in the hope that it will be useful, but
 
15
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
17
 * General Public License for more details.
 
18
 *
 
19
 * You should have received a copy of the GNU General Public License
 
20
 * along with this program; if not, write to the Free Software
 
21
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110,
 
22
 * USA
 
23
 *
 
24
 * The full GNU General Public License is included in this distribution
 
25
 * in the file called LICENSE.GPL.
 
26
 *
 
27
 * Contact Information:
 
28
 *  Intel Linux Wireless <ilw@linux.intel.com>
 
29
 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
30
 *
 
31
 * BSD LICENSE
 
32
 *
 
33
 * Copyright(c) 2010 - 2011 Intel Corporation. All rights reserved.
 
34
 * All rights reserved.
 
35
 *
 
36
 * Redistribution and use in source and binary forms, with or without
 
37
 * modification, are permitted provided that the following conditions
 
38
 * are met:
 
39
 *
 
40
 *  * Redistributions of source code must retain the above copyright
 
41
 *    notice, this list of conditions and the following disclaimer.
 
42
 *  * Redistributions in binary form must reproduce the above copyright
 
43
 *    notice, this list of conditions and the following disclaimer in
 
44
 *    the documentation and/or other materials provided with the
 
45
 *    distribution.
 
46
 *  * Neither the name Intel Corporation nor the names of its
 
47
 *    contributors may be used to endorse or promote products derived
 
48
 *    from this software without specific prior written permission.
 
49
 *
 
50
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
51
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
52
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 
53
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 
54
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 
55
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 
56
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
57
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
58
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
59
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
60
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
61
 *
 
62
 *****************************************************************************/
 
63
#ifndef __IWL_TESTMODE_H__
 
64
#define __IWL_TESTMODE_H__
 
65
 
 
66
#include <linux/types.h>
 
67
 
 
68
 
 
69
/*
 
70
 * Commands from user space to kernel space(IWL_TM_CMD_ID_APP2DEV_XX) and
 
71
 * from and kernel space to user space(IWL_TM_CMD_ID_DEV2APP_XX).
 
72
 * The command ID is carried with IWL_TM_ATTR_COMMAND.
 
73
 *
 
74
 * @IWL_TM_CMD_APP2DEV_UCODE:
 
75
 *      commands from user application to the uCode,
 
76
 *      the actual uCode host command ID is carried with
 
77
 *      IWL_TM_ATTR_UCODE_CMD_ID
 
78
 *
 
79
 * @IWL_TM_CMD_APP2DEV_REG_READ32:
 
80
 * @IWL_TM_CMD_APP2DEV_REG_WRITE32:
 
81
 * @IWL_TM_CMD_APP2DEV_REG_WRITE8:
 
82
 *      commands from user applicaiton to access register
 
83
 *
 
84
 * @IWL_TM_CMD_APP2DEV_GET_DEVICENAME: retrieve device name
 
85
 * @IWL_TM_CMD_APP2DEV_LOAD_INIT_FW: load initial uCode image
 
86
 * @IWL_TM_CMD_APP2DEV_CFG_INIT_CALIB: perform calibration
 
87
 * @IWL_TM_CMD_APP2DEV_LOAD_RUNTIME_FW: load runtime uCode image
 
88
 * @IWL_TM_CMD_APP2DEV_GET_EEPROM: request EEPROM data
 
89
 * @IWL_TM_CMD_APP2DEV_FIXRATE_REQ: set fix MCS
 
90
 *      commands fom user space for pure driver level operations
 
91
 *
 
92
 * @IWL_TM_CMD_APP2DEV_BEGIN_TRACE:
 
93
 * @IWL_TM_CMD_APP2DEV_END_TRACE:
 
94
 * @IWL_TM_CMD_APP2DEV_READ_TRACE:
 
95
 *      commands fom user space for uCode trace operations
 
96
 *
 
97
 * @IWL_TM_CMD_DEV2APP_SYNC_RSP:
 
98
 *      commands from kernel space to carry the synchronous response
 
99
 *      to user application
 
100
 * @IWL_TM_CMD_DEV2APP_UCODE_RX_PKT:
 
101
 *      commands from kernel space to multicast the spontaneous messages
 
102
 *      to user application
 
103
 * @IWL_TM_CMD_DEV2APP_EEPROM_RSP:
 
104
 *      commands from kernel space to carry the eeprom response
 
105
 *      to user application
 
106
 * @IWL_TM_CMD_APP2DEV_OWNERSHIP:
 
107
 *      commands from user application to own change the ownership of the uCode
 
108
 *      if application has the ownership, the only host command from
 
109
 *      testmode will deliver to uCode. Default owner is driver
 
110
 */
 
111
enum iwl_tm_cmd_t {
 
112
        IWL_TM_CMD_APP2DEV_UCODE                = 1,
 
113
        IWL_TM_CMD_APP2DEV_REG_READ32           = 2,
 
114
        IWL_TM_CMD_APP2DEV_REG_WRITE32          = 3,
 
115
        IWL_TM_CMD_APP2DEV_REG_WRITE8           = 4,
 
116
        IWL_TM_CMD_APP2DEV_GET_DEVICENAME       = 5,
 
117
        IWL_TM_CMD_APP2DEV_LOAD_INIT_FW         = 6,
 
118
        IWL_TM_CMD_APP2DEV_CFG_INIT_CALIB       = 7,
 
119
        IWL_TM_CMD_APP2DEV_LOAD_RUNTIME_FW      = 8,
 
120
        IWL_TM_CMD_APP2DEV_GET_EEPROM           = 9,
 
121
        IWL_TM_CMD_APP2DEV_FIXRATE_REQ          = 10,
 
122
        IWL_TM_CMD_APP2DEV_BEGIN_TRACE          = 11,
 
123
        IWL_TM_CMD_APP2DEV_END_TRACE            = 12,
 
124
        IWL_TM_CMD_APP2DEV_READ_TRACE           = 13,
 
125
        IWL_TM_CMD_DEV2APP_SYNC_RSP             = 14,
 
126
        IWL_TM_CMD_DEV2APP_UCODE_RX_PKT         = 15,
 
127
        IWL_TM_CMD_DEV2APP_EEPROM_RSP           = 16,
 
128
        IWL_TM_CMD_APP2DEV_OWNERSHIP            = 17,
 
129
        IWL_TM_CMD_MAX                          = 18,
 
130
};
 
131
 
 
132
/*
 
133
 * Atrribute filed in testmode command
 
134
 * See enum iwl_tm_cmd_t.
 
135
 *
 
136
 * @IWL_TM_ATTR_NOT_APPLICABLE:
 
137
 *      The attribute is not applicable or invalid
 
138
 * @IWL_TM_ATTR_COMMAND:
 
139
 *      From user space to kernel space:
 
140
 *      the command either destines to ucode, driver, or register;
 
141
 *      From kernel space to user space:
 
142
 *      the command either carries synchronous response,
 
143
 *      or the spontaneous message multicast from the device;
 
144
 *
 
145
 * @IWL_TM_ATTR_UCODE_CMD_ID:
 
146
 * @IWL_TM_ATTR_UCODE_CMD_DATA:
 
147
 *      When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_APP2DEV_UCODE,
 
148
 *      The mandatory fields are :
 
149
 *      IWL_TM_ATTR_UCODE_CMD_ID for recognizable command ID;
 
150
 *      IWL_TM_ATTR_COMMAND_FLAG for the flags of the commands;
 
151
 *      The optional fields are:
 
152
 *      IWL_TM_ATTR_UCODE_CMD_DATA for the actual command payload
 
153
 *      to the ucode
 
154
 *
 
155
 * @IWL_TM_ATTR_REG_OFFSET:
 
156
 * @IWL_TM_ATTR_REG_VALUE8:
 
157
 * @IWL_TM_ATTR_REG_VALUE32:
 
158
 *      When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_APP2DEV_REG_XXX,
 
159
 *      The mandatory fields are:
 
160
 *      IWL_TM_ATTR_REG_OFFSET for the offset of the target register;
 
161
 *      IWL_TM_ATTR_REG_VALUE8 or IWL_TM_ATTR_REG_VALUE32 for value
 
162
 *
 
163
 * @IWL_TM_ATTR_SYNC_RSP:
 
164
 *      When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_DEV2APP_SYNC_RSP,
 
165
 *      The mandatory fields are:
 
166
 *      IWL_TM_ATTR_SYNC_RSP for the data content responding to the user
 
167
 *      application command
 
168
 *
 
169
 * @IWL_TM_ATTR_UCODE_RX_PKT:
 
170
 *      When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_DEV2APP_UCODE_RX_PKT,
 
171
 *      The mandatory fields are:
 
172
 *      IWL_TM_ATTR_UCODE_RX_PKT for the data content multicast to the user
 
173
 *      application
 
174
 *
 
175
 * @IWL_TM_ATTR_EEPROM:
 
176
 *      When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_DEV2APP_EEPROM,
 
177
 *      The mandatory fields are:
 
178
 *      IWL_TM_ATTR_EEPROM for the data content responging to the user
 
179
 *      application
 
180
 *
 
181
 * @IWL_TM_ATTR_TRACE_ADDR:
 
182
 * @IWL_TM_ATTR_TRACE_SIZE:
 
183
 * @IWL_TM_ATTR_TRACE_DUMP:
 
184
 *      When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_APP2DEV_XXX_TRACE,
 
185
 *      The mandatory fields are:
 
186
 *      IWL_TM_ATTR_MEM_TRACE_ADDR for the trace address
 
187
 *      IWL_TM_ATTR_MEM_TRACE_SIZE for the trace buffer size
 
188
 *      IWL_TM_ATTR_MEM_TRACE_DUMP for the trace dump
 
189
 *
 
190
 * @IWL_TM_ATTR_FIXRATE:
 
191
 *      When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_APP2DEV_FIXRATE_REQ,
 
192
 *      The mandatory fields are:
 
193
 *      IWL_TM_ATTR_FIXRATE for the fixed rate
 
194
 *
 
195
 * @IWL_TM_ATTR_UCODE_OWNER:
 
196
 *      When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_APP2DEV_OWNERSHIP,
 
197
 *      The mandatory fields are:
 
198
 *      IWL_TM_ATTR_UCODE_OWNER for the new owner
 
199
 */
 
200
enum iwl_tm_attr_t {
 
201
        IWL_TM_ATTR_NOT_APPLICABLE              = 0,
 
202
        IWL_TM_ATTR_COMMAND                     = 1,
 
203
        IWL_TM_ATTR_UCODE_CMD_ID                = 2,
 
204
        IWL_TM_ATTR_UCODE_CMD_DATA              = 3,
 
205
        IWL_TM_ATTR_REG_OFFSET                  = 4,
 
206
        IWL_TM_ATTR_REG_VALUE8                  = 5,
 
207
        IWL_TM_ATTR_REG_VALUE32                 = 6,
 
208
        IWL_TM_ATTR_SYNC_RSP                    = 7,
 
209
        IWL_TM_ATTR_UCODE_RX_PKT                = 8,
 
210
        IWL_TM_ATTR_EEPROM                      = 9,
 
211
        IWL_TM_ATTR_TRACE_ADDR                  = 10,
 
212
        IWL_TM_ATTR_TRACE_SIZE                  = 11,
 
213
        IWL_TM_ATTR_TRACE_DUMP                  = 12,
 
214
        IWL_TM_ATTR_FIXRATE                     = 13,
 
215
        IWL_TM_ATTR_UCODE_OWNER                 = 14,
 
216
        IWL_TM_ATTR_MAX                         = 15,
 
217
};
 
218
 
 
219
/* uCode trace buffer */
 
220
#define TRACE_BUFF_SIZE_MAX     0x200000
 
221
#define TRACE_BUFF_SIZE_MIN     0x20000
 
222
#define TRACE_BUFF_SIZE_DEF     TRACE_BUFF_SIZE_MIN
 
223
#define TRACE_BUFF_PADD         0x2000
 
224
#define TRACE_CHUNK_SIZE        (PAGE_SIZE - 1024)
 
225
 
 
226
#endif