diff options
author | David S. Miller <davem@davemloft.net> | 2009-11-24 18:01:29 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-11-24 18:01:29 -0500 |
commit | 4ba3eb034fb6fd1990ccc5a6d71d5abcda37b905 (patch) | |
tree | 0789ba36d96dba330416a1e6a9a68e891a78802a /drivers/net/wireless/iwlwifi/iwl-csr.h | |
parent | 35700212b45ea9f98fa682cfc1bc1a67c9ccc34b (diff) | |
parent | 18b6c9a2213d3b6e0212e8b225abf95f7564206a (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-csr.h')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-csr.h | 181 |
1 files changed, 152 insertions, 29 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-csr.h b/drivers/net/wireless/iwlwifi/iwl-csr.h index b6ed5a3147a..a7bfae01f19 100644 --- a/drivers/net/wireless/iwlwifi/iwl-csr.h +++ b/drivers/net/wireless/iwlwifi/iwl-csr.h | |||
@@ -62,11 +62,29 @@ | |||
62 | *****************************************************************************/ | 62 | *****************************************************************************/ |
63 | #ifndef __iwl_csr_h__ | 63 | #ifndef __iwl_csr_h__ |
64 | #define __iwl_csr_h__ | 64 | #define __iwl_csr_h__ |
65 | /*=== CSR (control and status registers) ===*/ | 65 | /* |
66 | * CSR (control and status registers) | ||
67 | * | ||
68 | * CSR registers are mapped directly into PCI bus space, and are accessible | ||
69 | * whenever platform supplies power to device, even when device is in | ||
70 | * low power states due to driver-invoked device resets | ||
71 | * (e.g. CSR_RESET_REG_FLAG_SW_RESET) or uCode-driven power-saving modes. | ||
72 | * | ||
73 | * Use iwl_write32() and iwl_read32() family to access these registers; | ||
74 | * these provide simple PCI bus access, without waking up the MAC. | ||
75 | * Do not use iwl_write_direct32() family for these registers; | ||
76 | * no need to "grab nic access" via CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ. | ||
77 | * The MAC (uCode processor, etc.) does not need to be powered up for accessing | ||
78 | * the CSR registers. | ||
79 | * | ||
80 | * NOTE: Newer devices using one-time-programmable (OTP) memory | ||
81 | * require device to be awake in order to read this memory | ||
82 | * via CSR_EEPROM and CSR_OTP registers | ||
83 | */ | ||
66 | #define CSR_BASE (0x000) | 84 | #define CSR_BASE (0x000) |
67 | 85 | ||
68 | #define CSR_HW_IF_CONFIG_REG (CSR_BASE+0x000) /* hardware interface config */ | 86 | #define CSR_HW_IF_CONFIG_REG (CSR_BASE+0x000) /* hardware interface config */ |
69 | #define CSR_INT_COALESCING (CSR_BASE+0x004) /* accum ints, 32-usec units */ | 87 | #define CSR_INT_COALESCING (CSR_BASE+0x004) /* accum ints, 32-usec units */ |
70 | #define CSR_INT (CSR_BASE+0x008) /* host interrupt status/ack */ | 88 | #define CSR_INT (CSR_BASE+0x008) /* host interrupt status/ack */ |
71 | #define CSR_INT_MASK (CSR_BASE+0x00c) /* host interrupt enable */ | 89 | #define CSR_INT_MASK (CSR_BASE+0x00c) /* host interrupt enable */ |
72 | #define CSR_FH_INT_STATUS (CSR_BASE+0x010) /* busmaster int status/ack*/ | 90 | #define CSR_FH_INT_STATUS (CSR_BASE+0x010) /* busmaster int status/ack*/ |
@@ -74,42 +92,65 @@ | |||
74 | #define CSR_RESET (CSR_BASE+0x020) /* busmaster enable, NMI, etc*/ | 92 | #define CSR_RESET (CSR_BASE+0x020) /* busmaster enable, NMI, etc*/ |
75 | #define CSR_GP_CNTRL (CSR_BASE+0x024) | 93 | #define CSR_GP_CNTRL (CSR_BASE+0x024) |
76 | 94 | ||
95 | /* 2nd byte of CSR_INT_COALESCING, not accessible via iwl_write32()! */ | ||
96 | #define CSR_INT_PERIODIC_REG (CSR_BASE+0x005) | ||
97 | |||
77 | /* | 98 | /* |
78 | * Hardware revision info | 99 | * Hardware revision info |
79 | * Bit fields: | 100 | * Bit fields: |
80 | * 31-8: Reserved | 101 | * 31-8: Reserved |
81 | * 7-4: Type of device: 0x0 = 4965, 0xd = 3945 | 102 | * 7-4: Type of device: see CSR_HW_REV_TYPE_xxx definitions |
82 | * 3-2: Revision step: 0 = A, 1 = B, 2 = C, 3 = D | 103 | * 3-2: Revision step: 0 = A, 1 = B, 2 = C, 3 = D |
83 | * 1-0: "Dash" value, as in A-1, etc. | 104 | * 1-0: "Dash" (-) value, as in A-1, etc. |
84 | * | 105 | * |
85 | * NOTE: Revision step affects calculation of CCK txpower for 4965. | 106 | * NOTE: Revision step affects calculation of CCK txpower for 4965. |
107 | * NOTE: See also CSR_HW_REV_WA_REG (work-around for bug in 4965). | ||
86 | */ | 108 | */ |
87 | #define CSR_HW_REV (CSR_BASE+0x028) | 109 | #define CSR_HW_REV (CSR_BASE+0x028) |
88 | 110 | ||
89 | /* EEPROM reads */ | 111 | /* |
112 | * EEPROM and OTP (one-time-programmable) memory reads | ||
113 | * | ||
114 | * NOTE: For (newer) devices using OTP, device must be awake, initialized via | ||
115 | * apm_ops.init() in order to read. Older devices (3945/4965/5000) | ||
116 | * use EEPROM and do not require this. | ||
117 | */ | ||
90 | #define CSR_EEPROM_REG (CSR_BASE+0x02c) | 118 | #define CSR_EEPROM_REG (CSR_BASE+0x02c) |
91 | #define CSR_EEPROM_GP (CSR_BASE+0x030) | 119 | #define CSR_EEPROM_GP (CSR_BASE+0x030) |
92 | #define CSR_OTP_GP_REG (CSR_BASE+0x034) | 120 | #define CSR_OTP_GP_REG (CSR_BASE+0x034) |
121 | |||
93 | #define CSR_GIO_REG (CSR_BASE+0x03C) | 122 | #define CSR_GIO_REG (CSR_BASE+0x03C) |
94 | #define CSR_GP_UCODE_REG (CSR_BASE+0x048) | 123 | #define CSR_GP_UCODE_REG (CSR_BASE+0x048) |
95 | #define CSR_GP_DRIVER_REG (CSR_BASE+0x050) | 124 | #define CSR_GP_DRIVER_REG (CSR_BASE+0x050) |
125 | |||
126 | /* | ||
127 | * UCODE-DRIVER GP (general purpose) mailbox registers. | ||
128 | * SET/CLR registers set/clear bit(s) if "1" is written. | ||
129 | */ | ||
96 | #define CSR_UCODE_DRV_GP1 (CSR_BASE+0x054) | 130 | #define CSR_UCODE_DRV_GP1 (CSR_BASE+0x054) |
97 | #define CSR_UCODE_DRV_GP1_SET (CSR_BASE+0x058) | 131 | #define CSR_UCODE_DRV_GP1_SET (CSR_BASE+0x058) |
98 | #define CSR_UCODE_DRV_GP1_CLR (CSR_BASE+0x05c) | 132 | #define CSR_UCODE_DRV_GP1_CLR (CSR_BASE+0x05c) |
99 | #define CSR_UCODE_DRV_GP2 (CSR_BASE+0x060) | 133 | #define CSR_UCODE_DRV_GP2 (CSR_BASE+0x060) |
134 | |||
100 | #define CSR_LED_REG (CSR_BASE+0x094) | 135 | #define CSR_LED_REG (CSR_BASE+0x094) |
101 | #define CSR_DRAM_INT_TBL_REG (CSR_BASE+0x0A0) | 136 | #define CSR_DRAM_INT_TBL_REG (CSR_BASE+0x0A0) |
137 | |||
138 | /* GIO Chicken Bits (PCI Express bus link power management) */ | ||
102 | #define CSR_GIO_CHICKEN_BITS (CSR_BASE+0x100) | 139 | #define CSR_GIO_CHICKEN_BITS (CSR_BASE+0x100) |
103 | 140 | ||
104 | #define CSR_INT_PERIODIC_REG (CSR_BASE+0x005) | ||
105 | /* Analog phase-lock-loop configuration */ | 141 | /* Analog phase-lock-loop configuration */ |
106 | #define CSR_ANA_PLL_CFG (CSR_BASE+0x20c) | 142 | #define CSR_ANA_PLL_CFG (CSR_BASE+0x20c) |
143 | |||
107 | /* | 144 | /* |
108 | * Indicates hardware rev, to determine CCK backoff for txpower calculation. | 145 | * CSR Hardware Revision Workaround Register. Indicates hardware rev; |
146 | * "step" determines CCK backoff for txpower calculation. Used for 4965 only. | ||
147 | * See also CSR_HW_REV register. | ||
109 | * Bit fields: | 148 | * Bit fields: |
110 | * 3-2: 0 = A, 1 = B, 2 = C, 3 = D step | 149 | * 3-2: 0 = A, 1 = B, 2 = C, 3 = D step |
150 | * 1-0: "Dash" (-) value, as in C-1, etc. | ||
111 | */ | 151 | */ |
112 | #define CSR_HW_REV_WA_REG (CSR_BASE+0x22C) | 152 | #define CSR_HW_REV_WA_REG (CSR_BASE+0x22C) |
153 | |||
113 | #define CSR_DBG_HPET_MEM_REG (CSR_BASE+0x240) | 154 | #define CSR_DBG_HPET_MEM_REG (CSR_BASE+0x240) |
114 | #define CSR_DBG_LINK_PWR_MGMT_REG (CSR_BASE+0x250) | 155 | #define CSR_DBG_LINK_PWR_MGMT_REG (CSR_BASE+0x250) |
115 | 156 | ||
@@ -126,14 +167,14 @@ | |||
126 | #define CSR39_HW_IF_CONFIG_REG_BITS_SILICON_TYPE_A (0x00000000) | 167 | #define CSR39_HW_IF_CONFIG_REG_BITS_SILICON_TYPE_A (0x00000000) |
127 | #define CSR39_HW_IF_CONFIG_REG_BITS_SILICON_TYPE_B (0x00001000) | 168 | #define CSR39_HW_IF_CONFIG_REG_BITS_SILICON_TYPE_B (0x00001000) |
128 | 169 | ||
129 | #define CSR_HW_IF_CONFIG_REG_BIT_HAP_WAKE_L1A (0x00080000) | 170 | #define CSR_HW_IF_CONFIG_REG_BIT_HAP_WAKE_L1A (0x00080000) |
130 | #define CSR_HW_IF_CONFIG_REG_BIT_EEPROM_OWN_SEM (0x00200000) | 171 | #define CSR_HW_IF_CONFIG_REG_BIT_EEPROM_OWN_SEM (0x00200000) |
131 | #define CSR_HW_IF_CONFIG_REG_BIT_NIC_READY (0x00400000) | 172 | #define CSR_HW_IF_CONFIG_REG_BIT_NIC_READY (0x00400000) /* PCI_OWN_SEM */ |
132 | #define CSR_HW_IF_CONFIG_REG_BIT_NIC_PREPARE_DONE (0x02000000) | 173 | #define CSR_HW_IF_CONFIG_REG_BIT_NIC_PREPARE_DONE (0x02000000) /* ME_OWN */ |
133 | #define CSR_HW_IF_CONFIG_REG_PREPARE (0x08000000) | 174 | #define CSR_HW_IF_CONFIG_REG_PREPARE (0x08000000) /* WAKE_ME */ |
134 | 175 | ||
135 | #define CSR_INT_PERIODIC_DIS (0x00) | 176 | #define CSR_INT_PERIODIC_DIS (0x00) /* disable periodic int*/ |
136 | #define CSR_INT_PERIODIC_ENA (0xFF) | 177 | #define CSR_INT_PERIODIC_ENA (0xFF) /* 255*32 usec ~ 8 msec*/ |
137 | 178 | ||
138 | /* interrupt flags in INTA, set by uCode or hardware (e.g. dma), | 179 | /* interrupt flags in INTA, set by uCode or hardware (e.g. dma), |
139 | * acknowledged (reset) by host writing "1" to flagged bits. */ | 180 | * acknowledged (reset) by host writing "1" to flagged bits. */ |
@@ -198,7 +239,44 @@ | |||
198 | #define CSR_RESET_REG_FLAG_STOP_MASTER (0x00000200) | 239 | #define CSR_RESET_REG_FLAG_STOP_MASTER (0x00000200) |
199 | #define CSR_RESET_LINK_PWR_MGMT_DISABLED (0x80000000) | 240 | #define CSR_RESET_LINK_PWR_MGMT_DISABLED (0x80000000) |
200 | 241 | ||
201 | /* GP (general purpose) CONTROL */ | 242 | /* |
243 | * GP (general purpose) CONTROL REGISTER | ||
244 | * Bit fields: | ||
245 | * 27: HW_RF_KILL_SW | ||
246 | * Indicates state of (platform's) hardware RF-Kill switch | ||
247 | * 26-24: POWER_SAVE_TYPE | ||
248 | * Indicates current power-saving mode: | ||
249 | * 000 -- No power saving | ||
250 | * 001 -- MAC power-down | ||
251 | * 010 -- PHY (radio) power-down | ||
252 | * 011 -- Error | ||
253 | * 9-6: SYS_CONFIG | ||
254 | * Indicates current system configuration, reflecting pins on chip | ||
255 | * as forced high/low by device circuit board. | ||
256 | * 4: GOING_TO_SLEEP | ||
257 | * Indicates MAC is entering a power-saving sleep power-down. | ||
258 | * Not a good time to access device-internal resources. | ||
259 | * 3: MAC_ACCESS_REQ | ||
260 | * Host sets this to request and maintain MAC wakeup, to allow host | ||
261 | * access to device-internal resources. Host must wait for | ||
262 | * MAC_CLOCK_READY (and !GOING_TO_SLEEP) before accessing non-CSR | ||
263 | * device registers. | ||
264 | * 2: INIT_DONE | ||
265 | * Host sets this to put device into fully operational D0 power mode. | ||
266 | * Host resets this after SW_RESET to put device into low power mode. | ||
267 | * 0: MAC_CLOCK_READY | ||
268 | * Indicates MAC (ucode processor, etc.) is powered up and can run. | ||
269 | * Internal resources are accessible. | ||
270 | * NOTE: This does not indicate that the processor is actually running. | ||
271 | * NOTE: This does not indicate that 4965 or 3945 has completed | ||
272 | * init or post-power-down restore of internal SRAM memory. | ||
273 | * Use CSR_UCODE_DRV_GP1_BIT_MAC_SLEEP as indication that | ||
274 | * SRAM is restored and uCode is in normal operation mode. | ||
275 | * Later devices (5xxx/6xxx/1xxx) use non-volatile SRAM, and | ||
276 | * do not need to save/restore it. | ||
277 | * NOTE: After device reset, this bit remains "0" until host sets | ||
278 | * INIT_DONE | ||
279 | */ | ||
202 | #define CSR_GP_CNTRL_REG_FLAG_MAC_CLOCK_READY (0x00000001) | 280 | #define CSR_GP_CNTRL_REG_FLAG_MAC_CLOCK_READY (0x00000001) |
203 | #define CSR_GP_CNTRL_REG_FLAG_INIT_DONE (0x00000004) | 281 | #define CSR_GP_CNTRL_REG_FLAG_INIT_DONE (0x00000004) |
204 | #define CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ (0x00000008) | 282 | #define CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ (0x00000008) |
@@ -231,28 +309,58 @@ | |||
231 | #define CSR_EEPROM_REG_MSK_DATA (0xFFFF0000) | 309 | #define CSR_EEPROM_REG_MSK_DATA (0xFFFF0000) |
232 | 310 | ||
233 | /* EEPROM GP */ | 311 | /* EEPROM GP */ |
234 | #define CSR_EEPROM_GP_VALID_MSK (0x00000007) | 312 | #define CSR_EEPROM_GP_VALID_MSK (0x00000007) /* signature */ |
235 | #define CSR_EEPROM_GP_IF_OWNER_MSK (0x00000180) | 313 | #define CSR_EEPROM_GP_IF_OWNER_MSK (0x00000180) |
314 | #define CSR_EEPROM_GP_BAD_SIGNATURE_BOTH_EEP_AND_OTP (0x00000000) | ||
315 | #define CSR_EEPROM_GP_BAD_SIG_EEP_GOOD_SIG_OTP (0x00000001) | ||
316 | #define CSR_EEPROM_GP_GOOD_SIG_EEP_LESS_THAN_4K (0x00000002) | ||
317 | #define CSR_EEPROM_GP_GOOD_SIG_EEP_MORE_THAN_4K (0x00000004) | ||
318 | |||
319 | /* One-time-programmable memory general purpose reg */ | ||
236 | #define CSR_OTP_GP_REG_DEVICE_SELECT (0x00010000) /* 0 - EEPROM, 1 - OTP */ | 320 | #define CSR_OTP_GP_REG_DEVICE_SELECT (0x00010000) /* 0 - EEPROM, 1 - OTP */ |
237 | #define CSR_OTP_GP_REG_OTP_ACCESS_MODE (0x00020000) /* 0 - absolute, 1 - relative */ | 321 | #define CSR_OTP_GP_REG_OTP_ACCESS_MODE (0x00020000) /* 0 - absolute, 1 - relative */ |
238 | #define CSR_OTP_GP_REG_ECC_CORR_STATUS_MSK (0x00100000) /* bit 20 */ | 322 | #define CSR_OTP_GP_REG_ECC_CORR_STATUS_MSK (0x00100000) /* bit 20 */ |
239 | #define CSR_OTP_GP_REG_ECC_UNCORR_STATUS_MSK (0x00200000) /* bit 21 */ | 323 | #define CSR_OTP_GP_REG_ECC_UNCORR_STATUS_MSK (0x00200000) /* bit 21 */ |
324 | |||
325 | /* GP REG */ | ||
240 | #define CSR_GP_REG_POWER_SAVE_STATUS_MSK (0x03000000) /* bit 24/25 */ | 326 | #define CSR_GP_REG_POWER_SAVE_STATUS_MSK (0x03000000) /* bit 24/25 */ |
241 | #define CSR_GP_REG_NO_POWER_SAVE (0x00000000) | 327 | #define CSR_GP_REG_NO_POWER_SAVE (0x00000000) |
242 | #define CSR_GP_REG_MAC_POWER_SAVE (0x01000000) | 328 | #define CSR_GP_REG_MAC_POWER_SAVE (0x01000000) |
243 | #define CSR_GP_REG_PHY_POWER_SAVE (0x02000000) | 329 | #define CSR_GP_REG_PHY_POWER_SAVE (0x02000000) |
244 | #define CSR_GP_REG_POWER_SAVE_ERROR (0x03000000) | 330 | #define CSR_GP_REG_POWER_SAVE_ERROR (0x03000000) |
245 | 331 | ||
246 | /* EEPROM signature */ | ||
247 | #define CSR_EEPROM_GP_BAD_SIGNATURE_BOTH_EEP_AND_OTP (0x00000000) | ||
248 | #define CSR_EEPROM_GP_BAD_SIG_EEP_GOOD_SIG_OTP (0x00000001) | ||
249 | #define CSR_EEPROM_GP_GOOD_SIG_EEP_LESS_THAN_4K (0x00000002) | ||
250 | #define CSR_EEPROM_GP_GOOD_SIG_EEP_MORE_THAN_4K (0x00000004) | ||
251 | 332 | ||
252 | /* CSR GIO */ | 333 | /* CSR GIO */ |
253 | #define CSR_GIO_REG_VAL_L0S_ENABLED (0x00000002) | 334 | #define CSR_GIO_REG_VAL_L0S_ENABLED (0x00000002) |
254 | 335 | ||
255 | /* UCODE DRV GP */ | 336 | /* |
337 | * UCODE-DRIVER GP (general purpose) mailbox register 1 | ||
338 | * Host driver and uCode write and/or read this register to communicate with | ||
339 | * each other. | ||
340 | * Bit fields: | ||
341 | * 4: UCODE_DISABLE | ||
342 | * Host sets this to request permanent halt of uCode, same as | ||
343 | * sending CARD_STATE command with "halt" bit set. | ||
344 | * 3: CT_KILL_EXIT | ||
345 | * Host sets this to request exit from CT_KILL state, i.e. host thinks | ||
346 | * device temperature is low enough to continue normal operation. | ||
347 | * 2: CMD_BLOCKED | ||
348 | * Host sets this during RF KILL power-down sequence (HW, SW, CT KILL) | ||
349 | * to release uCode to clear all Tx and command queues, enter | ||
350 | * unassociated mode, and power down. | ||
351 | * NOTE: Some devices also use HBUS_TARG_MBX_C register for this bit. | ||
352 | * 1: SW_BIT_RFKILL | ||
353 | * Host sets this when issuing CARD_STATE command to request | ||
354 | * device sleep. | ||
355 | * 0: MAC_SLEEP | ||
356 | * uCode sets this when preparing a power-saving power-down. | ||
357 | * uCode resets this when power-up is complete and SRAM is sane. | ||
358 | * NOTE: 3945/4965 saves internal SRAM data to host when powering down, | ||
359 | * and must restore this data after powering back up. | ||
360 | * MAC_SLEEP is the best indication that restore is complete. | ||
361 | * Later devices (5xxx/6xxx/1xxx) use non-volatile SRAM, and | ||
362 | * do not need to save/restore it. | ||
363 | */ | ||
256 | #define CSR_UCODE_DRV_GP1_BIT_MAC_SLEEP (0x00000001) | 364 | #define CSR_UCODE_DRV_GP1_BIT_MAC_SLEEP (0x00000001) |
257 | #define CSR_UCODE_SW_BIT_RFKILL (0x00000002) | 365 | #define CSR_UCODE_SW_BIT_RFKILL (0x00000002) |
258 | #define CSR_UCODE_DRV_GP1_BIT_CMD_BLOCKED (0x00000004) | 366 | #define CSR_UCODE_DRV_GP1_BIT_CMD_BLOCKED (0x00000004) |
@@ -265,7 +373,7 @@ | |||
265 | #define CSR_GP_DRIVER_REG_BIT_RADIO_SKU_2x2_IPA (0x00000002) | 373 | #define CSR_GP_DRIVER_REG_BIT_RADIO_SKU_2x2_IPA (0x00000002) |
266 | 374 | ||
267 | 375 | ||
268 | /* GI Chicken Bits */ | 376 | /* GIO Chicken Bits (PCI Express bus link power management) */ |
269 | #define CSR_GIO_CHICKEN_BITS_REG_BIT_L1A_NO_L0S_RX (0x00800000) | 377 | #define CSR_GIO_CHICKEN_BITS_REG_BIT_L1A_NO_L0S_RX (0x00800000) |
270 | #define CSR_GIO_CHICKEN_BITS_REG_BIT_DIS_L0S_EXIT_TIMER (0x20000000) | 378 | #define CSR_GIO_CHICKEN_BITS_REG_BIT_DIS_L0S_EXIT_TIMER (0x20000000) |
271 | 379 | ||
@@ -285,8 +393,23 @@ | |||
285 | #define CSR_DRAM_INT_TBL_ENABLE (1 << 31) | 393 | #define CSR_DRAM_INT_TBL_ENABLE (1 << 31) |
286 | #define CSR_DRAM_INIT_TBL_WRAP_CHECK (1 << 27) | 394 | #define CSR_DRAM_INIT_TBL_WRAP_CHECK (1 << 27) |
287 | 395 | ||
288 | /*=== HBUS (Host-side Bus) ===*/ | 396 | /* |
397 | * HBUS (Host-side Bus) | ||
398 | * | ||
399 | * HBUS registers are mapped directly into PCI bus space, but are used | ||
400 | * to indirectly access device's internal memory or registers that | ||
401 | * may be powered-down. | ||
402 | * | ||
403 | * Use iwl_write_direct32()/iwl_read_direct32() family for these registers; | ||
404 | * host must "grab nic access" via CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ | ||
405 | * to make sure the MAC (uCode processor, etc.) is powered up for accessing | ||
406 | * internal resources. | ||
407 | * | ||
408 | * Do not use iwl_write32()/iwl_read32() family to access these registers; | ||
409 | * these provide only simple PCI bus access, without waking up the MAC. | ||
410 | */ | ||
289 | #define HBUS_BASE (0x400) | 411 | #define HBUS_BASE (0x400) |
412 | |||
290 | /* | 413 | /* |
291 | * Registers for accessing device's internal SRAM memory (e.g. SCD SRAM | 414 | * Registers for accessing device's internal SRAM memory (e.g. SCD SRAM |
292 | * structures, error log, event log, verifying uCode load). | 415 | * structures, error log, event log, verifying uCode load). |
@@ -301,6 +424,10 @@ | |||
301 | #define HBUS_TARG_MEM_WDAT (HBUS_BASE+0x018) | 424 | #define HBUS_TARG_MEM_WDAT (HBUS_BASE+0x018) |
302 | #define HBUS_TARG_MEM_RDAT (HBUS_BASE+0x01c) | 425 | #define HBUS_TARG_MEM_RDAT (HBUS_BASE+0x01c) |
303 | 426 | ||
427 | /* Mailbox C, used as workaround alternative to CSR_UCODE_DRV_GP1 mailbox */ | ||
428 | #define HBUS_TARG_MBX_C (HBUS_BASE+0x030) | ||
429 | #define HBUS_TARG_MBX_C_REG_BIT_CMD_BLOCKED (0x00000004) | ||
430 | |||
304 | /* | 431 | /* |
305 | * Registers for accessing device's internal peripheral registers | 432 | * Registers for accessing device's internal peripheral registers |
306 | * (e.g. SCD, BSM, etc.). First write to address register, | 433 | * (e.g. SCD, BSM, etc.). First write to address register, |
@@ -315,16 +442,12 @@ | |||
315 | #define HBUS_TARG_PRPH_RDAT (HBUS_BASE+0x050) | 442 | #define HBUS_TARG_PRPH_RDAT (HBUS_BASE+0x050) |
316 | 443 | ||
317 | /* | 444 | /* |
318 | * Per-Tx-queue write pointer (index, really!) (3945 and 4965). | 445 | * Per-Tx-queue write pointer (index, really!) |
319 | * Indicates index to next TFD that driver will fill (1 past latest filled). | 446 | * Indicates index to next TFD that driver will fill (1 past latest filled). |
320 | * Bit usage: | 447 | * Bit usage: |
321 | * 0-7: queue write index | 448 | * 0-7: queue write index |
322 | * 11-8: queue selector | 449 | * 11-8: queue selector |
323 | */ | 450 | */ |
324 | #define HBUS_TARG_WRPTR (HBUS_BASE+0x060) | 451 | #define HBUS_TARG_WRPTR (HBUS_BASE+0x060) |
325 | #define HBUS_TARG_MBX_C (HBUS_BASE+0x030) | ||
326 | |||
327 | #define HBUS_TARG_MBX_C_REG_BIT_CMD_BLOCKED (0x00000004) | ||
328 | |||
329 | 452 | ||
330 | #endif /* !__iwl_csr_h__ */ | 453 | #endif /* !__iwl_csr_h__ */ |