1*1ccea77eSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 233aca94dSKalle Valo /* 333aca94dSKalle Valo Copyright (C) 2009 Ivo van Doorn <IvDoorn@gmail.com> 433aca94dSKalle Valo Copyright (C) 2009 Mattias Nissler <mattias.nissler@gmx.de> 533aca94dSKalle Valo Copyright (C) 2009 Felix Fietkau <nbd@openwrt.org> 633aca94dSKalle Valo Copyright (C) 2009 Xose Vazquez Perez <xose.vazquez@gmail.com> 733aca94dSKalle Valo Copyright (C) 2009 Axel Kollhofer <rain_maker@root-forum.org> 833aca94dSKalle Valo <http://rt2x00.serialmonkey.com> 933aca94dSKalle Valo 1033aca94dSKalle Valo */ 1133aca94dSKalle Valo 1233aca94dSKalle Valo /* 1333aca94dSKalle Valo Module: rt2800usb 1433aca94dSKalle Valo Abstract: Data structures and registers for the rt2800usb module. 1533aca94dSKalle Valo Supported chipsets: RT2800U. 1633aca94dSKalle Valo */ 1733aca94dSKalle Valo 1833aca94dSKalle Valo #ifndef RT2800USB_H 1933aca94dSKalle Valo #define RT2800USB_H 2033aca94dSKalle Valo 2133aca94dSKalle Valo /* 2233aca94dSKalle Valo * 8051 firmware image. 2333aca94dSKalle Valo */ 2433aca94dSKalle Valo #define FIRMWARE_RT2870 "rt2870.bin" 2533aca94dSKalle Valo #define FIRMWARE_IMAGE_BASE 0x3000 2633aca94dSKalle Valo 2733aca94dSKalle Valo /* 2833aca94dSKalle Valo * DMA descriptor defines. 2933aca94dSKalle Valo */ 3033aca94dSKalle Valo #define TXINFO_DESC_SIZE (1 * sizeof(__le32)) 3133aca94dSKalle Valo #define RXINFO_DESC_SIZE (1 * sizeof(__le32)) 3233aca94dSKalle Valo 3333aca94dSKalle Valo /* 3433aca94dSKalle Valo * TX Info structure 3533aca94dSKalle Valo */ 3633aca94dSKalle Valo 3733aca94dSKalle Valo /* 3833aca94dSKalle Valo * Word0 3933aca94dSKalle Valo * WIV: Wireless Info Valid. 1: Driver filled WI, 0: DMA needs to copy WI 4033aca94dSKalle Valo * QSEL: Select on-chip FIFO ID for 2nd-stage output scheduler. 4133aca94dSKalle Valo * 0:MGMT, 1:HCCA 2:EDCA 4233aca94dSKalle Valo * USB_DMA_NEXT_VALID: Used ONLY in USB bulk Aggregation, NextValid 4333aca94dSKalle Valo * DMA_TX_BURST: used ONLY in USB bulk Aggregation. 4433aca94dSKalle Valo * Force USB DMA transmit frame from current selected endpoint 4533aca94dSKalle Valo */ 4633aca94dSKalle Valo #define TXINFO_W0_USB_DMA_TX_PKT_LEN FIELD32(0x0000ffff) 4733aca94dSKalle Valo #define TXINFO_W0_WIV FIELD32(0x01000000) 4833aca94dSKalle Valo #define TXINFO_W0_QSEL FIELD32(0x06000000) 4933aca94dSKalle Valo #define TXINFO_W0_SW_USE_LAST_ROUND FIELD32(0x08000000) 5033aca94dSKalle Valo #define TXINFO_W0_USB_DMA_NEXT_VALID FIELD32(0x40000000) 5133aca94dSKalle Valo #define TXINFO_W0_USB_DMA_TX_BURST FIELD32(0x80000000) 5233aca94dSKalle Valo 5333aca94dSKalle Valo /* 5433aca94dSKalle Valo * RX Info structure 5533aca94dSKalle Valo */ 5633aca94dSKalle Valo 5733aca94dSKalle Valo /* 5833aca94dSKalle Valo * Word 0 5933aca94dSKalle Valo */ 6033aca94dSKalle Valo 6133aca94dSKalle Valo #define RXINFO_W0_USB_DMA_RX_PKT_LEN FIELD32(0x0000ffff) 6233aca94dSKalle Valo 6333aca94dSKalle Valo /* 6433aca94dSKalle Valo * RX descriptor format for RX Ring. 6533aca94dSKalle Valo */ 6633aca94dSKalle Valo 6733aca94dSKalle Valo /* 6833aca94dSKalle Valo * Word0 6933aca94dSKalle Valo * UNICAST_TO_ME: This RX frame is unicast to me. 7033aca94dSKalle Valo * MULTICAST: This is a multicast frame. 7133aca94dSKalle Valo * BROADCAST: This is a broadcast frame. 7233aca94dSKalle Valo * MY_BSS: this frame belongs to the same BSSID. 7333aca94dSKalle Valo * CRC_ERROR: CRC error. 7433aca94dSKalle Valo * CIPHER_ERROR: 0: decryption okay, 1:ICV error, 2:MIC error, 3:KEY not valid. 7533aca94dSKalle Valo * AMSDU: rx with 802.3 header, not 802.11 header. 7633aca94dSKalle Valo */ 7733aca94dSKalle Valo 7833aca94dSKalle Valo #define RXD_W0_BA FIELD32(0x00000001) 7933aca94dSKalle Valo #define RXD_W0_DATA FIELD32(0x00000002) 8033aca94dSKalle Valo #define RXD_W0_NULLDATA FIELD32(0x00000004) 8133aca94dSKalle Valo #define RXD_W0_FRAG FIELD32(0x00000008) 8233aca94dSKalle Valo #define RXD_W0_UNICAST_TO_ME FIELD32(0x00000010) 8333aca94dSKalle Valo #define RXD_W0_MULTICAST FIELD32(0x00000020) 8433aca94dSKalle Valo #define RXD_W0_BROADCAST FIELD32(0x00000040) 8533aca94dSKalle Valo #define RXD_W0_MY_BSS FIELD32(0x00000080) 8633aca94dSKalle Valo #define RXD_W0_CRC_ERROR FIELD32(0x00000100) 8733aca94dSKalle Valo #define RXD_W0_CIPHER_ERROR FIELD32(0x00000600) 8833aca94dSKalle Valo #define RXD_W0_AMSDU FIELD32(0x00000800) 8933aca94dSKalle Valo #define RXD_W0_HTC FIELD32(0x00001000) 9033aca94dSKalle Valo #define RXD_W0_RSSI FIELD32(0x00002000) 9133aca94dSKalle Valo #define RXD_W0_L2PAD FIELD32(0x00004000) 9233aca94dSKalle Valo #define RXD_W0_AMPDU FIELD32(0x00008000) 9333aca94dSKalle Valo #define RXD_W0_DECRYPTED FIELD32(0x00010000) 9433aca94dSKalle Valo #define RXD_W0_PLCP_RSSI FIELD32(0x00020000) 9533aca94dSKalle Valo #define RXD_W0_CIPHER_ALG FIELD32(0x00040000) 9633aca94dSKalle Valo #define RXD_W0_LAST_AMSDU FIELD32(0x00080000) 9733aca94dSKalle Valo #define RXD_W0_PLCP_SIGNAL FIELD32(0xfff00000) 9833aca94dSKalle Valo 9933aca94dSKalle Valo #endif /* RT2800USB_H */ 100