| /****************************************************************************** |
| * |
| * This file is provided under a dual license. When you use or |
| * distribute this software, you may choose to be licensed under |
| * version 2 of the GNU General Public License ("GPLv2 License") |
| * or BSD License. |
| * |
| * GPLv2 License |
| * |
| * Copyright(C) 2016 MediaTek Inc. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of version 2 of the GNU General Public License as |
| * published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, but |
| * WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * See http://www.gnu.org/licenses/gpl-2.0.html for more details. |
| * |
| * BSD LICENSE |
| * |
| * Copyright(C) 2016 MediaTek Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * * Neither the name of the copyright holder nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * |
| *****************************************************************************/ |
| /* |
| ** Id: |
| */ |
| |
| /*! \file "mt66xx_reg.h" |
| * \brief The common register definition of MT6630 |
| * |
| * N/A |
| */ |
| |
| |
| |
| #ifndef _MT66XX_REG_H |
| #define _MT66XX_REG_H |
| |
| /******************************************************************************* |
| * C O M P I L E R F L A G S |
| ******************************************************************************** |
| */ |
| |
| /******************************************************************************* |
| * E X T E R N A L R E F E R E N C E S |
| ******************************************************************************** |
| */ |
| |
| extern struct mt66xx_hif_driver_data mt66xx_driver_data_mt6632; |
| extern struct mt66xx_hif_driver_data mt66xx_driver_data_mt7668; |
| |
| /******************************************************************************* |
| * C O N S T A N T S |
| ******************************************************************************** |
| */ |
| /* 1 MT6630 MCR Definition */ |
| |
| /* 2 Host Interface */ |
| |
| /* #define TOP_CFG_BASE 0x0000 */ |
| #define TOP_CFG_BASE 0x80020000 |
| #define TOP_RGU_BASE 0x81020000 |
| #define TOP_CFG_AON_base 0x81021000 |
| #define MCU_CFG_BASE 0x80000000 |
| |
| #define TOP_HVR (TOP_CFG_BASE + 0x1000) |
| #define HW_VER_MASK (0xffff) |
| #define GET_HW_VER(p) (((p) & HW_VER_MASK)) |
| #define RESC_CID_MASK (0xf << 28) |
| #define GET_RESC_CID(p) (((p) & RESC_CID_MASK) >> 28) |
| |
| #define TOP_FVR (TOP_CFG_BASE + 0x1004) |
| #define FW_VER_MASK (0xffff) |
| #define GET_FW_VER(p) (((p) & FW_VER_MASK)) |
| |
| #define TOP_HCR (TOP_CFG_BASE + 0x1008) |
| #define HW_CODE_MASK (0xffff) |
| #define GET_HW_CODE(p) (((p) & HW_CODE_MASK)) |
| |
| #define STRAP_STA (TOP_CFG_BASE + 0x1010) |
| #define XTAL_SEL_MASK (0x3) |
| #define GET_XTAL_SEL(p) (((p) & XTAL_SEL_MASK)) |
| #define EEPROM_SEL (1 << 2) |
| #define GET_EEPROM_SEL(p) (((p) & EEPROM_SEL) >> 2) |
| #define CO_CLOCK_SEL (1 << 8) |
| #define GET_CO_CLOCK_SEL(p) (((p) & CO_CLOCK_SEL) >> 8) |
| #define ONE_ANT (1 << 24) |
| #define GET_ONE_ANT(p) (((p) & ONE_ANT) >> 24) |
| #define USB_MODE (1 << 25) |
| #define GET_USB_MODE(p) (((p) & USB_MODE) >> 25) |
| |
| #define TOP_MISC2 (TOP_CFG_BASE + 0x1134) |
| |
| #define TOP_CKGEN2_CR_PMIC_CK_MANUAL (TOP_CFG_AON_base + 0x00000108) |
| #define TOP_CKGEN2_CR_PMIC_CK_MANUAL_MASK 0x00080000 |
| |
| #define MTK_CHIP_REV 0x00006632 |
| |
| #define WIFI_RGU_SW_SYNC0 (TOP_RGU_BASE + 0x1250) |
| #define WIFI_RGU_SYNC0_RDY_OFFSET (0) |
| #define MCU_CFG_PCIE_REMAP1 (MCU_CFG_BASE + 0x0500) |
| #define PCIE_REMAP1_OFFSET (18) |
| #define PCIE_REMAP1_MASK (BITS(18, 31)) |
| #define PCIE_REMAP1_BUS_ADDR (0x40000) |
| #define MCU_CFG_PCIE_REMAP2 (MCU_CFG_BASE + 0x0504) |
| #define PCIE_REMAP2_OFFSET (19) |
| #define PCIE_REMAP2_MASK (BITS(19, 31)) |
| #define PCIE_REMAP2_BUS_ADDR (0x80000) |
| |
| |
| |
| /* UMAC Register */ |
| #define UMAC_PLE_CR_CFG_BASE_ADDR 0x82060000 |
| #define UMAC_PSE_CR_CFG_BASE_ADDR 0x82068000 |
| |
| #define UMAC_PSE_PLE_CR_ADDR_DIFF (UMAC_PSE_CR_CFG_BASE_ADDR - UMAC_PLE_CR_CFG_BASE_ADDR) |
| #define UMAC_PSE_CR_BITMAP_OFFSET 15 |
| #define UMAC_PSE_PLE_ADDR_DIFF_MAR(_x) (_x << UMAC_PSE_CR_BITMAP_OFFSET) |
| |
| |
| #define UMAC_PLE_BASE_ADDRESS (0xa << 28) |
| |
| #define UMAC_PSE_BASE_ADDRESS (0xb << 28) |
| |
| #define UMAC_FID_SHIFT_16_BIT_VM_MAP 16 |
| |
| #define UMAC_BASE(_x) (UMAC_PLE_CR_CFG_BASE_ADDR | (_x << UMAC_PSE_CR_BITMAP_OFFSET)) |
| |
| #define UMAC_RESET(_x) (UMAC_BASE(_x) + 0x00000000) |
| |
| #define UMAC_INT_CR4_EN_MASK(_x) (UMAC_BASE(_x) + 0x00000004) |
| #define UMAC_INT_CR4_STS(_x) (UMAC_BASE(_x) + 0x00000008) |
| #define UMAC_INT_CR4_ERR_RES(_x) (UMAC_BASE(_x) + 0x0000000C) |
| #define UMAC_INT_CR4_ERR_MASK(_x) (UMAC_BASE(_x) + 0x00000010) |
| |
| |
| |
| #define UMAC_PBUF_CTRL(_x) (UMAC_BASE(_x) + 0x00000014) |
| |
| #define UMAC_CHIP_ID_VER(_x) (UMAC_BASE(_x) + 0x00000018) |
| |
| #define UMAC_TIMER_CNF(_x) (UMAC_BASE(_x) + 0x0000001C) |
| |
| #define UMAC_INT_N9_EN_MASK(_x) (UMAC_BASE(_x) + 0x00000020) |
| #define UMAC_INT_N9_STS(_x) (UMAC_BASE(_x) + 0x00000024) |
| #define UMAC_INT_N9_ERR_STS(_x) (UMAC_BASE(_x) + 0x00000028) |
| #define UMAC_INT_N9_ERR_MASK(_x) (UMAC_BASE(_x) + 0x0000002C) |
| #define UMAC_IGNORE_BUSY_EN_MASK(_x) (UMAC_BASE(_x) + 0x0000038C) |
| |
| #define UMAC_RELEASE_CTRL(_x) (UMAC_BASE(_x) + 0x00000030) |
| |
| #define UMAC_HIF_REPROT(_x) (UMAC_BASE(_x) + 0x00000034) |
| |
| |
| #define UMAC_C_GET_FID_0(_x) (UMAC_BASE(_x) + 0x00000040) |
| #define UMAC_C_GET_FID_1(_x) (UMAC_BASE(_x) + 0x00000044) |
| |
| #define UMAC_C_EN_QUEUE_0(_x) (UMAC_BASE(_x) + 0x00000060) |
| #define UMAC_C_EN_QUEUE_1(_x) (UMAC_BASE(_x) + 0x00000064) |
| #define UMAC_C_EN_QUEUE_2(_x) (UMAC_BASE(_x) + 0x00000068) |
| |
| |
| #define UMAC_C_DE_QUEUE_0(_x) (UMAC_BASE(_x) + 0x00000080) |
| #define UMAC_C_DE_QUEUE_1(_x) (UMAC_BASE(_x) + 0x00000084) |
| #define UMAC_C_DE_QUEUE_2(_x) (UMAC_BASE(_x) + 0x00000088) |
| #define UMAC_C_DE_QUEUE_3(_x) (UMAC_BASE(_x) + 0x0000008C) |
| |
| #define UMAC_ALLOCATE_0(_x) (UMAC_BASE(_x) + 0x000000A0) |
| #define UMAC_ALLOCATE_1(_x) (UMAC_BASE(_x) + 0x000000A4) |
| #define UMAC_ALLOCATE_2(_x) (UMAC_BASE(_x) + 0x000000A8) |
| |
| #define UMAC_QUEUE_EMPTY(_x) (UMAC_BASE(_x) + 0x000000B0) |
| |
| /* 0x820680B4 QUEUE_EMPTY_MASK Queue empty status mask register, 7615 E3 eco item only PSE with this setting, but ple */ |
| #define UMAC_QUEUE_EMPTY_MASK (UMAC_BASE(UMAC_PSE_CFG_POOL_INDEX) + 0x000000B4) |
| |
| #define UMAC_TO_CR4_INT(_x) (UMAC_BASE(_x) + 0x000000e0) |
| #define UMAC_TO_N9_INT(_x) (UMAC_BASE(_x) + 0x000000f0) |
| |
| |
| #define UMAC_FREEPG_CNT(_x) (UMAC_BASE(_x) + 0x00000100) |
| |
| #define UMAC_FREEPG_HEAD_TAIL(_x) (UMAC_BASE(_x) + 0x00000104) |
| |
| |
| #define UMAC_PG_HIF0_GROUP(_x) (UMAC_BASE(_x) + 0x00000110) |
| #define UMAC_HIF0_PG_INFO(_x) (UMAC_BASE(_x) + 0x00000114) |
| |
| #define UMAC_PG_HIF1_GROUP(_x) (UMAC_BASE(_x) + 0x00000118) |
| #define UMAC_HIF1_PG_INFO(_x) (UMAC_BASE(_x) + 0x0000011C) |
| |
| #define UMAC_PG_CPU_GROUP(_x) (UMAC_BASE(_x) + 0x00000150) |
| #define UMAC_CPU_PG_INFO(_x) (UMAC_BASE(_x) + 0x00000154) |
| |
| |
| #define UMAC_PG_LMAC0_GROUP(_x) (UMAC_BASE(_x) + 0x00000170) |
| #define UMAC_LMAC0_PG_INFO(_x) (UMAC_BASE(_x) + 0x00000174) |
| |
| #define UMAC_PG_LMAC1_GROUP(_x) (UMAC_BASE(_x) + 0x00000178) |
| #define UMAC_LMAC1_PG_INFO(_x) (UMAC_BASE(_x) + 0x0000017C) |
| |
| |
| #define UMAC_PG_LMAC2_GROUP(_x) (UMAC_BASE(_x) + 0x00000180) |
| #define UMAC_LMAC2_PG_INFO(_x) (UMAC_BASE(_x) + 0x00000184) |
| |
| #define UMAC_PG_PLE_GROUP(_x) (UMAC_BASE(_x) + 0x00000190) |
| #define UMAC_PLE_PG_INFO(_x) (UMAC_BASE(_x) + 0x00000194) |
| |
| |
| #define UMAC_RL_BUF_CTRL_0(_x) (UMAC_BASE(_x) + 0x000001A0) |
| #define UMAC_RL_BUF_CTRL_1(_x) (UMAC_BASE(_x) + 0x000001A4) |
| |
| #define UMAC_FL_QUE_CTRL_0(_x) (UMAC_BASE(_x) + 0x000001B0) |
| #define UMAC_FL_QUE_CTRL_1(_x) (UMAC_BASE(_x) + 0x000001B4) |
| #define UMAC_FL_QUE_CTRL_2(_x) (UMAC_BASE(_x) + 0x000001B8) |
| #define UMAC_FL_QUE_CTRL_3(_x) (UMAC_BASE(_x) + 0x000001BC) |
| |
| #define UMAC_HIF_ENQ_PKT_NUM(_x) (UMAC_BASE(_x) + 0x000001F0) |
| #define UMAC_CPU_ENQ_PKT_NUM(_x) (UMAC_BASE(_x) + 0x000001F4) |
| #define UMAC_RLS_MSDU_PKT_NUM(_x) (UMAC_BASE(_x) + 0x000001F8) |
| #define UMAC_HOST_REPORT_NUM(_x) (UMAC_BASE(_x) + 0x000001FC) |
| |
| #define UMAC_PL_QUE_CTRL_0(_x) (UMAC_BASE(_x) + 0x000001C0) |
| |
| #define UMAC_TP_HIF_EN(_x) (UMAC_BASE(_x) + 0x00000200) |
| |
| #define UMAC_TP_HIF_Q_CTRL0(_x) (UMAC_BASE(_x) + 0x00000204) |
| #define UMAC_TP_HIF_Q_CTRL1(_x) (UMAC_BASE(_x) + 0x00000208) |
| #define UMAC_TP_HIF_Q_CTRL2(_x) (UMAC_BASE(_x) + 0x0000020C) |
| |
| #define UMAC_TP_HIF_ALLOC0(_x) (UMAC_BASE(_x) + 0x00000210) |
| #define UMAC_TP_HIF_ALLOC1(_x) (UMAC_BASE(_x) + 0x00000214) |
| |
| #define UMAC_TP_HIF_OPER0(_x) (UMAC_BASE(_x) + 0x00000218) |
| #define UMAC_TP_HIF_OPER1(_x) (UMAC_BASE(_x) + 0x0000021C) |
| |
| |
| #define UMAC_TP_LMAC_EN(_x) (UMAC_BASE(_x) + 0x00000220) |
| |
| #define UMAC_TP_LMAC_Q_CTRL0(_x) (UMAC_BASE(_x) + 0x00000224) |
| #define UMAC_TP_LMAC_Q_CTRL1(_x) (UMAC_BASE(_x) + 0x00000228) |
| #define UMAC_TP_LMAC_Q_CTRL2(_x) (UMAC_BASE(_x) + 0x0000022C) |
| |
| #define UMAC_TP_LMAC_ALLOC0(_x) (UMAC_BASE(_x) + 0x00000230) |
| #define UMAC_TP_LMAC_ALLOC1(_x) (UMAC_BASE(_x) + 0x00000234) |
| |
| #define UMAC_TP_LMAC_OPER0(_x) (UMAC_BASE(_x) + 0x00000238) |
| #define UMAC_TP_LMAC_OPER1(_x) (UMAC_BASE(_x) + 0x0000023C) |
| |
| #define UMAC_STATE_IDLE_CTL(_x) (UMAC_BASE(_x) + 0x0000024C) |
| |
| #define UMAC_DIS_STA_MAP0(_x) (UMAC_BASE(_x) + 0x00000260) |
| #define UMAC_DIS_STA_MAP1(_x) (UMAC_BASE(_x) + 0x00000264) |
| #define UMAC_DIS_STA_MAP2(_x) (UMAC_BASE(_x) + 0x00000268) |
| #define UMAC_DIS_STA_MAP3(_x) (UMAC_BASE(_x) + 0x0000026c) |
| |
| #define UMAC_AC0_QUEUE_EMPTY0(_x) (UMAC_BASE(_x) + 0x00000300) |
| #define UMAC_AC0_QUEUE_EMPTY1(_x) (UMAC_BASE(_x) + 0x00000304) |
| #define UMAC_AC0_QUEUE_EMPTY2(_x) (UMAC_BASE(_x) + 0x00000308) |
| #define UMAC_AC0_QUEUE_EMPTY3(_x) (UMAC_BASE(_x) + 0x0000030C) |
| |
| #define UMAC_AC1_QUEUE_EMPTY0(_x) (UMAC_BASE(_x) + 0x00000310) |
| #define UMAC_AC1_QUEUE_EMPTY1(_x) (UMAC_BASE(_x) + 0x00000314) |
| #define UMAC_AC1_QUEUE_EMPTY2(_x) (UMAC_BASE(_x) + 0x00000318) |
| #define UMAC_AC1_QUEUE_EMPTY3(_x) (UMAC_BASE(_x) + 0x0000031C) |
| |
| #define UMAC_AC2_QUEUE_EMPTY0(_x) (UMAC_BASE(_x) + 0x00000320) |
| #define UMAC_AC2_QUEUE_EMPTY1(_x) (UMAC_BASE(_x) + 0x00000324) |
| #define UMAC_AC2_QUEUE_EMPTY2(_x) (UMAC_BASE(_x) + 0x00000328) |
| #define UMAC_AC2_QUEUE_EMPTY3(_x) (UMAC_BASE(_x) + 0x0000032C) |
| |
| #define UMAC_AC3_QUEUE_EMPTY0(_x) (UMAC_BASE(_x) + 0x00000330) |
| #define UMAC_AC3_QUEUE_EMPTY1(_x) (UMAC_BASE(_x) + 0x00000334) |
| #define UMAC_AC3_QUEUE_EMPTY2(_x) (UMAC_BASE(_x) + 0x00000338) |
| #define UMAC_AC3_QUEUE_EMPTY3(_x) (UMAC_BASE(_x) + 0x0000033C) |
| |
| #define UMAC_QUEUE_EMPTY_MASK (UMAC_BASE(UMAC_PSE_CFG_POOL_INDEX) + 0x000000B4) |
| |
| /* BSS PS INT */ |
| #define UMAC_N9_BSS_PS_INT_EN (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000000F4) |
| #define UMAC_N9_BSS_PS_INT_STS (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000000F8) |
| |
| /* CR for VoW and BW Ctrl */ |
| |
| #define UMAC_DRR_TABLE_CTRL0 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000388) |
| |
| #define UMAC_DRR_TABLE_WDATA0 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000340) |
| #define UMAC_DRR_TABLE_WDATA1 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000344) |
| #define UMAC_DRR_TABLE_WDATA2 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000348) |
| #define UMAC_DRR_TABLE_WDATA3 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x0000034C) |
| |
| |
| #define UMAC_DRR_TABLE_RDATA0 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000350) |
| #define UMAC_DRR_TABLE_RDATA1 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000354) |
| #define UMAC_DRR_TABLE_RDATA2 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000358) |
| #define UMAC_DRR_TABLE_RDATA3 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x0000035C) |
| |
| |
| #define UMAC_STATION_PAUSE_0 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000360) |
| #define UMAC_STATION_PAUSE_1 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000364) |
| #define UMAC_STATION_PAUSE_2 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000368) |
| #define UMAC_STATION_PAUSE_3 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x0000036C) |
| #define UMAC_VOW_ENABLE (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000370) |
| #define UMAC_AIR_TIME_DRR_SIZE (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000374) |
| #define UMAC_CHECK_TIME_TOKEN (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000378) |
| #define UMAC_CHECK_LENGTH_TOKEN (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x0000037C) |
| #define UMAC_WDRR0 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000380) |
| #define UMAC_WDRR1 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x00000384) |
| |
| #define UMAC_VOW_CTRL1 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x0000038C) |
| |
| #define UMAC_VOW_DBG_MUX (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000003A0) |
| #define UMAC_AIRTIME_DBG_INFO0 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000003A4) |
| #define UMAC_AIRTIME_DBG_INFO1 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000003A8) |
| |
| #define UMAC_BW_DBG_INFO (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000003AC) |
| |
| #define UMAC_BW_WDRR0 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000003B0) |
| #define UMAC_BW_WDRR1 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000003B4) |
| #define UMAC_BW_WDRR2 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000003B8) |
| #define UMAC_BW_WDRR3 (UMAC_BASE(UMAC_PLE_CFG_POOL_INDEX) + 0x000003BC) |
| /* UMAC Register */ |
| |
| |
| #if defined(_HIF_USB) |
| |
| #define WIFI_CFG_SW_SYNC0 (TOP_CFG_BASE + 0x1128) |
| #define WIFI_CFG_SYNC0_RDY_OFFSET (16) |
| |
| /* UDMA register */ |
| #define UDMA_BASE 0x50029000 |
| #define UDMA_TX_QSEL (UDMA_BASE + 0x8) |
| #define FW_DL_EN (1 << 3) |
| |
| #define UDMA_RESET (UDMA_BASE + 0x14) |
| |
| #define UDMA_WLCFG_1 (UDMA_BASE + 0xc) |
| #define UDMA_WLCFG_1_TX_TMOUT_LMT_MASK (0xfffff << 8) |
| #define UDMA_WLCFG_1_TX_TMOUT_LMT(p) (((p) & 0xfffff) << 8) |
| #define UDMA_WLCFG_1_RX_AGG_PKT_LMT_MASK (0xff << 0) |
| #define UDMA_WLCFG_1_RX_AGG_PKT_LMT(p) (((p) & 0xff) << 0) |
| |
| #define UDMA_WLCFG_0 (UDMA_BASE + 0x18) |
| #define UDMA_WLCFG_0_TX_BT_SIZE_MASK (0x07 << 27) |
| #define UDMA_WLCFG_0_TX_BT_SIZE(p) (((p) & 0x07) << 27) |
| #define UDMA_WLCFG_0_RX_BT_SIZE_MASK (0x07 << 24) |
| #define UDMA_WLCFG_0_RX_BT_SIZE(p) (((p) & 0x07) << 24) |
| #define UDMA_WLCFG_0_TX_EN_MASK (0x1 << 23) |
| #define UDMA_WLCFG_0_TX_EN(p) (((p) & 0x1) << 23) |
| #define UDMA_WLCFG_0_RX_EN_MASK (0x1 << 22) |
| #define UDMA_WLCFG_0_RX_EN(p) (((p) & 0x1) << 22) |
| #define UDMA_WLCFG_0_RX_AGG_EN_MASK (0x1 << 21) |
| #define UDMA_WLCFG_0_RX_AGG_EN(p) (((p) & 0x1) << 21) |
| #define UDMA_WLCFG_0_LPK_EN_MASK (0x1 << 20) |
| #define UDMA_WLCFG_0_LPK_EN(p) (((p) & 0x1) << 20) |
| #define UDMA_WLCFG_0_RX_MPSZ_PAD0_MASK (0x1 << 18) |
| #define UDMA_WLCFG_0_RX_MPSZ_PAD0(p) (((p) & 0x1) << 18) |
| #define UDMA_WLCFG_0_RX_AGG_LMT_MASK (0xff << 8) |
| #define UDMA_WLCFG_0_RX_AGG_LMT(p) (((p) & 0xff) << 8) |
| #define UDMA_WLCFG_0_RX_AGG_TO_MASK (0xff << 0) |
| #define UDMA_WLCFG_0_RX_AGG_TO(p) (((p) & 0xff) << 0) |
| |
| #define PP_R_RXCUTDISP0 (0x8206C054) |
| #define PP_R_RXCUTDISP0_CT_EN_MASK (0x1 << 0) |
| #define PP_R_RXCUTDISP0_CT_EN(p) (((p) & 0x1) << 0) |
| #define PP_R_RXCUTDISP0_CR4_EN_MASK (0x1 << 1) |
| #define PP_R_RXCUTDISP0_CR4_EN(p) (((p) & 0x1) << 1) |
| #define PP_R_RXCUTDISP0_START_OFFSET_MASK (0x3fff << 2) |
| #define PP_R_RXCUTDISP0_START_OFFSET(p) (((p) & 0x3fff) << 2) |
| #define PP_R_RXCUTDISP0_END_OFFSET_MASK (0x3fff << 18) |
| #define PP_R_RXCUTDISP0_END_OFFSET(p) (((p) & 0x3fff) << 18) |
| |
| |
| #elif defined(_HIF_PCIE) |
| #define RTC_TOP_BASE 0x0000 |
| |
| #define RTC_TOP_MISC2 (RTC_TOP_BASE + 0x1128) |
| |
| #define TOP_HIF_BASE 0x0000 |
| #define TOP_HW_VERSION (TOP_HIF_BASE + 0x1000) |
| #define TOP_HW_CONTROL (TOP_HIF_BASE + 0x1008) |
| |
| #define WIFI_CFG_SW_SYNC0 RTC_TOP_MISC2 |
| #define WIFI_CFG_SYNC0_RDY_OFFSET (16) |
| |
| #define PCIE_HIF_BASE 0x4000 |
| |
| /* HIF Sys Revision */ |
| #define HIF_SYS_REV (PCIE_HIF_BASE + 0x0000) |
| |
| /* HIF Low Power Control Host Register */ |
| #define CFG_PCIE_LPCR_HOST (PCIE_HIF_BASE + 0x01F0) |
| |
| /* HIF Low Power Control Fw Register */ |
| #define CFG_PCIE_LPCR_FW (PCIE_HIF_BASE + 0x01F4) |
| |
| /* Interrupt Status */ |
| #define WPDMA_INT_STA (PCIE_HIF_BASE + 0x0200) |
| |
| /* Interrupt Mask */ |
| #define WPDMA_INT_MSK (PCIE_HIF_BASE + 0x0204) |
| |
| /* Global Configuration */ |
| #define WPDMA_GLO_CFG (PCIE_HIF_BASE + 0x0208) |
| |
| /* Pointer Reset */ |
| #define WPDMA_RST_PTR (PCIE_HIF_BASE + 0x020C) |
| |
| /* Configuration for WPDMA Delayed Interrupt */ |
| #define WPDMA_DELAY_INT_CFG (PCIE_HIF_BASE + 0x0210) |
| |
| #define MT_WPDMA_PAUSE_RX_Q (PCIE_HIF_BASE + 0x0260) |
| |
| /* TX Ring0 Control 0 */ |
| #define WPDMA_TX_RING0_CTRL0 (PCIE_HIF_BASE + 0x0300) |
| |
| /* TX Ring0 Control 1 */ |
| #define WPDMA_TX_RING0_CTRL1 (PCIE_HIF_BASE + 0x0304) |
| |
| /* TX Ring0 Control 2 */ |
| #define WPDMA_TX_RING0_CTRL2 (PCIE_HIF_BASE + 0x0308) |
| |
| /* TX Ring0 Control 3 */ |
| #define WPDMA_TX_RING0_CTRL3 (PCIE_HIF_BASE + 0x030C) |
| |
| /* RX Ring0 Control 0 */ |
| #define WPDMA_RX_RING0_CTRL0 (PCIE_HIF_BASE + 0x0400) |
| |
| /* RX Ring0 Control 1 */ |
| #define WPDMA_RX_RING0_CTRL1 (PCIE_HIF_BASE + 0x0404) |
| |
| /* RX Ring0 Control 2 */ |
| #define WPDMA_RX_RING0_CTRL2 (PCIE_HIF_BASE + 0x0408) |
| |
| /* RX Ring0 Control 3 */ |
| #define WPDMA_RX_RING0_CTRL3 (PCIE_HIF_BASE + 0x040C) |
| |
| #define MT_WPDMA_GLO_CFG_1 (PCIE_HIF_BASE + 0x0500) |
| |
| #define MT_WPDMA_TX_PRE_CFG (PCIE_HIF_BASE + 0x0510) |
| |
| #define MT_WPDMA_RX_PRE_CFG (PCIE_HIF_BASE + 0x0520) |
| |
| #define MT_WPDMA_ABT_CFG (PCIE_HIF_BASE + 0x0530) |
| |
| #define MT_WPDMA_ABT_CFG1 (PCIE_HIF_BASE + 0x0534) |
| |
| /* WPDMA_INT_STA */ |
| typedef union _WPDMA_INT_STA_STRUCT { |
| struct { |
| UINT_32 rx_done_0:1; |
| UINT_32 rx_done_1:1; |
| UINT_32 err_det_int_0:1; |
| UINT_32 err_det_int_1:1; |
| UINT_32 tx_done_0:1; |
| UINT_32 tx_done_1:1; |
| UINT_32 tx_done_2:1; |
| UINT_32 tx_done_3:1; |
| UINT_32 tx_done_4:1; |
| UINT_32 tx_done_5:1; |
| UINT_32 tx_done_6:1; |
| UINT_32 tx_done_7:1; |
| UINT_32 tx_done_8:1; |
| UINT_32 tx_done_9:1; |
| UINT_32 tx_done_10:1; |
| UINT_32 tx_done_11:1; |
| UINT_32 tx_done_12:1; |
| UINT_32 tx_done_13:1; |
| UINT_32 rsv_18:1; |
| UINT_32 tx_done_15:1; |
| UINT_32 rx_coherent:1; |
| UINT_32 tx_coherent:1; |
| UINT_32 rx_dly_int:1; |
| UINT_32 tx_dly_int:1; |
| UINT_32 wf_mac_int_0:1; |
| UINT_32 wf_mac_int_1:1; |
| UINT_32 wf_mac_int_2:1; |
| UINT_32 wf_mac_int_3:1; |
| UINT_32 wf_mac_int_4:1; |
| UINT_32 wf_mac_int_5:1; |
| UINT_32 mcu_cmd_int:1; |
| UINT_32 fw_clr_own:1; |
| } field; |
| |
| UINT_32 word; |
| } WPDMA_INT_STA_STRUCT; |
| |
| /* WPDMA_INT_MSK */ |
| typedef union _WPDMA_INT_MASK { |
| struct { |
| UINT_32 rx_done_0:1; |
| UINT_32 rx_done_1:1; |
| UINT_32 err_det_int_0:1; |
| UINT_32 err_det_int_1:1; |
| UINT_32 tx_done_0:1; |
| UINT_32 tx_done_1:1; |
| UINT_32 tx_done_2:1; |
| UINT_32 tx_done_3:1; |
| UINT_32 tx_done_4:1; |
| UINT_32 tx_done_5:1; |
| UINT_32 tx_done_6:1; |
| UINT_32 tx_done_7:1; |
| UINT_32 tx_done_8:1; |
| UINT_32 tx_done_9:1; |
| UINT_32 tx_done_10:1; |
| UINT_32 tx_done_11:1; |
| UINT_32 tx_done_12:1; |
| UINT_32 tx_done_13:1; |
| UINT_32 rsv_18:1; |
| UINT_32 tx_done_15:1; |
| UINT_32 rx_coherent:1; |
| UINT_32 tx_coherent:1; |
| UINT_32 rx_dly_int:1; |
| UINT_32 tx_dly_int:1; |
| UINT_32 wf_mac_int_0:1; |
| UINT_32 wf_mac_int_1:1; |
| UINT_32 wf_mac_int_2:1; |
| UINT_32 wf_mac_int_3:1; |
| UINT_32 wf_mac_int_4:1; |
| UINT_32 wf_mac_int_5:1; |
| UINT_32 mcu_cmd_int:1; |
| UINT_32 fw_clr_own:1; |
| } field; |
| |
| UINT_32 word; |
| } WPMDA_INT_MASK; |
| |
| /* WPDMA_GLO_CFG */ |
| typedef union _WPDMA_GLO_CFG_STRUCT { |
| struct { |
| UINT_32 EnableTxDMA:1; |
| UINT_32 TxDMABusy:1; |
| UINT_32 EnableRxDMA:1; |
| UINT_32 RxDMABusy:1; |
| UINT_32 WPDMABurstSIZE:2; |
| UINT_32 EnTXWriteBackDDONE:1; |
| UINT_32 BigEndian:1; |
| UINT_32 Desc32BEn:1; |
| UINT_32 share_fifo_en:1; |
| UINT_32 multi_dma_en:2; |
| UINT_32 fifo_little_endian:1; |
| UINT_32 mi_depth:3; |
| UINT_32 err_det_th:8; |
| UINT_32 sw_rst:1; |
| UINT_32 force_tx_eof:1; |
| UINT_32 rsv_26:1; |
| UINT_32 omit_rx_info:1; |
| UINT_32 omit_tx_info:1; |
| UINT_32 byte_swap:1; |
| UINT_32 clk_gate_dis:1; |
| UINT_32 rx_2b_offset:1; |
| } field; |
| |
| struct { |
| UINT_32 EnableTxDMA:1; |
| UINT_32 TxDMABusy:1; |
| UINT_32 EnableRxDMA:1; |
| UINT_32 RxDMABusy:1; |
| UINT_32 WPDMABurstSIZE:2; |
| UINT_32 EnTXWriteBackDDONE:1; |
| UINT_32 BigEndian:1; |
| UINT_32 dis_bt_size_align:1; |
| UINT_32 tx_bt_size:1; |
| UINT_32 multi_dma_en:2; |
| UINT_32 fifo_little_endian:1; |
| UINT_32 mi_depth:3; |
| UINT_32 mi_depth_rd_3_5:3; |
| UINT_32 mi_depth_rd_8_6:3; |
| UINT_32 tx_bt_size_bit21:2; |
| UINT_32 sw_rst:1; |
| UINT_32 force_tx_eof:1; |
| UINT_32 first_token:1; |
| UINT_32 omit_rx_info:1; |
| UINT_32 omit_tx_info:1; |
| UINT_32 byte_swap:1; |
| UINT_32 reserve_30:1; |
| UINT_32 rx_2b_offset:1; |
| } field_1; |
| |
| UINT_32 word; |
| } WPDMA_GLO_CFG_STRUCT; |
| |
| /* WPDMA_RST_PTR */ |
| typedef union _WPDMA_RST_IDX_STRUCT { |
| struct { |
| UINT_32 RST_DTX_IDX0:1; |
| UINT_32 RST_DTX_IDX1:1; |
| UINT_32 rsv_2_15:14; |
| UINT_32 RST_DRX_IDX0:1; |
| UINT_32 RST_DRX_IDX1:1; |
| UINT_32 rsv_18_31:14; |
| } field; |
| |
| UINT_32 word; |
| } WPDMA_RST_IDX_STRUCT; |
| |
| /* WPDMA_DELAY_INT_CFG */ |
| typedef union _DELAY_INT_CFG_STRUCT { |
| struct { |
| UINT_32 RXMAX_PTIME:8; |
| UINT_32 RXMAX_PINT:7; |
| UINT_32 RXDLY_INT_EN:1; |
| UINT_32 TXMAX_PTIME:8; |
| UINT_32 TXMAX_PINT:7; |
| UINT_32 TXDLY_INT_EN:1; |
| } field; |
| |
| UINT_32 word; |
| } DELAY_INT_CFG_STRUCT; |
| |
| /* RTC_TOP_MISC2 */ |
| #define TOP_MISC2_CR4_INIT_DONE BIT(18) |
| #define TOP_MISC2_N9_INIT_DONE BIT(17) |
| #define TOP_MISC2_FW_READY BIT(16) |
| #define WLAN_READY_BITS BITS(16, 18) |
| |
| /* HIF_SYS_REV */ |
| #define PCIE_HIF_SYS_PROJ BITS(16, 31) |
| #define PCIE_HIF_SYS_REV BITS(0, 15) |
| |
| /* CFG_PCIE_LPCR_HOST */ |
| #define PCIE_LPCR_HOST_CLR_OWN BIT(1) |
| #define PCIE_LPCR_HOST_SET_OWN BIT(0) |
| |
| /* CFG_PCIE_LPCR_FW */ |
| #define PCIE_LPCR_FW_CLR_OWN BIT(0) |
| |
| /* WPDMA_INT_STA */ |
| #define WPDMA_FW_CLR_OWN_INT BIT(31) |
| #define WPDMA_TX_DONE_INT3 BIT(7) |
| #define WPDMA_TX_DONE_INT2 BIT(6) |
| #define WPDMA_TX_DONE_INT1 BIT(5) |
| #define WPDMA_TX_DONE_INT0 BIT(4) |
| #define WPDMA_RX_DONE_INT3 BIT(3) |
| #define WPDMA_RX_DONE_INT2 BIT(2) |
| #define WPDMA_RX_DONE_INT1 BIT(1) |
| #define WPDMA_RX_DONE_INT0 BIT(0) |
| |
| #else |
| #define WIFI_CFG_SW_SYNC0 0 |
| #define WIFI_CFG_SYNC0_RDY_OFFSET 0 |
| #endif |
| |
| /* 4 CHIP ID Register */ |
| #define MCR_WCIR 0x0000 |
| |
| /* 4 HIF Low Power Control Register */ |
| #define MCR_WHLPCR 0x0004 |
| |
| /* 4 Control Status Register */ |
| #define MCR_WSDIOCSR 0x0008 |
| |
| /* 4 HIF Control Register */ |
| #define MCR_WHCR 0x000C |
| |
| /* 4 HIF Interrupt Status Register */ |
| #define MCR_WHISR 0x0010 |
| |
| /* 4 HIF Interrupt Enable Register */ |
| #define MCR_WHIER 0x0014 |
| |
| /* 4 Abnormal Status Register */ |
| #define MCR_WASR 0x0020 |
| |
| /* 4 WLAN Software Interrupt Control Register */ |
| #define MCR_WSICR 0x0024 |
| |
| /* 4 WLAN TX Data Register 1 */ |
| #define MCR_WTDR1 0x0034 |
| |
| /* 4 WLAN RX Data Register 0 */ |
| #define MCR_WRDR0 0x0050 |
| |
| /* 4 WLAN RX Data Register 1 */ |
| #define MCR_WRDR1 0x0054 |
| |
| /* 4 Host to Device Send Mailbox 0 Register */ |
| #define MCR_H2DSM0R 0x0070 |
| |
| /* 4 Host to Device Send Mailbox 1 Register */ |
| #define MCR_H2DSM1R 0x0074 |
| |
| /* 4 Device to Host Receive Mailbox 0 Register */ |
| #define MCR_D2HRM0R 0x0078 |
| |
| /* 4 Device to Host Receive Mailbox 1 Register */ |
| #define MCR_D2HRM1R 0x007c |
| |
| /* 4 WLAN RX Packet Length Register */ |
| #define MCR_WRPLR 0x0090 |
| |
| /* 4 Test Mode Data Port */ |
| #define MCR_WTMDR 0x00b0 |
| |
| /* 4 Test Mode Control Register */ |
| #define MCR_WTMCR 0x00b4 |
| |
| /* 4 Test Mode Data Pattern Control Register #0 */ |
| #define MCR_WTMDPCR0 0x00b8 |
| |
| /* 4 Test Mode Data Pattern Control Register #1 */ |
| #define MCR_WTMDPCR1 0x00bc |
| |
| /* 4 WLAN Packet Length Report Control Register */ |
| #define MCR_WPLRCR 0x00d4 |
| |
| /* 4 WLAN Snapshot Register */ |
| #define MCR_WSR 0x00D8 |
| |
| /* 4 Clock Pad Macro IO Control Register */ |
| #define MCR_CLKIOCR 0x0100 |
| |
| /* 4 Command Pad Macro IO Control Register */ |
| #define MCR_CMDIOCR 0x0104 |
| |
| /* 4 Data 0 Pad Macro IO Control Register */ |
| #define MCR_DAT0IOCR 0x0108 |
| |
| /* 4 Data 1 Pad Macro IO Control Register */ |
| #define MCR_DAT1IOCR 0x010C |
| |
| /* 4 Data 2 Pad Macro IO Control Register */ |
| #define MCR_DAT2IOCR 0x0110 |
| |
| /* 4 Data 3 Pad Macro IO Control Register */ |
| #define MCR_DAT3IOCR 0x0114 |
| |
| /* 4 Clock Pad Macro Delay Chain Control Register */ |
| #define MCR_CLKDLYCR 0x0118 |
| |
| /* 4 Command Pad Macro Delay Chain Control Register */ |
| #define MCR_CMDDLYCR 0x011C |
| |
| /* 4 SDIO Output Data Delay Chain Control Register */ |
| #define MCR_ODATDLYCR 0x0120 |
| |
| /* 4 SDIO Input Data Delay Chain Control Register 1 */ |
| #define MCR_IDATDLYCR1 0x0124 |
| |
| /* 4 SDIO Input Data Delay Chain Control Register 2 */ |
| #define MCR_IDATDLYCR2 0x0128 |
| |
| /* 4 SDIO Input Data Latch Time Control Register */ |
| #define MCR_ILCHCR 0x012C |
| |
| /* 4 WLAN TXQ Count Register 0 */ |
| #define MCR_WTQCR0 0x0130 |
| |
| /* 4 WLAN TXQ Count Register 1 */ |
| #define MCR_WTQCR1 0x0134 |
| |
| /* 4 WLAN TXQ Count Register 2 */ |
| #define MCR_WTQCR2 0x0138 |
| |
| /* 4 WLAN TXQ Count Register 3 */ |
| #define MCR_WTQCR3 0x013C |
| |
| /* 4 WLAN TXQ Count Register 4 */ |
| #define MCR_WTQCR4 0x0140 |
| |
| /* 4 WLAN TXQ Count Register 5 */ |
| #define MCR_WTQCR5 0x0144 |
| |
| /* 4 WLAN TXQ Count Register 6 */ |
| #define MCR_WTQCR6 0x0148 |
| |
| /* 4 WLAN TXQ Count Register 7 */ |
| #define MCR_WTQCR7 0x014C |
| |
| /* WLAN/Common PC value Debug registre */ |
| #define MCR_SWPCDBGR 0x0154 |
| |
| /* #if CFG_SDIO_INTR_ENHANCE */ |
| typedef struct _ENHANCE_MODE_DATA_STRUCT_T { |
| UINT_32 u4WHISR; |
| union { |
| struct { |
| UINT_16 u2TQ0Cnt; |
| UINT_16 u2TQ1Cnt; |
| UINT_16 u2TQ2Cnt; |
| UINT_16 u2TQ3Cnt; |
| UINT_16 u2TQ4Cnt; |
| UINT_16 u2TQ5Cnt; |
| UINT_16 u2TQ6Cnt; |
| UINT_16 u2TQ7Cnt; |
| UINT_16 u2TQ8Cnt; |
| UINT_16 u2TQ9Cnt; |
| UINT_16 u2TQ10Cnt; |
| UINT_16 u2TQ11Cnt; |
| UINT_16 u2TQ12Cnt; |
| UINT_16 u2TQ13Cnt; |
| UINT_16 u2TQ14Cnt; |
| UINT_16 u2TQ15Cnt; |
| } u; |
| UINT_32 au4WTSR[8]; |
| } rTxInfo; |
| union { |
| struct { |
| UINT_16 u2NumValidRx0Len; |
| UINT_16 u2NumValidRx1Len; |
| UINT_16 au2Rx0Len[16]; |
| UINT_16 au2Rx1Len[16]; |
| } u; |
| UINT_32 au4RxStatusRaw[17]; |
| } rRxInfo; |
| UINT_32 u4RcvMailbox0; |
| UINT_32 u4RcvMailbox1; |
| } ENHANCE_MODE_DATA_STRUCT_T, *P_ENHANCE_MODE_DATA_STRUCT_T; |
| /* #endif *//* ENHANCE_MODE_DATA_STRUCT_T */ |
| |
| /* 2 Definition in each register */ |
| /* 3 WCIR 0x0000 */ |
| #define WCIR_WLAN_READY BIT(21) |
| #define WCIR_POR_INDICATOR BIT(20) |
| #define WCIR_REVISION_ID BITS(16, 19) |
| #define WCIR_CHIP_ID BITS(0, 15) |
| |
| #define MTK_CHIP_REV 0x00006632 |
| #define MTK_CHIP_MP_REVERSION_ID 0x0 |
| |
| /* 3 WHLPCR 0x0004 */ |
| #define WHLPCR_FW_OWN_REQ_CLR BIT(9) |
| #define WHLPCR_FW_OWN_REQ_SET BIT(8) |
| #define WHLPCR_IS_DRIVER_OWN BIT(8) |
| #define WHLPCR_INT_EN_CLR BIT(1) |
| #define WHLPCR_INT_EN_SET BIT(0) |
| |
| /* 3 WSDIOCSR 0x0008 */ |
| #define WSDIOCSR_DB_CMD7_RESELECT_DIS BIT(4) |
| #define WSDIOCSR_DB_WR_BUSY_EN BIT(3) |
| #define WSDIOCSR_DB_RD_BUSY_EN BIT(2) |
| #define WSDIOCSR_SDIO_INT_CTL BIT(1) |
| #define WSDIOCSR_SDIO_RE_INIT_EN BIT(0) |
| |
| /* 3 WHCR 0x000C */ |
| #define WHCR_RX_ENHANCE_MODE_EN BIT(16) |
| #define WHCR_MAX_HIF_RX_LEN_NUM BITS(8, 13) |
| #define WHCR_RPT_OWN_RX_PACKET_LEN BIT(3) |
| #define WHCR_RECV_MAILBOX_RD_CLR_EN BIT(2) |
| #define WHCR_W_INT_CLR_CTRL BIT(1) |
| #define WHCR_MCU_DBG_EN BIT(0) |
| #define WHCR_OFFSET_MAX_HIF_RX_LEN_NUM 8 |
| |
| /* 3 WHISR 0x0010 */ |
| #define WHISR_D2H_SW_INT BITS(8, 31) |
| #define WHISR_D2H_SW_ASSERT_INFO_INT BIT(31) |
| #define WHISR_D2H_WKUP_BY_RX_PACKET BIT(30) |
| #define WHISR_D2H_SW_RD_MAILBOX_INT BIT(29) |
| #define WHISR_FW_OWN_BACK_INT BIT(7) |
| #define WHISR_ABNORMAL_INT BIT(6) |
| #define WHISR_RX1_DONE_INT BIT(2) |
| #define WHISR_RX0_DONE_INT BIT(1) |
| #define WHISR_TX_DONE_INT BIT(0) |
| |
| /* 3 WHIER 0x0014 */ |
| #define WHIER_D2H_SW_INT BITS(8, 31) |
| #define WHIER_FW_OWN_BACK_INT_EN BIT(7) |
| #define WHIER_ABNORMAL_INT_EN BIT(6) |
| #define WHIER_RX1_DONE_INT_EN BIT(2) |
| #define WHIER_RX0_DONE_INT_EN BIT(1) |
| #define WHIER_TX_DONE_INT_EN BIT(0) |
| #define WHIER_DEFAULT (WHIER_RX0_DONE_INT_EN | \ |
| WHIER_RX1_DONE_INT_EN | \ |
| WHIER_TX_DONE_INT_EN | \ |
| WHIER_ABNORMAL_INT_EN | \ |
| WHIER_D2H_SW_INT \ |
| ) |
| |
| /* 3 WASR 0x0020 */ |
| #define WASR_FW_OWN_INVALID_ACCESS BIT(16) |
| #define WASR_RX1_UNDER_FLOW BIT(9) |
| #define WASR_RX0_UNDER_FLOW BIT(8) |
| #define WASR_TX1_OVER_FLOW BIT(1) |
| |
| /* 3 WSICR 0x0024 */ |
| #define WSICR_H2D_SW_INT_SET BITS(16, 31) |
| |
| /* 3 WRPLR 0x0090 */ |
| #define WRPLR_RX1_PACKET_LENGTH BITS(16, 31) |
| #define WRPLR_RX0_PACKET_LENGTH BITS(0, 15) |
| |
| /* 3 WTMCR 0x00b4 */ |
| #define WMTCR_TEST_MODE_FW_OWN BIT(24) |
| #define WMTCR_PRBS_INIT_VAL BITS(16, 23) |
| #define WMTCR_TEST_MODE_STATUS BIT(8) |
| #define WMTCR_TEST_MODE_SELECT BITS(0, 1) |
| |
| |
| |
| /* Support features */ |
| /* Options for VLAN-over-ethernet pkt to/from 802.11 LLC VLAN pkt. |
| * This should depend on the configurations of HW-header-translation. |
| */ |
| #define FEAT_BITS_LLC_VLAN_TX BIT(0) |
| #define FEAT_BITS_LLC_VLAN_RX BIT(1) |
| |
| /* Support features API */ |
| #define FEAT_SUP_LLC_VLAN_TX(__chip_info) ((__chip_info)->features & FEAT_BITS_LLC_VLAN_TX) |
| #define FEAT_SUP_LLC_VLAN_RX(__chip_info) ((__chip_info)->features & FEAT_BITS_LLC_VLAN_RX) |
| |
| /******************************************************************************* |
| * D A T A T Y P E S |
| ******************************************************************************** |
| */ |
| |
| typedef enum _ENUM_WIFI_FUNC_T { |
| WIFI_FUNC_INIT_DONE = BIT(0), |
| WIFI_FUNC_N9_DONE = BIT(1), |
| WIFI_FUNC_CR4_READY = BIT(2), |
| WIFI_FUNC_READY_BITS = BITS(0, 2), |
| WIFI_FUNC_DUMMY_REQ = BIT(3) |
| } ENUM_WIFI_FUNC_T; |
| |
| enum enum_mt66xx_chip { |
| MT66XX_CHIP_6632 = 0, |
| MT66XX_CHIP_7666, |
| MT66XX_CHIP_7668, |
| MT66XX_CHIP_NUM |
| }; |
| |
| struct mt66xx_chip_info { |
| const unsigned int chip_id; /* chip id */ |
| const unsigned int sw_sync0; /* sw_sync0 address */ |
| const unsigned int sw_ready_bit_offset; /* sw_sync0 ready bit offset */ |
| const unsigned int patch_addr; /* patch download start address */ |
| const unsigned char is_pcie_32dw_read; /* diff PDMA config */ |
| |
| const P_ECO_INFO_T eco_info; /* chip version table */ |
| UINT_8 eco_ver; /* chip version */ |
| |
| void (*constructFirmwarePrio)(P_GLUE_INFO_T prGlueInfo, PPUINT_8 apucNameTable, |
| PPUINT_8 apucName, PUINT_8 pucNameIdx, UINT_8 ucMaxNameIdx);/* load firmware bin priority */ |
| |
| const UINT_32 features; /* feature bits */ |
| }; |
| |
| struct mt66xx_hif_driver_data { |
| struct mt66xx_chip_info *chip_info; |
| }; |
| |
| /******************************************************************************* |
| * P U B L I C D A T A |
| ******************************************************************************** |
| */ |
| |
| /******************************************************************************* |
| * P R I V A T E D A T A |
| ******************************************************************************** |
| */ |
| |
| /******************************************************************************* |
| * M A C R O S |
| ******************************************************************************** |
| */ |
| |
| /******************************************************************************* |
| * F U N C T I O N D E C L A R A T I O N S |
| ******************************************************************************** |
| */ |
| |
| /******************************************************************************* |
| * F U N C T I O N S |
| ******************************************************************************** |
| */ |
| #endif |