| John W. Linville | 0aec00a | 2007-06-12 22:11:42 -0400 | [diff] [blame] | 1 | /* | 
|  | 2 | * Definitions for RTL818x hardware | 
|  | 3 | * | 
|  | 4 | * Copyright 2007 Michael Wu <flamingice@sourmilk.net> | 
|  | 5 | * Copyright 2007 Andrea Merello <andreamrl@tiscali.it> | 
|  | 6 | * | 
|  | 7 | * Based on the r8187 driver, which is: | 
|  | 8 | * Copyright 2005 Andrea Merello <andreamrl@tiscali.it>, et al. | 
|  | 9 | * | 
|  | 10 | * This program is free software; you can redistribute it and/or modify | 
|  | 11 | * it under the terms of the GNU General Public License version 2 as | 
|  | 12 | * published by the Free Software Foundation. | 
|  | 13 | */ | 
|  | 14 |  | 
| Michael Wu | 605bebe | 2007-05-14 01:41:02 -0400 | [diff] [blame] | 15 | #ifndef RTL818X_H | 
|  | 16 | #define RTL818X_H | 
|  | 17 |  | 
|  | 18 | struct rtl818x_csr { | 
|  | 19 | u8	MAC[6]; | 
|  | 20 | u8	reserved_0[2]; | 
|  | 21 | __le32	MAR[2]; | 
|  | 22 | u8	RX_FIFO_COUNT; | 
|  | 23 | u8	reserved_1; | 
|  | 24 | u8	TX_FIFO_COUNT; | 
|  | 25 | u8	BQREQ; | 
|  | 26 | u8	reserved_2[4]; | 
|  | 27 | __le32	TSFT[2]; | 
|  | 28 | __le32	TLPDA; | 
|  | 29 | __le32	TNPDA; | 
|  | 30 | __le32	THPDA; | 
|  | 31 | __le16	BRSR; | 
|  | 32 | u8	BSSID[6]; | 
|  | 33 | u8	RESP_RATE; | 
|  | 34 | u8	EIFS; | 
|  | 35 | u8	reserved_3[1]; | 
|  | 36 | u8	CMD; | 
|  | 37 | #define RTL818X_CMD_TX_ENABLE		(1 << 2) | 
|  | 38 | #define RTL818X_CMD_RX_ENABLE		(1 << 3) | 
|  | 39 | #define RTL818X_CMD_RESET		(1 << 4) | 
|  | 40 | u8	reserved_4[4]; | 
|  | 41 | __le16	INT_MASK; | 
|  | 42 | __le16	INT_STATUS; | 
|  | 43 | #define RTL818X_INT_RX_OK		(1 <<  0) | 
|  | 44 | #define RTL818X_INT_RX_ERR		(1 <<  1) | 
|  | 45 | #define RTL818X_INT_TXL_OK		(1 <<  2) | 
|  | 46 | #define RTL818X_INT_TXL_ERR		(1 <<  3) | 
|  | 47 | #define RTL818X_INT_RX_DU		(1 <<  4) | 
|  | 48 | #define RTL818X_INT_RX_FO		(1 <<  5) | 
|  | 49 | #define RTL818X_INT_TXN_OK		(1 <<  6) | 
|  | 50 | #define RTL818X_INT_TXN_ERR		(1 <<  7) | 
|  | 51 | #define RTL818X_INT_TXH_OK		(1 <<  8) | 
|  | 52 | #define RTL818X_INT_TXH_ERR		(1 <<  9) | 
|  | 53 | #define RTL818X_INT_TXB_OK		(1 << 10) | 
|  | 54 | #define RTL818X_INT_TXB_ERR		(1 << 11) | 
|  | 55 | #define RTL818X_INT_ATIM		(1 << 12) | 
|  | 56 | #define RTL818X_INT_BEACON		(1 << 13) | 
|  | 57 | #define RTL818X_INT_TIME_OUT		(1 << 14) | 
|  | 58 | #define RTL818X_INT_TX_FO		(1 << 15) | 
|  | 59 | __le32	TX_CONF; | 
|  | 60 | #define RTL818X_TX_CONF_LOOPBACK_MAC	(1 << 17) | 
|  | 61 | #define RTL818X_TX_CONF_NO_ICV		(1 << 19) | 
|  | 62 | #define RTL818X_TX_CONF_DISCW		(1 << 20) | 
|  | 63 | #define RTL818X_TX_CONF_R8180_ABCD	(2 << 25) | 
|  | 64 | #define RTL818X_TX_CONF_R8180_F		(3 << 25) | 
|  | 65 | #define RTL818X_TX_CONF_R8185_ABC	(4 << 25) | 
|  | 66 | #define RTL818X_TX_CONF_R8185_D		(5 << 25) | 
|  | 67 | #define RTL818X_TX_CONF_HWVER_MASK	(7 << 25) | 
|  | 68 | #define RTL818X_TX_CONF_CW_MIN		(1 << 31) | 
|  | 69 | __le32	RX_CONF; | 
|  | 70 | #define RTL818X_RX_CONF_MONITOR		(1 <<  0) | 
|  | 71 | #define RTL818X_RX_CONF_NICMAC		(1 <<  1) | 
|  | 72 | #define RTL818X_RX_CONF_MULTICAST	(1 <<  2) | 
|  | 73 | #define RTL818X_RX_CONF_BROADCAST	(1 <<  3) | 
|  | 74 | #define RTL818X_RX_CONF_DATA		(1 << 18) | 
|  | 75 | #define RTL818X_RX_CONF_CTRL		(1 << 19) | 
|  | 76 | #define RTL818X_RX_CONF_MGMT		(1 << 20) | 
|  | 77 | #define RTL818X_RX_CONF_BSSID		(1 << 23) | 
|  | 78 | #define RTL818X_RX_CONF_RX_AUTORESETPHY	(1 << 28) | 
|  | 79 | #define RTL818X_RX_CONF_ONLYERLPKT	(1 << 31) | 
|  | 80 | __le32	INT_TIMEOUT; | 
|  | 81 | __le32	TBDA; | 
|  | 82 | u8	EEPROM_CMD; | 
|  | 83 | #define RTL818X_EEPROM_CMD_READ		(1 << 0) | 
|  | 84 | #define RTL818X_EEPROM_CMD_WRITE	(1 << 1) | 
|  | 85 | #define RTL818X_EEPROM_CMD_CK		(1 << 2) | 
|  | 86 | #define RTL818X_EEPROM_CMD_CS		(1 << 3) | 
|  | 87 | #define RTL818X_EEPROM_CMD_NORMAL	(0 << 6) | 
|  | 88 | #define RTL818X_EEPROM_CMD_LOAD		(1 << 6) | 
|  | 89 | #define RTL818X_EEPROM_CMD_PROGRAM	(2 << 6) | 
|  | 90 | #define RTL818X_EEPROM_CMD_CONFIG	(3 << 6) | 
|  | 91 | u8	CONFIG0; | 
|  | 92 | u8	CONFIG1; | 
|  | 93 | u8	CONFIG2; | 
|  | 94 | __le32	ANAPARAM; | 
|  | 95 | u8	MSR; | 
|  | 96 | #define RTL818X_MSR_NO_LINK		(0 << 2) | 
|  | 97 | #define RTL818X_MSR_ADHOC		(1 << 2) | 
|  | 98 | #define RTL818X_MSR_INFRA		(2 << 2) | 
|  | 99 | u8	CONFIG3; | 
|  | 100 | #define RTL818X_CONFIG3_ANAPARAM_WRITE	(1 << 6) | 
|  | 101 | u8	CONFIG4; | 
|  | 102 | #define RTL818X_CONFIG4_POWEROFF	(1 << 6) | 
|  | 103 | #define RTL818X_CONFIG4_VCOOFF		(1 << 7) | 
|  | 104 | u8	TESTR; | 
|  | 105 | u8	reserved_9[2]; | 
|  | 106 | __le16	PGSELECT; | 
|  | 107 | __le32	ANAPARAM2; | 
|  | 108 | u8	reserved_10[12]; | 
|  | 109 | __le16	BEACON_INTERVAL; | 
|  | 110 | __le16	ATIM_WND; | 
|  | 111 | __le16	BEACON_INTERVAL_TIME; | 
|  | 112 | __le16	ATIMTR_INTERVAL; | 
|  | 113 | u8	reserved_11[4]; | 
|  | 114 | u8	PHY[4]; | 
|  | 115 | __le16	RFPinsOutput; | 
|  | 116 | __le16	RFPinsEnable; | 
|  | 117 | __le16	RFPinsSelect; | 
|  | 118 | __le16	RFPinsInput; | 
|  | 119 | __le32	RF_PARA; | 
|  | 120 | __le32	RF_TIMING; | 
|  | 121 | u8	GP_ENABLE; | 
|  | 122 | u8	GPIO; | 
|  | 123 | u8	reserved_12[10]; | 
|  | 124 | u8	TX_AGC_CTL; | 
|  | 125 | #define RTL818X_TX_AGC_CTL_PERPACKET_GAIN_SHIFT		(1 << 0) | 
|  | 126 | #define RTL818X_TX_AGC_CTL_PERPACKET_ANTSEL_SHIFT	(1 << 1) | 
|  | 127 | #define RTL818X_TX_AGC_CTL_FEEDBACK_ANT			(1 << 2) | 
|  | 128 | u8	TX_GAIN_CCK; | 
|  | 129 | u8	TX_GAIN_OFDM; | 
|  | 130 | u8	TX_ANTENNA; | 
|  | 131 | u8	reserved_13[16]; | 
|  | 132 | u8	WPA_CONF; | 
|  | 133 | u8	reserved_14[3]; | 
|  | 134 | u8	SIFS; | 
|  | 135 | u8	DIFS; | 
|  | 136 | u8	SLOT; | 
|  | 137 | u8	reserved_15[5]; | 
|  | 138 | u8	CW_CONF; | 
|  | 139 | #define RTL818X_CW_CONF_PERPACKET_CW_SHIFT	(1 << 0) | 
|  | 140 | #define RTL818X_CW_CONF_PERPACKET_RETRY_SHIFT	(1 << 1) | 
|  | 141 | u8	CW_VAL; | 
|  | 142 | u8	RATE_FALLBACK; | 
|  | 143 | u8	reserved_16[25]; | 
|  | 144 | u8	CONFIG5; | 
|  | 145 | u8	TX_DMA_POLLING; | 
|  | 146 | u8	reserved_17[2]; | 
|  | 147 | __le16	CWR; | 
|  | 148 | u8	RETRY_CTR; | 
|  | 149 | u8	reserved_18[5]; | 
|  | 150 | __le32	RDSAR; | 
|  | 151 | u8	reserved_19[18]; | 
|  | 152 | u16	TALLY_CNT; | 
|  | 153 | u8	TALLY_SEL; | 
|  | 154 | } __attribute__((packed)); | 
|  | 155 |  | 
|  | 156 | static const struct ieee80211_rate rtl818x_rates[] = { | 
|  | 157 | { .rate = 10, | 
|  | 158 | .val = 0, | 
|  | 159 | .flags = IEEE80211_RATE_CCK }, | 
|  | 160 | { .rate = 20, | 
|  | 161 | .val = 1, | 
|  | 162 | .flags = IEEE80211_RATE_CCK }, | 
|  | 163 | { .rate = 55, | 
|  | 164 | .val = 2, | 
|  | 165 | .flags = IEEE80211_RATE_CCK }, | 
|  | 166 | { .rate = 110, | 
|  | 167 | .val = 3, | 
|  | 168 | .flags = IEEE80211_RATE_CCK }, | 
|  | 169 | { .rate = 60, | 
|  | 170 | .val = 4, | 
|  | 171 | .flags = IEEE80211_RATE_OFDM }, | 
|  | 172 | { .rate = 90, | 
|  | 173 | .val = 5, | 
|  | 174 | .flags = IEEE80211_RATE_OFDM }, | 
|  | 175 | { .rate = 120, | 
|  | 176 | .val = 6, | 
|  | 177 | .flags = IEEE80211_RATE_OFDM }, | 
|  | 178 | { .rate = 180, | 
|  | 179 | .val = 7, | 
|  | 180 | .flags = IEEE80211_RATE_OFDM }, | 
|  | 181 | { .rate = 240, | 
|  | 182 | .val = 8, | 
|  | 183 | .flags = IEEE80211_RATE_OFDM }, | 
|  | 184 | { .rate = 360, | 
|  | 185 | .val = 9, | 
|  | 186 | .flags = IEEE80211_RATE_OFDM }, | 
|  | 187 | { .rate = 480, | 
|  | 188 | .val = 10, | 
|  | 189 | .flags = IEEE80211_RATE_OFDM }, | 
|  | 190 | { .rate = 540, | 
|  | 191 | .val = 11, | 
|  | 192 | .flags = IEEE80211_RATE_OFDM }, | 
|  | 193 | }; | 
|  | 194 |  | 
|  | 195 | static const struct ieee80211_channel rtl818x_channels[] = { | 
|  | 196 | { .chan = 1, | 
|  | 197 | .freq = 2412}, | 
|  | 198 | { .chan = 2, | 
|  | 199 | .freq = 2417}, | 
|  | 200 | { .chan = 3, | 
|  | 201 | .freq = 2422}, | 
|  | 202 | { .chan = 4, | 
|  | 203 | .freq = 2427}, | 
|  | 204 | { .chan = 5, | 
|  | 205 | .freq = 2432}, | 
|  | 206 | { .chan = 6, | 
|  | 207 | .freq = 2437}, | 
|  | 208 | { .chan = 7, | 
|  | 209 | .freq = 2442}, | 
|  | 210 | { .chan = 8, | 
|  | 211 | .freq = 2447}, | 
|  | 212 | { .chan = 9, | 
|  | 213 | .freq = 2452}, | 
|  | 214 | { .chan = 10, | 
|  | 215 | .freq = 2457}, | 
|  | 216 | { .chan = 11, | 
|  | 217 | .freq = 2462}, | 
|  | 218 | { .chan = 12, | 
|  | 219 | .freq = 2467}, | 
|  | 220 | { .chan = 13, | 
|  | 221 | .freq = 2472}, | 
|  | 222 | { .chan = 14, | 
|  | 223 | .freq = 2484} | 
|  | 224 | }; | 
|  | 225 |  | 
|  | 226 | #endif /* RTL818X_H */ |