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