Home | History | Annotate | Line # | Download | only in usb
if_uralreg.h revision 1.5
      1  1.5   msaitoh /*	$NetBSD: if_uralreg.h,v 1.5 2019/07/25 11:10:38 msaitoh Exp $ */
      2  1.1  drochner /*	$OpenBSD: if_ralreg.h,v 1.5 2005/04/01 13:13:43 damien Exp $  */
      3  1.1  drochner 
      4  1.1  drochner /*-
      5  1.1  drochner  * Copyright (c) 2005
      6  1.1  drochner  *	Damien Bergamini <damien.bergamini (at) free.fr>
      7  1.1  drochner  *
      8  1.1  drochner  * Permission to use, copy, modify, and distribute this software for any
      9  1.1  drochner  * purpose with or without fee is hereby granted, provided that the above
     10  1.1  drochner  * copyright notice and this permission notice appear in all copies.
     11  1.1  drochner  *
     12  1.1  drochner  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     13  1.1  drochner  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     14  1.1  drochner  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     15  1.1  drochner  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     16  1.1  drochner  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     17  1.1  drochner  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     18  1.1  drochner  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     19  1.1  drochner  */
     20  1.1  drochner 
     21  1.4     skrll #define RAL_RX_DESC_SIZE	(sizeof(struct ural_rx_desc))
     22  1.4     skrll #define RAL_TX_DESC_SIZE	(sizeof(struct ural_tx_desc))
     23  1.1  drochner 
     24  1.1  drochner #define RAL_CONFIG_NO	1
     25  1.1  drochner #define RAL_IFACE_INDEX 0
     26  1.1  drochner 
     27  1.3     perry #define RAL_VENDOR_REQUEST	0x01
     28  1.1  drochner #define RAL_WRITE_MAC		0x02
     29  1.1  drochner #define RAL_READ_MAC		0x03
     30  1.1  drochner #define RAL_WRITE_MULTI_MAC	0x06
     31  1.1  drochner #define RAL_READ_MULTI_MAC	0x07
     32  1.1  drochner #define RAL_READ_EEPROM		0x09
     33  1.1  drochner 
     34  1.1  drochner /*
     35  1.1  drochner  * MAC registers.
     36  1.1  drochner  */
     37  1.1  drochner #define RAL_MAC_CSR0	0x0400	/* ASIC Version */
     38  1.1  drochner #define RAL_MAC_CSR1	0x0402	/* System control */
     39  1.1  drochner #define RAL_MAC_CSR2	0x0404	/* MAC addr0 */
     40  1.1  drochner #define RAL_MAC_CSR3	0x0406	/* MAC addr1 */
     41  1.1  drochner #define RAL_MAC_CSR4	0x0408	/* MAC addr2 */
     42  1.1  drochner #define RAL_MAC_CSR5	0x040a	/* BSSID0 */
     43  1.1  drochner #define RAL_MAC_CSR6	0x040c	/* BSSID1 */
     44  1.1  drochner #define RAL_MAC_CSR7	0x040e	/* BSSID2 */
     45  1.1  drochner #define RAL_MAC_CSR8	0x0410	/* Max frame length */
     46  1.1  drochner #define RAL_MAC_CSR9	0x0412	/* Timer control */
     47  1.3     perry #define RAL_MAC_CSR10	0x0414	/* Slot time */
     48  1.1  drochner #define RAL_MAC_CSR11	0x0416	/* IFS */
     49  1.1  drochner #define RAL_MAC_CSR12	0x0418	/* EIFS */
     50  1.1  drochner #define RAL_MAC_CSR13	0x041a	/* Power mode0 */
     51  1.1  drochner #define RAL_MAC_CSR14	0x041c	/* Power mode1 */
     52  1.1  drochner #define RAL_MAC_CSR15	0x041e	/* Power saving transition0 */
     53  1.1  drochner #define RAL_MAC_CSR16	0x0420	/* Power saving transition1 */
     54  1.1  drochner #define RAL_MAC_CSR17	0x0422	/* Power state control */
     55  1.1  drochner #define RAL_MAC_CSR18	0x0424	/* Auto wake-up control */
     56  1.1  drochner #define RAL_MAC_CSR19	0x0426	/* GPIO control */
     57  1.1  drochner #define RAL_MAC_CSR20	0x0428	/* LED control0 */
     58  1.1  drochner #define RAL_MAC_CSR22	0x042c	/* XXX not documented */
     59  1.1  drochner 
     60  1.1  drochner /*
     61  1.1  drochner  * Tx/Rx Registers.
     62  1.1  drochner  */
     63  1.1  drochner #define RAL_TXRX_CSR0	0x0440	/* Security control */
     64  1.1  drochner #define RAL_TXRX_CSR2	0x0444	/* Rx control */
     65  1.1  drochner #define RAL_TXRX_CSR5	0x044a	/* CCK Tx BBP ID0 */
     66  1.1  drochner #define RAL_TXRX_CSR6	0x044c	/* CCK Tx BBP ID1 */
     67  1.1  drochner #define RAL_TXRX_CSR7	0x044e	/* OFDM Tx BBP ID0 */
     68  1.1  drochner #define RAL_TXRX_CSR8	0x0450	/* OFDM Tx BBP ID1 */
     69  1.3     perry #define RAL_TXRX_CSR10	0x0454	/* Auto responder control */
     70  1.1  drochner #define RAL_TXRX_CSR11	0x0456	/* Auto responder basic rate */
     71  1.1  drochner #define RAL_TXRX_CSR18	0x0464	/* Beacon interval */
     72  1.1  drochner #define RAL_TXRX_CSR19	0x0466	/* Beacon/sync control */
     73  1.1  drochner #define RAL_TXRX_CSR20	0x0468	/* Beacon alignment */
     74  1.1  drochner #define RAL_TXRX_CSR21	0x046a	/* XXX not documented */
     75  1.1  drochner 
     76  1.1  drochner /*
     77  1.1  drochner  * Security registers.
     78  1.1  drochner  */
     79  1.1  drochner #define RAL_SEC_CSR0	0x0480	/* Shared key 0, word 0 */
     80  1.1  drochner 
     81  1.1  drochner /*
     82  1.1  drochner  * PHY registers.
     83  1.1  drochner  */
     84  1.1  drochner #define RAL_PHY_CSR2	0x04c4	/* Tx MAC configuration */
     85  1.1  drochner #define RAL_PHY_CSR4	0x04c8	/* Interface configuration */
     86  1.1  drochner #define RAL_PHY_CSR5	0x04ca	/* BBP Pre-Tx CCK */
     87  1.1  drochner #define RAL_PHY_CSR6	0x04cc	/* BBP Pre-Tx OFDM */
     88  1.1  drochner #define RAL_PHY_CSR7	0x04ce	/* BBP serial control */
     89  1.1  drochner #define RAL_PHY_CSR8	0x04d0	/* BBP serial status */
     90  1.1  drochner #define RAL_PHY_CSR9	0x04d2	/* RF serial control0 */
     91  1.1  drochner #define RAL_PHY_CSR10	0x04d4	/* RF serial control1 */
     92  1.1  drochner 
     93  1.1  drochner /*
     94  1.1  drochner  * Statistics registers.
     95  1.1  drochner  */
     96  1.1  drochner #define RAL_STA_CSR0	0x04e0	/* FCS error */
     97  1.1  drochner 
     98  1.1  drochner 
     99  1.1  drochner #define RAL_DISABLE_RX		(1 << 0)
    100  1.1  drochner #define RAL_DROP_CRC_ERROR	(1 << 1)
    101  1.1  drochner #define RAL_DROP_PHY_ERROR	(1 << 2)
    102  1.1  drochner #define RAL_DROP_CTL		(1 << 3)
    103  1.1  drochner #define RAL_DROP_NOT_TO_ME	(1 << 4)
    104  1.1  drochner #define RAL_DROP_TODS		(1 << 5)
    105  1.1  drochner #define RAL_DROP_VERSION_ERROR	(1 << 6)
    106  1.1  drochner #define RAL_DROP_MULTICAST	(1 << 9)
    107  1.1  drochner #define RAL_DROP_BROADCAST	(1 << 10)
    108  1.1  drochner 
    109  1.3     perry #define RAL_SHORT_PREAMBLE	(1 << 2)
    110  1.3     perry 
    111  1.1  drochner #define RAL_HOST_READY	(1 << 2)
    112  1.1  drochner #define RAL_RESET_ASIC	(1 << 0)
    113  1.1  drochner #define RAL_RESET_BBP	(1 << 1)
    114  1.1  drochner 
    115  1.1  drochner #define RAL_ENABLE_TSF			(1 << 0)
    116  1.1  drochner #define RAL_ENABLE_TSF_SYNC(x)		(((x) & 0x3) << 1)
    117  1.1  drochner #define RAL_ENABLE_TBCN			(1 << 3)
    118  1.1  drochner #define RAL_ENABLE_BEACON_GENERATOR	(1 << 4)
    119  1.1  drochner 
    120  1.1  drochner #define RAL_RF_AWAKE	(3 << 7)
    121  1.1  drochner #define RAL_BBP_AWAKE	(3 << 5)
    122  1.1  drochner 
    123  1.1  drochner #define RAL_BBP_WRITE	(1 << 15)
    124  1.1  drochner #define RAL_BBP_BUSY	(1 << 0)
    125  1.1  drochner 
    126  1.1  drochner #define RAL_RF1_AUTOTUNE	0x08000
    127  1.1  drochner #define RAL_RF3_AUTOTUNE	0x00040
    128  1.1  drochner 
    129  1.1  drochner #define RAL_RF_2522	0x00
    130  1.1  drochner #define RAL_RF_2523	0x01
    131  1.1  drochner #define RAL_RF_2524	0x02
    132  1.1  drochner #define RAL_RF_2525	0x03
    133  1.1  drochner #define RAL_RF_2525E	0x04
    134  1.1  drochner #define RAL_RF_2526	0x05
    135  1.1  drochner /* dual-band RF */
    136  1.1  drochner #define RAL_RF_5222	0x10
    137  1.1  drochner 
    138  1.1  drochner #define RAL_BBP_VERSION	0
    139  1.1  drochner #define RAL_BBP_TX	2
    140  1.1  drochner #define RAL_BBP_RX	14
    141  1.1  drochner 
    142  1.1  drochner #define RAL_BBP_ANTA		0x00
    143  1.1  drochner #define RAL_BBP_DIVERSITY	0x01
    144  1.1  drochner #define RAL_BBP_ANTB		0x02
    145  1.1  drochner #define RAL_BBP_ANTMASK		0x03
    146  1.1  drochner #define RAL_BBP_FLIPIQ		0x04
    147  1.1  drochner 
    148  1.1  drochner #define RAL_JAPAN_FILTER	0x08
    149  1.1  drochner 
    150  1.1  drochner struct ural_tx_desc {
    151  1.1  drochner 	uint32_t	flags;
    152  1.1  drochner #define RAL_TX_RETRY(x)		((x) << 4)
    153  1.1  drochner #define RAL_TX_MORE_FRAG	(1 << 8)
    154  1.1  drochner #define RAL_TX_ACK		(1 << 9)
    155  1.1  drochner #define RAL_TX_TIMESTAMP	(1 << 10)
    156  1.1  drochner #define RAL_TX_OFDM		(1 << 11)
    157  1.1  drochner #define RAL_TX_NEWSEQ		(1 << 12)
    158  1.1  drochner 
    159  1.1  drochner #define RAL_TX_IFS_MASK		0x00006000
    160  1.1  drochner #define RAL_TX_IFS_BACKOFF	(0 << 13)
    161  1.1  drochner #define RAL_TX_IFS_SIFS		(1 << 13)
    162  1.1  drochner #define RAL_TX_IFS_NEWBACKOFF	(2 << 13)
    163  1.1  drochner #define RAL_TX_IFS_NONE		(3 << 13)
    164  1.1  drochner 
    165  1.1  drochner 	uint16_t	wme;
    166  1.1  drochner #define RAL_LOGCWMAX(x)		(((x) & 0xf) << 12)
    167  1.1  drochner #define RAL_LOGCWMIN(x)		(((x) & 0xf) << 8)
    168  1.1  drochner #define RAL_AIFSN(x)		(((x) & 0x3) << 6)
    169  1.1  drochner #define RAL_IVOFFSET(x)		(((x) & 0x3f))
    170  1.1  drochner 
    171  1.1  drochner 	uint16_t	reserved;
    172  1.1  drochner 	uint8_t		plcp_signal;
    173  1.1  drochner 	uint8_t		plcp_service;
    174  1.1  drochner #define RAL_PLCP_LENGEXT	0x80
    175  1.1  drochner 
    176  1.3     perry 	uint8_t		plcp_length_lo;
    177  1.3     perry 	uint8_t		plcp_length_hi;
    178  1.1  drochner 	uint32_t	iv;
    179  1.1  drochner 	uint32_t	eiv;
    180  1.1  drochner } __packed;
    181  1.1  drochner 
    182  1.1  drochner struct ural_rx_desc {
    183  1.1  drochner 	uint32_t	flags;
    184  1.1  drochner #define RAL_RX_CRC_ERROR	(1 << 5)
    185  1.3     perry #define RAL_RX_OFDM		(1 << 6)
    186  1.1  drochner #define RAL_RX_PHY_ERROR	(1 << 7)
    187  1.1  drochner 
    188  1.1  drochner 	uint8_t		rate;
    189  1.1  drochner 	uint8_t		rssi;
    190  1.1  drochner 	uint16_t	reserved;
    191  1.1  drochner 
    192  1.1  drochner 	uint32_t	iv;
    193  1.1  drochner 	uint32_t	eiv;
    194  1.1  drochner } __packed;
    195  1.1  drochner 
    196  1.1  drochner #define RAL_RF_LOBUSY	(1 << 15)
    197  1.5   msaitoh #define RAL_RF_BUSY	(1U << 31)
    198  1.1  drochner #define RAL_RF_20BIT	(20 << 24)
    199  1.1  drochner 
    200  1.1  drochner #define RAL_RF1	0
    201  1.1  drochner #define RAL_RF2	2
    202  1.1  drochner #define RAL_RF3	1
    203  1.1  drochner #define RAL_RF4	3
    204  1.1  drochner 
    205  1.1  drochner #define RAL_EEPROM_ADDRESS	0x0004
    206  1.1  drochner #define RAL_EEPROM_TXPOWER	0x003c
    207  1.1  drochner #define RAL_EEPROM_CONFIG0	0x0016
    208  1.1  drochner #define RAL_EEPROM_BBP_BASE	0x001c
    209