1d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn/*
29c9a0d145fee73b5e821bb460732ac2a66c680b3Gertjan van Wingerde	Copyright (C) 2009 Ivo van Doorn <IvDoorn@gmail.com>
39c9a0d145fee73b5e821bb460732ac2a66c680b3Gertjan van Wingerde	Copyright (C) 2009 Mattias Nissler <mattias.nissler@gmx.de>
49c9a0d145fee73b5e821bb460732ac2a66c680b3Gertjan van Wingerde	Copyright (C) 2009 Felix Fietkau <nbd@openwrt.org>
59c9a0d145fee73b5e821bb460732ac2a66c680b3Gertjan van Wingerde	Copyright (C) 2009 Xose Vazquez Perez <xose.vazquez@gmail.com>
69c9a0d145fee73b5e821bb460732ac2a66c680b3Gertjan van Wingerde	Copyright (C) 2009 Axel Kollhofer <rain_maker@root-forum.org>
7d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	<http://rt2x00.serialmonkey.com>
8d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
9d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	This program is free software; you can redistribute it and/or modify
10d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	it under the terms of the GNU General Public License as published by
11d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	the Free Software Foundation; either version 2 of the License, or
12d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	(at your option) any later version.
13d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
14d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	This program is distributed in the hope that it will be useful,
15d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	but WITHOUT ANY WARRANTY; without even the implied warranty of
16d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	GNU General Public License for more details.
18d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
19d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	You should have received a copy of the GNU General Public License
20d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	along with this program; if not, write to the
21d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	Free Software Foundation, Inc.,
22d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn */
24d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
25d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn/*
26d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	Module: rt2800usb
27d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	Abstract: Data structures and registers for the rt2800usb module.
28d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn	Supported chipsets: RT2800U.
29d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn */
30d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
31d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#ifndef RT2800USB_H
32d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#define RT2800USB_H
33d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
34d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn/*
35d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * 8051 firmware image.
36d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn */
37d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#define FIRMWARE_RT2870			"rt2870.bin"
38d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#define FIRMWARE_IMAGE_BASE		0x3000
39d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
40d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn/*
41d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * DMA descriptor defines.
42d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn */
4387a46caf920515eb269df0109f0a61a958236568Mark Einon#define TXINFO_DESC_SIZE		(1 * sizeof(__le32))
4487a46caf920515eb269df0109f0a61a958236568Mark Einon#define RXINFO_DESC_SIZE		(1 * sizeof(__le32))
45d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
46d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn/*
47d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * TX Info structure
48d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn */
49d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
50d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn/*
51d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * Word0
52d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * WIV: Wireless Info Valid. 1: Driver filled WI,  0: DMA needs to copy WI
53d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * QSEL: Select on-chip FIFO ID for 2nd-stage output scheduler.
54d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn *       0:MGMT, 1:HCCA 2:EDCA
55d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * USB_DMA_NEXT_VALID: Used ONLY in USB bulk Aggregation, NextValid
56d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * DMA_TX_BURST: used ONLY in USB bulk Aggregation.
57d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn *               Force USB DMA transmit frame from current selected endpoint
58d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn */
59d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#define TXINFO_W0_USB_DMA_TX_PKT_LEN	FIELD32(0x0000ffff)
60d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#define TXINFO_W0_WIV			FIELD32(0x01000000)
61d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#define TXINFO_W0_QSEL			FIELD32(0x06000000)
62d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#define TXINFO_W0_SW_USE_LAST_ROUND	FIELD32(0x08000000)
63d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#define TXINFO_W0_USB_DMA_NEXT_VALID	FIELD32(0x40000000)
64d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#define TXINFO_W0_USB_DMA_TX_BURST	FIELD32(0x80000000)
65d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
66d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn/*
675de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault * RX Info structure
685de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault */
695de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault
705de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault/*
715de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault * Word 0
725de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault */
735de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault
745de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXINFO_W0_USB_DMA_RX_PKT_LEN	FIELD32(0x0000ffff)
755de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault
765de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault/*
77d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * RX descriptor format for RX Ring.
78d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn */
79d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
80d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn/*
81d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * Word0
82d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * UNICAST_TO_ME: This RX frame is unicast to me.
83d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * MULTICAST: This is a multicast frame.
84d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * BROADCAST: This is a broadcast frame.
85d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * MY_BSS: this frame belongs to the same BSSID.
86d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * CRC_ERROR: CRC error.
87d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * CIPHER_ERROR: 0: decryption okay, 1:ICV error, 2:MIC error, 3:KEY not valid.
88d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn * AMSDU: rx with 802.3 header, not 802.11 header.
89d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn */
90d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
915de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_BA			FIELD32(0x00000001)
925de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_DATA			FIELD32(0x00000002)
935de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_NULLDATA			FIELD32(0x00000004)
945de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_FRAG			FIELD32(0x00000008)
955de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_UNICAST_TO_ME		FIELD32(0x00000010)
965de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_MULTICAST		FIELD32(0x00000020)
975de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_BROADCAST		FIELD32(0x00000040)
985de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_MY_BSS			FIELD32(0x00000080)
995de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_CRC_ERROR		FIELD32(0x00000100)
1005de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_CIPHER_ERROR		FIELD32(0x00000600)
1015de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_AMSDU			FIELD32(0x00000800)
1025de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_HTC			FIELD32(0x00001000)
1035de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_RSSI			FIELD32(0x00002000)
1045de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_L2PAD			FIELD32(0x00004000)
1055de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_AMPDU			FIELD32(0x00008000)
1065de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_DECRYPTED		FIELD32(0x00010000)
1075de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_PLCP_RSSI		FIELD32(0x00020000)
1085de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_CIPHER_ALG		FIELD32(0x00040000)
1095de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_LAST_AMSDU		FIELD32(0x00080000)
1105de42f9eeafa7d54ffb833e0526d4828e194fddbBenoit Papillault#define RXD_W0_PLCP_SIGNAL		FIELD32(0xfff00000)
111d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn
112d53d9e67b55f6a9fc3f836c5c392eb41ce5676f4Ivo van Doorn#endif /* RT2800USB_H */
113