1*4b1a56afSjsg /* $OpenBSD: ar5211var.h,v 1.11 2022/01/09 05:42:38 jsg Exp $ */ 2f23d19fdSreyk 3f23d19fdSreyk /* 4ea5b165aSreyk * Copyright (c) 2004, 2005, 2006, 2007 Reyk Floeter <reyk@openbsd.org> 5f23d19fdSreyk * 6f23d19fdSreyk * Permission to use, copy, modify, and distribute this software for any 7f23d19fdSreyk * purpose with or without fee is hereby granted, provided that the above 8f23d19fdSreyk * copyright notice and this permission notice appear in all copies. 9f23d19fdSreyk * 10f23d19fdSreyk * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11f23d19fdSreyk * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12f23d19fdSreyk * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13f23d19fdSreyk * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14f23d19fdSreyk * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15f23d19fdSreyk * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16f23d19fdSreyk * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17f23d19fdSreyk */ 18f23d19fdSreyk 19f23d19fdSreyk /* 20f23d19fdSreyk * Specific definitions for the Atheros AR5001 Wireless LAN chipset 21f23d19fdSreyk * (AR5211/AR5311). 22f23d19fdSreyk */ 23f23d19fdSreyk 24f23d19fdSreyk #ifndef _AR5K_AR5211_VAR_H 25f23d19fdSreyk #define _AR5K_AR5211_VAR_H 26f23d19fdSreyk 27f23d19fdSreyk #include <dev/ic/ar5xxx.h> 28f23d19fdSreyk 29f23d19fdSreyk /* 30f23d19fdSreyk * Define a "magic" code for the AR5211 (the HAL layer wants it) 31f23d19fdSreyk */ 32f23d19fdSreyk 33f23d19fdSreyk #define AR5K_AR5211_MAGIC 0x0000145b /* 5211 */ 34f23d19fdSreyk #define AR5K_AR5211_TX_NUM_QUEUES 10 35f23d19fdSreyk 36f23d19fdSreyk #if BYTE_ORDER == BIG_ENDIAN 37f23d19fdSreyk #define AR5K_AR5211_INIT_CFG ( \ 388fc76842Sreyk AR5K_AR5211_CFG_SWTD | AR5K_AR5211_CFG_SWRD \ 39f23d19fdSreyk ) 40f23d19fdSreyk #else 41f23d19fdSreyk #define AR5K_AR5211_INIT_CFG 0x00000000 42f23d19fdSreyk #endif 43f23d19fdSreyk 44f23d19fdSreyk /* 45f23d19fdSreyk * Internal RX/TX descriptor structures 46*4b1a56afSjsg * (rX: reserved fields possibly used by future versions of the ar5k chipset) 47f23d19fdSreyk */ 48f23d19fdSreyk 49f23d19fdSreyk struct ar5k_ar5211_rx_desc { 50f23d19fdSreyk /* 51a4490bb3Sreyk * RX control word 0 52f23d19fdSreyk */ 53a4490bb3Sreyk u_int32_t rx_control_0; 54a4490bb3Sreyk 55a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_CTL0 0x00000000 56f23d19fdSreyk 57f23d19fdSreyk /* 58a4490bb3Sreyk * RX control word 1 59f23d19fdSreyk */ 60a4490bb3Sreyk u_int32_t rx_control_1; 61a4490bb3Sreyk 62a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_CTL1_BUF_LEN 0x00000fff 63a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_CTL1_INTREQ 0x00002000 64f23d19fdSreyk } __packed; 65f23d19fdSreyk 66f23d19fdSreyk struct ar5k_ar5211_rx_status { 67f23d19fdSreyk /* 68a4490bb3Sreyk * RX status word 0 69f23d19fdSreyk */ 70a4490bb3Sreyk u_int32_t rx_status_0; 71a4490bb3Sreyk 72a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_DATA_LEN 0x00000fff 73a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_MORE 0x00001000 74a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_RATE 0x00078000 75a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_RATE_S 15 76a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_SIGNAL 0x07f80000 77a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_SIGNAL_S 19 78a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_ANTENNA 0x38000000 79a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_ANTENNA_S 27 80f23d19fdSreyk 81f23d19fdSreyk /* 82a4490bb3Sreyk * RX status word 1 83f23d19fdSreyk */ 84a4490bb3Sreyk u_int32_t rx_status_1; 85a4490bb3Sreyk 86a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_DONE 0x00000001 87a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_FRAME_RECEIVE_OK 0x00000002 88a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_CRC_ERROR 0x00000004 89a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_FIFO_OVERRUN 0x00000008 90a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_DECRYPT_CRC_ERROR 0x00000010 91a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_PHY_ERROR 0x000000e0 92a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_PHY_ERROR_S 5 93a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_KEY_INDEX_VALID 0x00000100 94a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_KEY_INDEX 0x00007e00 95a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_KEY_INDEX_S 9 96a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_RECEIVE_TIMESTAMP 0x0fff8000 97a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_RECEIVE_TIMESTAMP_S 15 98a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_KEY_CACHE_MISS 0x10000000 99f23d19fdSreyk } __packed; 100f23d19fdSreyk 101f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_NONE 0x00 102f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_TIMING 0x20 103f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_PARITY 0x40 104f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_RATE 0x60 105f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_LENGTH 0x80 106f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_64QAM 0xa0 107f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_SERVICE 0xc0 108f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_TRANSMITOVR 0xe0 109f23d19fdSreyk 110f23d19fdSreyk struct ar5k_ar5211_tx_desc { 111f23d19fdSreyk /* 112a4490bb3Sreyk * TX control word 0 113f23d19fdSreyk */ 114a4490bb3Sreyk u_int32_t tx_control_0; 115a4490bb3Sreyk 116a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_FRAME_LEN 0x00000fff 117a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_XMIT_RATE 0x003c0000 118a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_XMIT_RATE_S 18 119a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_RTSENA 0x00400000 120a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_VEOL 0x00800000 121a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_CLRDMASK 0x01000000 122a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_ANT_MODE_XMIT 0x1e000000 123a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_ANT_MODE_XMIT_S 25 124a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_INTREQ 0x20000000 125a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_ENCRYPT_KEY_VALID 0x40000000 126f23d19fdSreyk 127f23d19fdSreyk /* 128a4490bb3Sreyk * TX control word 1 129f23d19fdSreyk */ 130a4490bb3Sreyk u_int32_t tx_control_1; 131a4490bb3Sreyk 132a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_BUF_LEN 0x00000fff 133a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_MORE 0x00001000 134a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_ENCRYPT_KEY_INDEX 0x000fe000 135a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_ENCRYPT_KEY_INDEX_S 13 136a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_FRAME_TYPE 0x00700000 137a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_FRAME_TYPE_S 20 138a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_NOACK 0x00800000 139f23d19fdSreyk } __packed; 140f23d19fdSreyk 141f23d19fdSreyk struct ar5k_ar5211_tx_status { 142f23d19fdSreyk /* 143a4490bb3Sreyk * TX status word 0 144f23d19fdSreyk */ 145a4490bb3Sreyk u_int32_t tx_status_0; 146a4490bb3Sreyk 147a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_FRAME_XMIT_OK 0x00000001 148a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_EXCESSIVE_RETRIES 0x00000002 149a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_FIFO_UNDERRUN 0x00000004 150a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_FILTERED 0x00000008 151a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_RTS_FAIL_COUNT 0x000000f0 152a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_RTS_FAIL_COUNT_S 4 153a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_DATA_FAIL_COUNT 0x00000f00 154a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_DATA_FAIL_COUNT_S 8 155a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_VIRT_COLL_COUNT 0x0000f000 156a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_VIRT_COLL_COUNT_S 12 157a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_SEND_TIMESTAMP 0xffff0000 158a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_SEND_TIMESTAMP_S 16 159f23d19fdSreyk 160f23d19fdSreyk /* 161a4490bb3Sreyk * TX status word 1 162f23d19fdSreyk */ 163a4490bb3Sreyk u_int32_t tx_status_1; 164a4490bb3Sreyk 165a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_DONE 0x00000001 166a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_SEQ_NUM 0x00001ffe 167a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_SEQ_NUM_S 1 168a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_ACK_SIG_STRENGTH 0x001fe000 169a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_ACK_SIG_STRENGTH_S 13 170f23d19fdSreyk } __packed; 171f23d19fdSreyk 172f23d19fdSreyk /* 173f23d19fdSreyk * Public function prototypes 174f23d19fdSreyk */ 175f23d19fdSreyk extern ar5k_attach_t ar5k_ar5211_attach; 176f23d19fdSreyk 177f23d19fdSreyk /* 178f23d19fdSreyk * Initial register values which have to be loaded into the 179f23d19fdSreyk * card at boot time and after each reset. 180f23d19fdSreyk */ 181f23d19fdSreyk 182f23d19fdSreyk #define AR5K_AR5211_INI { \ 183f23d19fdSreyk { 0x000c, 0x00000000 }, \ 184f23d19fdSreyk { 0x0028, 0x84849c9c }, \ 185f23d19fdSreyk { 0x002c, 0x7c7c7c7c }, \ 186f23d19fdSreyk { 0x0034, 0x00000005 }, \ 187f23d19fdSreyk { 0x0040, 0x00000000 }, \ 188f23d19fdSreyk { 0x0044, 0x00000008 }, \ 189f23d19fdSreyk { 0x0048, 0x00000008 }, \ 190f23d19fdSreyk { 0x004c, 0x00000010 }, \ 191f23d19fdSreyk { 0x0050, 0x00000000 }, \ 192f23d19fdSreyk { 0x0054, 0x0000001f }, \ 193f23d19fdSreyk { 0x0800, 0x00000000 }, \ 194f23d19fdSreyk { 0x0804, 0x00000000 }, \ 195f23d19fdSreyk { 0x0808, 0x00000000 }, \ 196f23d19fdSreyk { 0x080c, 0x00000000 }, \ 197f23d19fdSreyk { 0x0810, 0x00000000 }, \ 198f23d19fdSreyk { 0x0814, 0x00000000 }, \ 199f23d19fdSreyk { 0x0818, 0x00000000 }, \ 200f23d19fdSreyk { 0x081c, 0x00000000 }, \ 201f23d19fdSreyk { 0x0820, 0x00000000 }, \ 202f23d19fdSreyk { 0x0824, 0x00000000 }, \ 203f23d19fdSreyk { 0x1230, 0x00000000 }, \ 204f23d19fdSreyk { 0x8004, 0x00000000 }, \ 205f23d19fdSreyk { 0x8008, 0x00000000 }, \ 206f23d19fdSreyk { 0x800c, 0x00000000 }, \ 207f23d19fdSreyk { 0x8018, 0x00000000 }, \ 208f23d19fdSreyk { 0x8024, 0x00000000 }, \ 209f23d19fdSreyk { 0x8028, 0x00000030 }, \ 210f23d19fdSreyk { 0x802c, 0x0007ffff }, \ 211f23d19fdSreyk { 0x8030, 0x01ffffff }, \ 212f23d19fdSreyk { 0x8034, 0x00000031 }, \ 213f23d19fdSreyk { 0x8038, 0x00000000 }, \ 214f23d19fdSreyk { 0x803c, 0x00000000 }, \ 215f23d19fdSreyk { 0x8040, 0x00000000 }, \ 216f23d19fdSreyk { 0x8044, 0x00000002 }, \ 217f23d19fdSreyk { 0x8048, 0x00000000 }, \ 218f23d19fdSreyk { 0x8054, 0x00000000 }, \ 219f23d19fdSreyk { 0x8058, 0x00000000 }, \ 220f23d19fdSreyk /* PHY registers */ \ 221f23d19fdSreyk { 0x9808, 0x00000000 }, \ 222f23d19fdSreyk { 0x980c, 0x2d849093 }, \ 223f23d19fdSreyk { 0x9810, 0x7d32e000 }, \ 224f23d19fdSreyk { 0x9814, 0x00000f6b }, \ 225f23d19fdSreyk { 0x981c, 0x00000000 }, \ 226f23d19fdSreyk { 0x982c, 0x00026ffe }, \ 227f23d19fdSreyk { 0x9830, 0x00000000 }, \ 228f23d19fdSreyk { 0x983c, 0x00020100 }, \ 229f23d19fdSreyk { 0x9840, 0x206a017a }, \ 230f23d19fdSreyk { 0x984c, 0x1284613c }, \ 231f23d19fdSreyk { 0x9854, 0x00000859 }, \ 232f23d19fdSreyk { 0x9868, 0x409a4190 }, \ 233f23d19fdSreyk { 0x986c, 0x050cb081 }, \ 234f23d19fdSreyk { 0x9870, 0x0000000f }, \ 235f23d19fdSreyk { 0x9874, 0x00000080 }, \ 236f23d19fdSreyk { 0x9878, 0x0000000c }, \ 237f23d19fdSreyk { 0x9900, 0x00000000 }, \ 238f23d19fdSreyk { 0x9904, 0x00000000 }, \ 239f23d19fdSreyk { 0x9908, 0x00000000 }, \ 240f23d19fdSreyk { 0x990c, 0x00800000 }, \ 241f23d19fdSreyk { 0x9910, 0x00000001 }, \ 242f23d19fdSreyk { 0x991c, 0x0000092a }, \ 243f23d19fdSreyk { 0x9920, 0x00000000 }, \ 244f23d19fdSreyk { 0x9924, 0x00058a05 }, \ 245f23d19fdSreyk { 0x9928, 0x00000001 }, \ 246f23d19fdSreyk { 0x992c, 0x00000000 }, \ 247f23d19fdSreyk { 0x9930, 0x00000000 }, \ 248f23d19fdSreyk { 0x9934, 0x00000000 }, \ 249f23d19fdSreyk { 0x9938, 0x00000000 }, \ 250f23d19fdSreyk { 0x993c, 0x0000003f }, \ 251f23d19fdSreyk { 0x9940, 0x00000004 }, \ 252f23d19fdSreyk { 0x9948, 0x00000000 }, \ 253f23d19fdSreyk { 0x994c, 0x00000000 }, \ 254f23d19fdSreyk { 0x9950, 0x00000000 }, \ 255f23d19fdSreyk { 0x9954, 0x5d50f14c }, \ 256f23d19fdSreyk { 0x9958, 0x00000018 }, \ 257f23d19fdSreyk { 0x995c, 0x004b6a8e }, \ 258f23d19fdSreyk { 0xa184, 0x06ff05ff }, \ 259f23d19fdSreyk { 0xa188, 0x07ff07ff }, \ 260f23d19fdSreyk { 0xa18c, 0x08ff08ff }, \ 261f23d19fdSreyk { 0xa190, 0x09ff09ff }, \ 262f23d19fdSreyk { 0xa194, 0x0aff0aff }, \ 263f23d19fdSreyk { 0xa198, 0x0bff0bff }, \ 264f23d19fdSreyk { 0xa19c, 0x0cff0cff }, \ 265f23d19fdSreyk { 0xa1a0, 0x0dff0dff }, \ 266f23d19fdSreyk { 0xa1a4, 0x0fff0eff }, \ 267f23d19fdSreyk { 0xa1a8, 0x12ff12ff }, \ 268f23d19fdSreyk { 0xa1ac, 0x14ff13ff }, \ 269f23d19fdSreyk { 0xa1b0, 0x16ff15ff }, \ 270f23d19fdSreyk { 0xa1b4, 0x19ff17ff }, \ 271f23d19fdSreyk { 0xa1b8, 0x1bff1aff }, \ 272f23d19fdSreyk { 0xa1bc, 0x1eff1dff }, \ 273f23d19fdSreyk { 0xa1c0, 0x23ff20ff }, \ 274f23d19fdSreyk { 0xa1c4, 0x27ff25ff }, \ 275f23d19fdSreyk { 0xa1c8, 0x2cff29ff }, \ 276f23d19fdSreyk { 0xa1cc, 0x31ff2fff }, \ 277f23d19fdSreyk { 0xa1d0, 0x37ff34ff }, \ 278f23d19fdSreyk { 0xa1d4, 0x3aff3aff }, \ 279f23d19fdSreyk { 0xa1d8, 0x3aff3aff }, \ 280f23d19fdSreyk { 0xa1dc, 0x3aff3aff }, \ 281f23d19fdSreyk { 0xa1e0, 0x3aff3aff }, \ 282f23d19fdSreyk { 0xa1e4, 0x3aff3aff }, \ 283f23d19fdSreyk { 0xa1e8, 0x3aff3aff }, \ 284f23d19fdSreyk { 0xa1ec, 0x3aff3aff }, \ 285f23d19fdSreyk { 0xa1f0, 0x3aff3aff }, \ 286f23d19fdSreyk { 0xa1f4, 0x3aff3aff }, \ 287f23d19fdSreyk { 0xa1f8, 0x3aff3aff }, \ 288f23d19fdSreyk { 0xa1fc, 0x3aff3aff }, \ 289f23d19fdSreyk /* BB gain table (64bytes) */ \ 290f23d19fdSreyk { 0x9b00, 0x00000000 }, \ 291f23d19fdSreyk { 0x9b04, 0x00000020 }, \ 292f23d19fdSreyk { 0x9b08, 0x00000010 }, \ 293f23d19fdSreyk { 0x9b0c, 0x00000030 }, \ 294f23d19fdSreyk { 0x9b10, 0x00000008 }, \ 295f23d19fdSreyk { 0x9b14, 0x00000028 }, \ 296f23d19fdSreyk { 0x9b18, 0x00000004 }, \ 297f23d19fdSreyk { 0x9b1c, 0x00000024 }, \ 298f23d19fdSreyk { 0x9b20, 0x00000014 }, \ 299f23d19fdSreyk { 0x9b24, 0x00000034 }, \ 300f23d19fdSreyk { 0x9b28, 0x0000000c }, \ 301f23d19fdSreyk { 0x9b2c, 0x0000002c }, \ 302f23d19fdSreyk { 0x9b30, 0x00000002 }, \ 303f23d19fdSreyk { 0x9b34, 0x00000022 }, \ 304f23d19fdSreyk { 0x9b38, 0x00000012 }, \ 305f23d19fdSreyk { 0x9b3c, 0x00000032 }, \ 306f23d19fdSreyk { 0x9b40, 0x0000000a }, \ 307f23d19fdSreyk { 0x9b44, 0x0000002a }, \ 308f23d19fdSreyk { 0x9b48, 0x00000006 }, \ 309f23d19fdSreyk { 0x9b4c, 0x00000026 }, \ 310f23d19fdSreyk { 0x9b50, 0x00000016 }, \ 311f23d19fdSreyk { 0x9b54, 0x00000036 }, \ 312f23d19fdSreyk { 0x9b58, 0x0000000e }, \ 313f23d19fdSreyk { 0x9b5c, 0x0000002e }, \ 314f23d19fdSreyk { 0x9b60, 0x00000001 }, \ 315f23d19fdSreyk { 0x9b64, 0x00000021 }, \ 316f23d19fdSreyk { 0x9b68, 0x00000011 }, \ 317f23d19fdSreyk { 0x9b6c, 0x00000031 }, \ 318f23d19fdSreyk { 0x9b70, 0x00000009 }, \ 319f23d19fdSreyk { 0x9b74, 0x00000029 }, \ 320f23d19fdSreyk { 0x9b78, 0x00000005 }, \ 321f23d19fdSreyk { 0x9b7c, 0x00000025 }, \ 322f23d19fdSreyk { 0x9b80, 0x00000015 }, \ 323f23d19fdSreyk { 0x9b84, 0x00000035 }, \ 324f23d19fdSreyk { 0x9b88, 0x0000000d }, \ 325f23d19fdSreyk { 0x9b8c, 0x0000002d }, \ 326f23d19fdSreyk { 0x9b90, 0x00000003 }, \ 327f23d19fdSreyk { 0x9b94, 0x00000023 }, \ 328f23d19fdSreyk { 0x9b98, 0x00000013 }, \ 329f23d19fdSreyk { 0x9b9c, 0x00000033 }, \ 330f23d19fdSreyk { 0x9ba0, 0x0000000b }, \ 331f23d19fdSreyk { 0x9ba4, 0x0000002b }, \ 332f23d19fdSreyk { 0x9ba8, 0x0000002b }, \ 333f23d19fdSreyk { 0x9bac, 0x0000002b }, \ 334f23d19fdSreyk { 0x9bb0, 0x0000002b }, \ 335f23d19fdSreyk { 0x9bb4, 0x0000002b }, \ 336f23d19fdSreyk { 0x9bb8, 0x0000002b }, \ 337f23d19fdSreyk { 0x9bbc, 0x0000002b }, \ 338f23d19fdSreyk { 0x9bc0, 0x0000002b }, \ 339f23d19fdSreyk { 0x9bc4, 0x0000002b }, \ 340f23d19fdSreyk { 0x9bc8, 0x0000002b }, \ 341f23d19fdSreyk { 0x9bcc, 0x0000002b }, \ 342f23d19fdSreyk { 0x9bd0, 0x0000002b }, \ 343f23d19fdSreyk { 0x9bd4, 0x0000002b }, \ 344f23d19fdSreyk { 0x9bd8, 0x0000002b }, \ 345f23d19fdSreyk { 0x9bdc, 0x0000002b }, \ 346f23d19fdSreyk { 0x9be0, 0x0000002b }, \ 347f23d19fdSreyk { 0x9be4, 0x0000002b }, \ 348f23d19fdSreyk { 0x9be8, 0x0000002b }, \ 349f23d19fdSreyk { 0x9bec, 0x0000002b }, \ 350f23d19fdSreyk { 0x9bf0, 0x0000002b }, \ 351f23d19fdSreyk { 0x9bf4, 0x0000002b }, \ 352f23d19fdSreyk { 0x9bf8, 0x00000002 }, \ 353f23d19fdSreyk { 0x9bfc, 0x00000016 }, \ 354f23d19fdSreyk /* PHY activation */ \ 355f23d19fdSreyk { 0x98d4, 0x00000020 }, \ 356f23d19fdSreyk { 0x98d8, 0x00601068 }, \ 357f23d19fdSreyk } 358f23d19fdSreyk 359f23d19fdSreyk struct ar5k_ar5211_ini_mode { 360f23d19fdSreyk u_int16_t mode_register; 361f23d19fdSreyk u_int32_t mode_value[4]; 362f23d19fdSreyk }; 363f23d19fdSreyk 364f23d19fdSreyk #define AR5K_AR5211_INI_MODE { \ 3656eac2691Sreyk { 0x0030, { 0x00000017, 0x00000017, 0x00000017, 0x00000017 } }, \ 366f23d19fdSreyk { 0x1040, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 367f23d19fdSreyk { 0x1044, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 368f23d19fdSreyk { 0x1048, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 369f23d19fdSreyk { 0x104c, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 370f23d19fdSreyk { 0x1050, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 371f23d19fdSreyk { 0x1054, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 372f23d19fdSreyk { 0x1058, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 373f23d19fdSreyk { 0x105c, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 374f23d19fdSreyk { 0x1060, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 375f23d19fdSreyk { 0x1064, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, \ 376f23d19fdSreyk { 0x1070, { 0x00000168, 0x000001e0, 0x000001b8, 0x00000168 } }, \ 377f23d19fdSreyk { 0x1030, { 0x00000230, 0x000001e0, 0x000000b0, 0x00000230 } }, \ 378f23d19fdSreyk { 0x10b0, { 0x00000d98, 0x00001180, 0x00001f48, 0x00000d98 } }, \ 379f23d19fdSreyk { 0x10f0, { 0x0000a0e0, 0x00014068, 0x00005880, 0x0000a0e0 } }, \ 380f23d19fdSreyk { 0x8014, { 0x04000400, 0x08000800, 0x20003000, 0x04000400 } }, \ 381f23d19fdSreyk { 0x801c, { 0x0e8d8fa7, 0x0e8d8fcf, 0x01608f95, 0x0e8d8fa7 } }, \ 382f23d19fdSreyk { 0x9804, { 0x00000000, 0x00000003, 0x00000000, 0x00000000 } }, \ 383f23d19fdSreyk { 0x9820, { 0x02020200, 0x02020200, 0x02010200, 0x02020200 } }, \ 384f23d19fdSreyk { 0x9824, { 0x00000e0e, 0x00000e0e, 0x00000707, 0x00000e0e } }, \ 385f23d19fdSreyk { 0x9828, { 0x0a020001, 0x0a020001, 0x05010000, 0x0a020001 } }, \ 386f23d19fdSreyk { 0x9834, { 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e } }, \ 387f23d19fdSreyk { 0x9838, { 0x00000007, 0x00000007, 0x0000000b, 0x0000000b } }, \ 388f23d19fdSreyk { 0x9844, { 0x1372169c, 0x137216a5, 0x137216a8, 0x1372169c } }, \ 389f23d19fdSreyk { 0x9848, { 0x0018ba67, 0x0018ba67, 0x0018ba69, 0x0018ba69 } }, \ 390f23d19fdSreyk { 0x9850, { 0x0c28b4e0, 0x0c28b4e0, 0x0c28b4e0, 0x0c28b4e0 } }, \ 391f23d19fdSreyk { 0x9858, { 0x7e800d2e, 0x7e800d2e, 0x7ec00d2e, 0x7e800d2e } }, \ 392f23d19fdSreyk { 0x985c, { 0x31375d5e, 0x31375d5e, 0x313a5d5e, 0x31375d5e } }, \ 393f23d19fdSreyk { 0x9860, { 0x0000bd10, 0x0000bd10, 0x0000bd38, 0x0000bd10 } }, \ 394f23d19fdSreyk { 0x9864, { 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 } }, \ 395f23d19fdSreyk { 0x9914, { 0x00002710, 0x00002710, 0x0000157c, 0x00002710 } }, \ 396f23d19fdSreyk { 0x9918, { 0x00000190, 0x00000190, 0x00000084, 0x00000190 } }, \ 397f23d19fdSreyk { 0x9944, { 0x6fe01020, 0x6fe01020, 0x6fe00920, 0x6fe01020 } }, \ 398f23d19fdSreyk { 0xa180, { 0x05ff14ff, 0x05ff14ff, 0x05ff14ff, 0x05ff19ff } }, \ 399f23d19fdSreyk { 0x98d4, { 0x00000010, 0x00000014, 0x00000010, 0x00000010 } }, \ 400f23d19fdSreyk } 401f23d19fdSreyk 402b24e2ae1Sreyk struct ar5k_ar5211_ini_rf { 403b24e2ae1Sreyk u_int16_t rf_register; 404b24e2ae1Sreyk u_int32_t rf_value[2]; 405b24e2ae1Sreyk }; 406b24e2ae1Sreyk 407b24e2ae1Sreyk #define AR5K_AR5211_INI_RF { \ 408b24e2ae1Sreyk { 0x0000a204, { 0x00000000, 0x00000000 } }, \ 409b24e2ae1Sreyk { 0x0000a208, { 0x503e4646, 0x503e4646 } }, \ 410b24e2ae1Sreyk { 0x0000a20c, { 0x6480416c, 0x6480416c } }, \ 411b24e2ae1Sreyk { 0x0000a210, { 0x0199a003, 0x0199a003 } }, \ 412b24e2ae1Sreyk { 0x0000a214, { 0x044cd610, 0x044cd610 } }, \ 413b24e2ae1Sreyk { 0x0000a218, { 0x13800040, 0x13800040 } }, \ 414b24e2ae1Sreyk { 0x0000a21c, { 0x1be00060, 0x1be00060 } }, \ 415b24e2ae1Sreyk { 0x0000a220, { 0x0c53800a, 0x0c53800a } }, \ 416b24e2ae1Sreyk { 0x0000a224, { 0x0014df3b, 0x0014df3b } }, \ 417b24e2ae1Sreyk { 0x0000a228, { 0x000001b5, 0x000001b5 } }, \ 418b24e2ae1Sreyk { 0x0000a22c, { 0x00000020, 0x00000020 } }, \ 419b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 420b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 421b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 422b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 423b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 424b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 425b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 426b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 427b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 428b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 429b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 430b24e2ae1Sreyk { 0x0000989c, { 0x00380000, 0x00380000 } }, \ 431b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 432b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 433b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 434b24e2ae1Sreyk { 0x0000989c, { 0x000400f9, 0x000400f9 } }, \ 435b24e2ae1Sreyk { 0x000098d4, { 0x00000000, 0x00000004 } }, \ 436b24e2ae1Sreyk \ 437b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 438b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 439b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 440b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 441b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 442b24e2ae1Sreyk { 0x0000989c, { 0x10000000, 0x10000000 } }, \ 443b24e2ae1Sreyk { 0x0000989c, { 0x04000000, 0x04000000 } }, \ 444b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 445b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 446b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x00000000 } }, \ 447b24e2ae1Sreyk { 0x0000989c, { 0x00000000, 0x0a000000 } }, \ 448b24e2ae1Sreyk { 0x0000989c, { 0x00380080, 0x02380080 } }, \ 449b24e2ae1Sreyk { 0x0000989c, { 0x00020006, 0x00000006 } }, \ 450b24e2ae1Sreyk { 0x0000989c, { 0x00000092, 0x00000092 } }, \ 451b24e2ae1Sreyk { 0x0000989c, { 0x000000a0, 0x000000a0 } }, \ 452b24e2ae1Sreyk { 0x0000989c, { 0x00040007, 0x00040007 } }, \ 453b24e2ae1Sreyk { 0x000098d4, { 0x0000001a, 0x0000001a } }, \ 454b24e2ae1Sreyk { 0x0000989c, { 0x00000048, 0x00000048 } }, \ 455b24e2ae1Sreyk { 0x0000989c, { 0x00000010, 0x00000010 } }, \ 456b24e2ae1Sreyk { 0x0000989c, { 0x00000008, 0x00000008 } }, \ 457b24e2ae1Sreyk { 0x0000989c, { 0x0000000f, 0x0000000f } }, \ 458b24e2ae1Sreyk { 0x0000989c, { 0x000000f2, 0x00000062 } }, \ 459b24e2ae1Sreyk { 0x0000989c, { 0x0000904f, 0x0000904c } }, \ 460b24e2ae1Sreyk { 0x0000989c, { 0x0000125a, 0x0000129a } }, \ 461b24e2ae1Sreyk { 0x000098cc, { 0x0000000e, 0x0000000f } }, \ 462b24e2ae1Sreyk } 463b24e2ae1Sreyk 464f23d19fdSreyk #endif /* _AR5K_AR5211_VAR_H */ 465