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