1 /******************************************************************************
\r
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
\r
5 * This program is free software; you can redistribute it and/or modify it
\r
6 * under the terms of version 2 of the GNU General Public License as
\r
7 * published by the Free Software Foundation.
\r
9 * This program is distributed in the hope that it will be useful, but WITHOUT
\r
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
\r
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
\r
14 * You should have received a copy of the GNU General Public License along with
\r
15 * this program; if not, write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
\r
18 *******************************************************************************/
\r
19 #ifndef __RTL8723A_SPEC_H__
\r
20 #define __RTL8723A_SPEC_H__
\r
22 #include <rtl8192c_spec.h>
\r
25 //============================================================================
\r
26 // 8723A Regsiter offset definition
\r
27 //============================================================================
\r
28 #define HAL_8723A_NAV_UPPER_UNIT 128 // micro-second
\r
30 //-----------------------------------------------------
\r
32 // 0x0000h ~ 0x00FFh System Configuration
\r
34 //-----------------------------------------------------
\r
35 #define REG_SYSON_REG_LOCK 0x001C
\r
38 //-----------------------------------------------------
\r
40 // 0x0100h ~ 0x01FFh MACTOP General Configuration
\r
42 //-----------------------------------------------------
\r
43 #define REG_FTIMR 0x0138
\r
46 //-----------------------------------------------------
\r
48 // 0x0200h ~ 0x027Fh TXDMA Configuration
\r
50 //-----------------------------------------------------
\r
53 //-----------------------------------------------------
\r
55 // 0x0280h ~ 0x02FFh RXDMA Configuration
\r
57 //-----------------------------------------------------
\r
60 //-----------------------------------------------------
\r
62 // 0x0300h ~ 0x03FFh PCIe
\r
64 //-----------------------------------------------------
\r
67 //-----------------------------------------------------
\r
69 // 0x0400h ~ 0x047Fh Protocol Configuration
\r
71 //-----------------------------------------------------
\r
72 //#define REG_EARLY_MODE_CONTROL 0x4D0
\r
73 #define REG_MACID_NO_LINK 0x4D0
\r
75 //-----------------------------------------------------
\r
77 // 0x0500h ~ 0x05FFh EDCA Configuration
\r
79 //-----------------------------------------------------
\r
82 #define DIS_ATIM BIT(0)
\r
83 #define DIS_BCNQ_SUB BIT(1)
\r
84 #define DIS_TSF_UDT BIT(4)
\r
87 //-----------------------------------------------------
\r
89 // 0x0600h ~ 0x07FFh WMAC Configuration
\r
91 //-----------------------------------------------------
\r
94 // The NAV upper value is very important to WiFi 11n 5.2.3 NAV test. The default value is
\r
95 // always too small, but the WiFi TestPlan test by 25,000 microseconds of NAV through sending
\r
96 // CTS in the air. We must update this value greater than 25,000 microseconds to pass the item.
\r
97 // The offset of NAV_UPPER in 8192C Spec is incorrect, and the offset should be 0x0652. Commented
\r
99 // By Bruce, 2011-07-18.
\r
101 #define REG_NAV_UPPER 0x0652 // unit of 128
\r
103 #define REG_BT_COEX_TABLE_1 0x06C0
\r
104 #define REG_BT_COEX_TABLE_2 0x06C4
\r
106 //============================================================================
\r
107 // 8723 Regsiter Bit and Content definition
\r
108 //============================================================================
\r
110 //-----------------------------------------------------
\r
112 // 0x0000h ~ 0x00FFh System Configuration
\r
114 //-----------------------------------------------------
\r
123 #define EN_WLON BIT(16)
\r
136 #define WLOCK_ALL BIT(0)
\r
137 #define WLOCK_00 BIT(1)
\r
138 #define WLOCK_04 BIT(2)
\r
139 #define WLOCK_08 BIT(3)
\r
140 #define WLOCK_40 BIT(4)
\r
141 #define WLOCK_1C_B6 BIT(5)
\r
142 #define R_DIS_PRST_1 BIT(6)
\r
143 #define LOCK_ALL_EN BIT(7)
\r
157 //2 EFUSE_TEST (For RTL8723 partially)
\r
178 // 8723 Host System Interrupt Mask Register (offset 0x58, 32 byte)
\r
179 #define HSIMR_GPIO12_0_INT_EN BIT(0)
\r
180 #define HSIMR_SPS_OCP_INT_EN BIT(5)
\r
181 #define HSIMR_RON_INT_EN BIT(6)
\r
182 #define HSIMR_PDNINT_EN BIT(7)
\r
183 #define HSIMR_GPIO9_INT_EN BIT(25)
\r
186 // 8723 Host System Interrupt Status Register (offset 0x5C, 32 byte)
\r
187 #define HSISR_GPIO12_0_INT BIT(0)
\r
188 #define HSISR_SPS_OCP_INT BIT(5)
\r
189 #define HSISR_RON_INT BIT(6)
\r
190 #define HSISR_PDNINT BIT(7)
\r
191 #define HSISR_GPIO9_INT BIT(25)
\r
193 // interrupt mask which needs to clear
\r
194 #define MASK_HSISR_CLEAR (HSISR_GPIO12_0_INT |\
\r
195 HSISR_SPS_OCP_INT |\
\r
201 #define RAM_DL_SEL BIT7 // 1:RAM, 0:ROM
\r
206 #define RTL_ID BIT(23) // TestChip ID, 1:Test(RLE); 0:MP(RL)
\r
207 #define SPS_SEL BIT(24) // 1:LDO regulator mode; 0:Switching regulator mode
\r
210 //-----------------------------------------------------
\r
212 // 0x0100h ~ 0x01FFh MACTOP General Configuration
\r
214 //-----------------------------------------------------
\r
216 //2 Function Enable Registers
\r
219 #define CALTMR_EN BIT(10)
\r
221 //2 PBP - Page Size Register
\r
232 //-----------------------------------------------------
\r
234 // 0x0200h ~ 0x027Fh TXDMA Configuration
\r
236 //-----------------------------------------------------
\r
244 //2 TXDMA_OFFSET_CHK
\r
247 //-----------------------------------------------------
\r
249 // 0x0400h ~ 0x047Fh Protocol Configuration
\r
251 //-----------------------------------------------------
\r
272 //-----------------------------------------------------
\r
274 // 0x0500h ~ 0x05FFh EDCA Configuration
\r
276 //-----------------------------------------------------
\r
295 //-----------------------------------------------------
\r
297 // 0x0600h ~ 0x07FFh WMAC Configuration
\r
299 //-----------------------------------------------------
\r
315 //2 AMPDU_MIN_SPACE
\r
322 //-----------------------------------------------------
\r
324 // 0xFE00h ~ 0xFE55h RTL8723 SDIO Configuration
\r
326 //-----------------------------------------------------
\r
328 // I/O bus domain address mapping
\r
329 #define SDIO_LOCAL_BASE 0x10250000
\r
330 #define WLAN_IOREG_BASE 0x10260000
\r
331 #define FIRMWARE_FIFO_BASE 0x10270000
\r
332 #define TX_HIQ_BASE 0x10310000
\r
333 #define TX_MIQ_BASE 0x10320000
\r
334 #define TX_LOQ_BASE 0x10330000
\r
335 #define RX_RX0FF_BASE 0x10340000
\r
337 // SDIO host local register space mapping.
\r
338 #define SDIO_LOCAL_MSK 0x0FFF
\r
339 #define WLAN_IOREG_MSK 0x7FFF
\r
340 #define WLAN_FIFO_MSK 0x1FFF // Aggregation Length[12:0]
\r
341 #define WLAN_RX0FF_MSK 0x0003
\r
343 #define SDIO_WITHOUT_REF_DEVICE_ID 0 // Without reference to the SDIO Device ID
\r
344 #define SDIO_LOCAL_DEVICE_ID 0 // 0b[16], 000b[15:13]
\r
345 #define WLAN_TX_HIQ_DEVICE_ID 4 // 0b[16], 100b[15:13]
\r
346 #define WLAN_TX_MIQ_DEVICE_ID 5 // 0b[16], 101b[15:13]
\r
347 #define WLAN_TX_LOQ_DEVICE_ID 6 // 0b[16], 110b[15:13]
\r
348 #define WLAN_RX0FF_DEVICE_ID 7 // 0b[16], 111b[15:13]
\r
349 #define WLAN_IOREG_DEVICE_ID 8 // 1b[16]
\r
351 // SDIO Tx Free Page Index
\r
352 #define HI_QUEUE_IDX 0
\r
353 #define MID_QUEUE_IDX 1
\r
354 #define LOW_QUEUE_IDX 2
\r
355 #define PUBLIC_QUEUE_IDX 3
\r
357 #define SDIO_MAX_TX_QUEUE 3 // HIQ, MIQ and LOQ
\r
358 #define SDIO_MAX_RX_QUEUE 1
\r
360 #define SDIO_REG_TX_CTRL 0x0000 // SDIO Tx Control
\r
361 #define SDIO_REG_HIMR 0x0014 // SDIO Host Interrupt Mask
\r
362 #define SDIO_REG_HISR 0x0018 // SDIO Host Interrupt Service Routine
\r
363 #define SDIO_REG_HCPWM 0x0019 // HCI Current Power Mode
\r
364 #define SDIO_REG_RX0_REQ_LEN 0x001C // RXDMA Request Length
\r
365 #define SDIO_REG_FREE_TXPG 0x0020 // Free Tx Buffer Page
\r
366 #define SDIO_REG_HCPWM1 0x0024 // HCI Current Power Mode 1
\r
367 #define SDIO_REG_HCPWM2 0x0026 // HCI Current Power Mode 2
\r
368 #define SDIO_REG_HTSFR_INFO 0x0030 // HTSF Informaion
\r
369 #define SDIO_REG_HRPWM1 0x0080 // HCI Request Power Mode 1
\r
370 #define SDIO_REG_HRPWM2 0x0082 // HCI Request Power Mode 2
\r
371 #define SDIO_REG_HPS_CLKR 0x0084 // HCI Power Save Clock
\r
372 #define SDIO_REG_HSUS_CTRL 0x0086 // SDIO HCI Suspend Control
\r
373 #define SDIO_REG_HIMR_ON 0x0090 // SDIO Host Extension Interrupt Mask Always
\r
374 #define SDIO_REG_HISR_ON 0x0091 // SDIO Host Extension Interrupt Status Always
\r
376 #define SDIO_HIMR_DISABLED 0
\r
378 // SDIO Host Interrupt Mask Register
\r
379 #define SDIO_HIMR_RX_REQUEST_MSK BIT0
\r
380 #define SDIO_HIMR_AVAL_MSK BIT1
\r
381 #define SDIO_HIMR_TXERR_MSK BIT2
\r
382 #define SDIO_HIMR_RXERR_MSK BIT3
\r
383 #define SDIO_HIMR_TXFOVW_MSK BIT4
\r
384 #define SDIO_HIMR_RXFOVW_MSK BIT5
\r
385 #define SDIO_HIMR_TXBCNOK_MSK BIT6
\r
386 #define SDIO_HIMR_TXBCNERR_MSK BIT7
\r
387 #define SDIO_HIMR_BCNERLY_INT_MSK BIT16
\r
388 #define SDIO_HIMR_C2HCMD_MSK BIT17
\r
389 #define SDIO_HIMR_CPWM1_MSK BIT18
\r
390 #define SDIO_HIMR_CPWM2_MSK BIT19
\r
391 #define SDIO_HIMR_HSISR_IND_MSK BIT20
\r
392 #define SDIO_HIMR_GTINT3_IND_MSK BIT21
\r
393 #define SDIO_HIMR_GTINT4_IND_MSK BIT22
\r
394 #define SDIO_HIMR_PSTIMEOUT_MSK BIT23
\r
395 #define SDIO_HIMR_OCPINT_MSK BIT24
\r
396 #define SDIO_HIMR_ATIMEND_MSK BIT25
\r
397 #define SDIO_HIMR_ATIMEND_E_MSK BIT26
\r
398 #define SDIO_HIMR_CTWEND_MSK BIT27
\r
400 // SDIO Host Interrupt Service Routine
\r
401 #define SDIO_HISR_RX_REQUEST BIT0
\r
402 #define SDIO_HISR_AVAL BIT1
\r
403 #define SDIO_HISR_TXERR BIT2
\r
404 #define SDIO_HISR_RXERR BIT3
\r
405 #define SDIO_HISR_TXFOVW BIT4
\r
406 #define SDIO_HISR_RXFOVW BIT5
\r
407 #define SDIO_HISR_TXBCNOK BIT6
\r
408 #define SDIO_HISR_TXBCNERR BIT7
\r
409 #define SDIO_HISR_BCNERLY_INT BIT16
\r
410 #define SDIO_HISR_C2HCMD BIT17
\r
411 #define SDIO_HISR_CPWM1 BIT18
\r
412 #define SDIO_HISR_CPWM2 BIT19
\r
413 #define SDIO_HISR_HSISR_IND BIT20
\r
414 #define SDIO_HISR_GTINT3_IND BIT21
\r
415 #define SDIO_HISR_GTINT4_IND BIT22
\r
416 #define SDIO_HISR_PSTIMEOUT BIT23
\r
417 #define SDIO_HISR_OCPINT BIT24
\r
418 #define SDIO_HISR_ATIMEND BIT25
\r
419 #define SDIO_HISR_ATIMEND_E BIT26
\r
420 #define SDIO_HISR_CTWEND BIT27
\r
422 #define MASK_SDIO_HISR_CLEAR (SDIO_HISR_TXERR |\
\r
424 SDIO_HISR_TXFOVW |\
\r
425 SDIO_HISR_RXFOVW |\
\r
426 SDIO_HISR_TXBCNOK |\
\r
427 SDIO_HISR_TXBCNERR |\
\r
428 SDIO_HISR_C2HCMD |\
\r
431 SDIO_HISR_HSISR_IND |\
\r
432 SDIO_HISR_GTINT3_IND |\
\r
433 SDIO_HISR_GTINT4_IND |\
\r
434 SDIO_HISR_PSTIMEOUT |\
\r
437 // SDIO HCI Suspend Control Register
\r
438 #define HCI_RESUME_PWR_RDY BIT1
\r
439 #define HCI_SUS_CTRL BIT0
\r
441 // SDIO Tx FIFO related
\r
442 #define SDIO_TX_FREE_PG_QUEUE 4 // The number of Tx FIFO free page
\r
443 #define SDIO_TX_FIFO_PAGE_SZ 128
\r
445 // vivi added for new cam search flow, 20091028
\r
446 #define SCR_TxUseBroadcastDK BIT6 // Force Tx Use Broadcast Default Key
\r
447 #define SCR_RxUseBroadcastDK BIT7 // Force Rx Use Broadcast Default Key
\r
450 //----------------------------------------------------------------------------
\r
452 //----------------------------------------------------------------------------
\r
453 #ifdef HWSET_MAX_SIZE
\r
454 #undef HWSET_MAX_SIZE
\r
456 #define HWSET_MAX_SIZE 256
\r
459 //-----------------------------------------------------------------------------
\r
461 //-----------------------------------------------------------------------------
\r
462 #define UHIMR_TIMEOUT2 BIT31
\r
463 #define UHIMR_TIMEOUT1 BIT30
\r
464 #define UHIMR_PSTIMEOUT BIT29
\r
465 #define UHIMR_GTINT4 BIT28
\r
466 #define UHIMR_GTINT3 BIT27
\r
467 #define UHIMR_TXBCNERR BIT26
\r
468 #define UHIMR_TXBCNOK BIT25
\r
469 #define UHIMR_TSF_BIT32_TOGGLE BIT24
\r
470 #define UHIMR_BCNDMAINT3 BIT23
\r
471 #define UHIMR_BCNDMAINT2 BIT22
\r
472 #define UHIMR_BCNDMAINT1 BIT21
\r
473 #define UHIMR_BCNDMAINT0 BIT20
\r
474 #define UHIMR_BCNDOK3 BIT19
\r
475 #define UHIMR_BCNDOK2 BIT18
\r
476 #define UHIMR_BCNDOK1 BIT17
\r
477 #define UHIMR_BCNDOK0 BIT16
\r
478 #define UHIMR_HSISR_IND BIT15
\r
479 #define UHIMR_BCNDMAINT_E BIT14
\r
481 #define UHIMR_CTW_END BIT12
\r
483 #define UHIMR_C2HCMD BIT10
\r
484 #define UHIMR_CPWM2 BIT9
\r
485 #define UHIMR_CPWM BIT8
\r
486 #define UHIMR_HIGHDOK BIT7 // High Queue DMA OK Interrupt
\r
487 #define UHIMR_MGNTDOK BIT6 // Management Queue DMA OK Interrupt
\r
488 #define UHIMR_BKDOK BIT5 // AC_BK DMA OK Interrupt
\r
489 #define UHIMR_BEDOK BIT4 // AC_BE DMA OK Interrupt
\r
490 #define UHIMR_VIDOK BIT3 // AC_VI DMA OK Interrupt
\r
491 #define UHIMR_VODOK BIT2 // AC_VO DMA Interrupt
\r
492 #define UHIMR_RDU BIT1 // Receive Descriptor Unavailable
\r
493 #define UHIMR_ROK BIT0 // Receive DMA OK Interrupt
\r
495 // USB Host Interrupt Status Extension bit
\r
496 #define UHIMR_BCNDMAINT7 BIT23
\r
497 #define UHIMR_BCNDMAINT6 BIT22
\r
498 #define UHIMR_BCNDMAINT5 BIT21
\r
499 #define UHIMR_BCNDMAINT4 BIT20
\r
500 #define UHIMR_BCNDOK7 BIT19
\r
501 #define UHIMR_BCNDOK6 BIT18
\r
502 #define UHIMR_BCNDOK5 BIT17
\r
503 #define UHIMR_BCNDOK4 BIT16
\r
505 #define UHIMR_ATIMEND_E BIT13
\r
506 #define UHIMR_ATIMEND BIT12
\r
507 #define UHIMR_TXERR BIT11
\r
508 #define UHIMR_RXERR BIT10
\r
509 #define UHIMR_TXFOVW BIT9
\r
510 #define UHIMR_RXFOVW BIT8
\r
512 #define UHIMR_OCPINT BIT1
\r
515 #define REG_USB_HIMR 0xFE38
\r
516 #define REG_USB_HIMRE 0xFE3C
\r
517 #define REG_USB_HISR 0xFE78
\r
518 #define REG_USB_HISRE 0xFE7C
\r
520 #define USB_INTR_CPWM_OFFSET 16
\r
521 #define USB_INTR_CONTENT_HISR_OFFSET 48
\r
522 #define USB_INTR_CONTENT_HISRE_OFFSET 52
\r
523 #define USB_INTR_CONTENT_LENGTH 56
\r
524 #define USB_C2H_CMDID_OFFSET 0
\r
525 #define USB_C2H_SEQ_OFFSET 1
\r
526 #define USB_C2H_EVENT_OFFSET 2
\r
527 //============================================================================
\r
528 // General definitions
\r
529 //============================================================================
\r
531 #ifdef CONFIG_RF_GAIN_OFFSET
\r
532 #define EEPROM_RF_GAIN_OFFSET 0x2F
\r
533 #define EEPROM_RF_GAIN_VAL 0x1F6
\r
534 #endif //CONFIG_RF_GAIN_OFFSET
\r