aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/bcm/Macros.h
blob: 0241234605f156774d605add63e303a48732747a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
/*************************************
*	Macros.h
**************************************/
#ifndef	__MACROS_H__
#define __MACROS_H__

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
#define kthread_run(threadfn,data,datafmt)(struct task_struct *)kernel_thread(threadfn,data,0)
#endif

#define TX_TIMER_PERIOD 10	//10 msec
#define MAX_CLASSIFIERS 100
//#define MAX_CLASSIFIERS_PER_SF  20
#define MAX_TARGET_DSX_BUFFERS 24

#define MAX_CNTRL_PKTS 	100
#define MAX_DATA_PKTS 		200
#define MAX_ETH_SIZE 		1536
#define MAX_CNTL_PKT_SIZE 2048
/* TIMER RELATED */
#define JIFFIES_2_QUADPART()	(ULONG)(jiffies * 10000) // jiffies(1msec) to Quadpart(100nsec)

#define MTU_SIZE 1400

#define MAC_ADDR_REGISTER 0xbf60d000


///////////Quality of Service///////////////////////////
#define NO_OF_QUEUES				17
#define HiPriority                  NO_OF_QUEUES-1
#define LowPriority                 0
#define BE                          2
#define rtPS                        4
#define ERTPS                       5
#define UGS                         6

#define BE_BUCKET_SIZE          	1024*1024*100  //32kb
#define rtPS_BUCKET_SIZE        	1024*1024*100    //8kb
#define MAX_ALLOWED_RATE    		1024*1024*100
#define TX_PACKET_THRESHOLD 		10
#define XSECONDS                    1*HZ
#define DSC_ACTIVATE_REQUEST    	248
#define QUEUE_DEPTH_OFFSET          0x1fc01000
#define MAX_DEVICE_DESC_SIZE 		2040
#define MAX_CTRL_QUEUE_LEN			100
#define MAX_APP_QUEUE_LEN			200
#define MAX_LATENCY_ALLOWED			0xFFFFFFFF
#define DEFAULT_UG_INTERVAL			250
#define DEFAULT_UGI_FACTOR			4

#define DEFAULT_PERSFCOUNT			60
#define MAX_CONNECTIONS				10
#define MAX_CLASS_NAME_LENGTH      	32

#define	ETH_LENGTH_OF_ADDRESS		6
#define MAX_MULTICAST_ADDRESSES     32
#define IP_LENGTH_OF_ADDRESS    	4

#define IP_PACKET_ONLY_MODE			0
#define ETH_PACKET_TUNNELING_MODE	1

////////////Link Request//////////////
#define SET_MAC_ADDRESS_REQUEST		0
#define SYNC_UP_REQUEST             1
#define SYNCED_UP                   2
#define LINK_UP_REQUEST             3
#define LINK_CONNECTED              4
#define SYNC_UP_NOTIFICATION    	2
#define LINK_UP_NOTIFICATION    	4


#define LINK_NET_ENTRY              0x0002
#define HMC_STATUS					0x0004
#define LINK_UP_CONTROL_REQ         0x83

#define STATS_POINTER_REQ_STATUS    0x86
#define NETWORK_ENTRY_REQ_PAYLOAD   198
#define LINK_DOWN_REQ_PAYLOAD  	 	226
#define SYNC_UP_REQ_PAYLOAD         228
#define STATISTICS_POINTER_REQ  	237
#define LINK_UP_REQ_PAYLOAD         245
#define LINK_UP_ACK                 246

#define STATS_MSG_SIZE              4
#define INDEX_TO_DATA               4

#define	GO_TO_IDLE_MODE_PAYLOAD			210
#define	COME_UP_FROM_IDLE_MODE_PAYLOAD	211
#define IDLE_MODE_SF_UPDATE_MSG			187

#define SKB_RESERVE_ETHERNET_HEADER	16
#define SKB_RESERVE_PHS_BYTES		32

#define IP_PACKET_ONLY_MODE			0
#define ETH_PACKET_TUNNELING_MODE	1

#define ETH_CS_802_3				1
#define ETH_CS_802_1Q_VLAN			3
#define IPV4_CS						1
#define IPV6_CS						2
#define	ETH_CS_MASK					0x3f

/** \brief Validity bit maps for TLVs in packet classification rule */

#define PKT_CLASSIFICATION_USER_PRIORITY_VALID		0
#define PKT_CLASSIFICATION_VLANID_VALID				1

#ifndef MIN
#define MIN(_a, _b) ((_a) < (_b)? (_a): (_b))
#endif


/*Leader related terms */
#define LEADER_STATUS   				0x00
#define LEADER_STATUS_TCP_ACK			0x1
#define LEADER_SIZE             		sizeof(LEADER)
#define MAC_ADDR_REQ_SIZE				sizeof(PACKETTOSEND)
#define SS_INFO_REQ_SIZE				sizeof(PACKETTOSEND)
#define	CM_REQUEST_SIZE					LEADER_SIZE + sizeof(stLocalSFChangeRequest)
#define IDLE_REQ_SIZE					sizeof(PACKETTOSEND)


#define MAX_TRANSFER_CTRL_BYTE_USB		2 * 1024

#define GET_MAILBOX1_REG_REQUEST        0x87
#define GET_MAILBOX1_REG_RESPONSE       0x67
#define VCID_CONTROL_PACKET             0x00

#define TRANSMIT_NETWORK_DATA           0x00
#define RECEIVED_NETWORK_DATA           0x20

#define CM_RESPONSES					0xA0
#define STATUS_RSP						0xA1
#define LINK_CONTROL_RESP				0xA2
#define	IDLE_MODE_STATUS				0xA3
#define STATS_POINTER_RESP				0xA6
#define MGMT_MSG_INFO_SW_STATUS         0xA7
#define AUTH_SS_HOST_MSG	    		0xA8

#define CM_DSA_ACK_PAYLOAD				247
#define CM_DSC_ACK_PAYLOAD				248
#define CM_DSD_ACK_PAYLOAD				249
#define CM_DSDEACTVATE					250
#define TOTAL_MASKED_ADDRESS_IN_BYTES	32

#define MAC_REQ				0
#define LINK_RESP			1
#define RSSI_INDICATION 	2

#define SS_INFO         	4
#define STATISTICS_INFO 	5
#define CM_INDICATION   	6
#define PARAM_RESP			7
#define BUFFER_1K 			1024
#define BUFFER_2K 			BUFFER_1K*2
#define BUFFER_4K 			BUFFER_2K*2
#define BUFFER_8K 			BUFFER_4K*2
#define BUFFER_16K 			BUFFER_8K*2
#define DOWNLINK_DIR 0
#define UPLINK_DIR 1

#define BCM_SIGNATURE		"BECEEM"


#define GPIO_OUTPUT_REGISTER	 0x0F00003C
#define BCM_GPIO_OUTPUT_SET_REG  0x0F000040
#define BCM_GPIO_OUTPUT_CLR_REG  0x0F000044
#define GPIO_MODE_REGISTER       0x0F000034
#define GPIO_PIN_STATE_REGISTER  0x0F000038


typedef struct _LINK_STATE {
	UCHAR	ucLinkStatus;
    UCHAR   bIdleMode;
	UCHAR	bShutdownMode;
}LINK_STATE, *PLINK_STATE;


enum enLinkStatus {
    WAIT_FOR_SYNC = 	1,
    PHY_SYNC_ACHIVED = 	2,
    LINKUP_IN_PROGRESS = 3,
    LINKUP_DONE     = 	4,
    DREG_RECIEVED =		5,
    LINK_STATUS_RESET_RECIEVED = 6,
    PERIODIC_WAKE_UP_NOTIFICATION_FRM_FW  = 7,
    LINK_SHUTDOWN_REQ_FROM_FIRMWARE = 8,
    COMPLETE_WAKE_UP_NOTIFICATION_FRM_FW =9
};

typedef enum _E_PHS_DSC_ACTION
{
	eAddPHSRule=0,
	eSetPHSRule,
	eDeletePHSRule,
	eDeleteAllPHSRules
}E_PHS_DSC_ACTION;


#define CM_CONTROL_NEWDSX_MULTICLASSIFIER_REQ		0x89    // Host to Mac
#define CM_CONTROL_NEWDSX_MULTICLASSIFIER_RESP      0xA9    // Mac to Host
#define MASK_DISABLE_HEADER_SUPPRESSION 			0x10 //0b000010000
#define	MINIMUM_PENDING_DESCRIPTORS					5

#define SHUTDOWN_HOSTINITIATED_REQUESTPAYLOAD 0xCC
#define SHUTDOWN_ACK_FROM_DRIVER 0x1
#define SHUTDOWN_NACK_FROM_DRIVER 0x2

#define LINK_SYNC_UP_SUBTYPE		0x0001
#define LINK_SYNC_DOWN_SUBTYPE		0x0001



#define CONT_MODE 1
#define SINGLE_DESCRIPTOR 1


#define DESCRIPTOR_LENGTH 0x30
#define FIRMWARE_DESCS_ADDRESS 0x1F100000


#define CLOCK_RESET_CNTRL_REG_1 0x0F00000C
#define CLOCK_RESET_CNTRL_REG_2 0x0F000840



#define TX_DESCRIPTOR_HEAD_REGISTER 0x0F010034
#define RX_DESCRIPTOR_HEAD_REGISTER 0x0F010094

#define STATISTICS_BEGIN_ADDR        0xbf60f02c

#define MAX_PENDING_CTRL_PACKET (MAX_CTRL_QUEUE_LEN-10)

#define WIMAX_MAX_MTU			(MTU_SIZE + ETH_HLEN)
#define AUTO_LINKUP_ENABLE              0x2
#define AUTO_SYNC_DISABLE              	0x1
#define AUTO_FIRM_DOWNLOAD              0x1
#define SETTLE_DOWN_TIME                50

#define HOST_BUS_SUSPEND_BIT            16

#define IDLE_MESSAGE 0x81

#define MIPS_CLOCK_133MHz 1

#define TARGET_CAN_GO_TO_IDLE_MODE 2
#define TARGET_CAN_NOT_GO_TO_IDLE_MODE 3
#define IDLE_MODE_PAYLOAD_LENGTH 8

#define IP_HEADER(Buffer) ((IPHeaderFormat*)(Buffer))
#define IPV4				4
#define IP_VERSION(byte)	(((byte&0xF0)>>4))

#define SET_MAC_ADDRESS  193
#define SET_MAC_ADDRESS_RESPONSE 236

#define IDLE_MODE_WAKEUP_PATTERN 0xd0ea1d1e
#define IDLE_MODE_WAKEUP_NOTIFIER_ADDRESS 0x1FC02FA8
#define IDLE_MODE_MAX_RETRY_COUNT 1000

#ifdef REL_4_1
#define CONFIG_BEGIN_ADDR 0xBF60B004
#else
#define CONFIG_BEGIN_ADDR 0xBF60B000
#endif

#define FIRMWARE_BEGIN_ADDR 0xBFC00000

#define INVALID_QUEUE_INDEX (USHORT)-1

#define INVALID_PID (pid_t)-1
#define DDR_80_MHZ  	0
#define DDR_100_MHZ 	1
#define DDR_120_MHZ    	2 //  Additional Frequency for T3LP
#define DDR_133_MHZ    	3
#define DDR_140_MHZ    	4 //  Not Used (Reserved for future)
#define DDR_160_MHZ    	5 //  Additional Frequency for T3LP
#define DDR_180_MHZ    	6 //  Not Used (Reserved for future)
#define DDR_200_MHZ    	7 //  Not Used (Reserved for future)

#define MIPS_200_MHZ   0
#define MIPS_160_MHZ   1

#define PLL_800_MHZ    0
#define PLL_266_MHZ    1

#define DEVICE_POWERSAVE_MODE_AS_MANUAL_CLOCK_GATING        0
#define DEVICE_POWERSAVE_MODE_AS_PMU_CLOCK_GATING           1
#define DEVICE_POWERSAVE_MODE_AS_PMU_SHUTDOWN               2
#define DEVICE_POWERSAVE_MODE_AS_RESERVED                   3
#define DEVICE_POWERSAVE_MODE_AS_PROTOCOL_IDLE_MODE         4


#define EEPROM_REJECT_REG_1 0x0f003018
#define EEPROM_REJECT_REG_2 0x0f00301c
#define EEPROM_REJECT_REG_3 0x0f003008
#define EEPROM_REJECT_REG_4 0x0f003020
#define EEPROM_REJECT_MASK  0x0fffffff
#define VSG_MODE			  0x3

/* Idle Mode Related Registers */
#define DEBUG_INTERRUPT_GENERATOR_REGISTOR 0x0F00007C
#ifdef BCM_SHM_INTERFACE
#define SW_ABORT_IDLEMODE_LOC 		0xbfc02f9c
#define CPE_VIRTUAL_MAILBOX_REG     0xBFC02E58
#else
#define SW_ABORT_IDLEMODE_LOC 		0x0FF01FFC
#endif

#define SW_ABORT_IDLEMODE_PATTERN 	0xd0ea1d1e
#define DEVICE_INT_OUT_EP_REG0		0x0F011870
#define DEVICE_INT_OUT_EP_REG1		0x0F011874

#define BIN_FILE "/lib/firmware/macxvi200.bin"
#define CFG_FILE "/lib/firmware/macxvi.cfg"
#define SF_MAX_ALLOWED_PACKETS_TO_BACKUP 128
#define MIN_VAL(x,y) 	((x)<(y)?(x):(y))
#define MAC_ADDRESS_SIZE 6
#define EEPROM_COMMAND_Q_REG    0x0F003018
#define EEPROM_READ_DATA_Q_REG  0x0F003020
#define CHIP_ID_REG 			0x0F000000
#define GPIO_MODE_REG			0x0F000034
#define GPIO_OUTPUT_REG			0x0F00003C
#define WIMAX_MAX_ALLOWED_RATE  1024*1024*50

#define T3 0xbece0300
#define TARGET_SFID_TXDESC_MAP_LOC 0xBFFFF400

#define RWM_READ 0
#define RWM_WRITE 1

#define T3LPB       0xbece3300
#define BCS220_2	0xbece3311
#define BCS220_2BC	0xBECE3310
#define BCS250_BC	0xbece3301
#define BCS220_3	0xbece3321


#define HPM_CONFIG_LDO145	0x0F000D54
#define HPM_CONFIG_MSW		0x0F000D58

#define T3B 0xbece0310
typedef enum eNVM_TYPE
{
	NVM_AUTODETECT = 0,
	NVM_EEPROM,
	NVM_FLASH,
	NVM_UNKNOWN
}NVM_TYPE;

typedef enum ePMU_MODES
{
	HYBRID_MODE_7C  = 0,
	INTERNAL_MODE_6 = 1,
	HYBRID_MODE_6   = 2
}PMU_MODE;

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
#define MAX_RDM_WRM_RETIRES 16
#else
#define MAX_RDM_WRM_RETIRES 1
#endif


enum eAbortPattern {
	ABORT_SHUTDOWN_MODE = 1,
	ABORT_IDLE_REG = 1,
	ABORT_IDLE_MODE = 2,
	ABORT_IDLE_SYNCDOWN = 3
};

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
	#define GET_BCM_ADAPTER(net_dev)  ({\
    PMINI_ADAPTER __Adapter = NULL;	\
    if (net_dev)    {   \
         __Adapter = (PMINI_ADAPTER)(net_dev->priv); \
    } \
    else    {   \
         __Adapter = NULL;  \
    }__Adapter;} )
#else
	#define GET_BCM_ADAPTER(net_dev) ({\
    PMINI_ADAPTER __Adapter = NULL;	\
    if (net_dev)    {   \
         __Adapter = (PMINI_ADAPTER)(*((unsigned long *)netdev_priv(net_dev)));  \
    } \
    else    {   \
         __Adapter = NULL;  \
    }__Adapter;})


#endif

/* Offsets used by driver in skb cb variable */
#define SKB_CB_CLASSIFICATION_OFFSET    0
#define SKB_CB_LATENCY_OFFSET           1
#define SKB_CB_TCPACK_OFFSET            2

#endif	//__MACROS_H__