blob: ef0e281c1daaf71190084a748a8bfd12dcac3c94 [file] [log] [blame]
Houston Hoffmanc3c6bc12016-05-06 17:08:39 -07001/*
2 * Copyright (c) 2015-2016 The Linux Foundation. All rights reserved.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all
7 * copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
17 */
18
19#if defined(IPQ4019_HEADERS_DEF)
20#define AR900B 1
21
22#define WLAN_HEADERS 1
23#include "common_drv.h"
24#include "IPQ4019/soc_addrs.h"
25#include "IPQ4019/extra/hw/apb_map.h"
26#ifdef WLAN_HEADERS
27#include "IPQ4019/extra/hw/wifi_top_reg_map.h"
28#include "IPQ4019/hw/rtc_soc_reg.h"
29#endif
30#include "IPQ4019/hw/ce_wrapper_reg_csr.h"
31
32#include "IPQ4019/extra/hw/soc_core_reg.h"
33#include "IPQ4019/extra/hw/ce_reg_csr.h"
34#include <IPQ4019/hw/interface/rx_location_info.h>
35#include <IPQ4019/hw/interface/rx_pkt_end.h>
36#include <IPQ4019/hw/interface/rx_phy_ppdu_end.h>
37#include <IPQ4019/hw/interface/rx_timing_offset.h>
38#include <IPQ4019/hw/interface/rx_location_info.h>
39#include <IPQ4019/hw/tlv/rx_ppdu_start.h>
40#include <IPQ4019/hw/tlv/rx_ppdu_end.h>
41#include <IPQ4019/hw/tlv/rx_mpdu_start.h>
42#include <IPQ4019/hw/tlv/rx_mpdu_end.h>
43#include <IPQ4019/hw/tlv/rx_msdu_start.h>
44#include <IPQ4019/hw/tlv/rx_msdu_end.h>
45#include <IPQ4019/hw/tlv/rx_attention.h>
46#include <IPQ4019/hw/tlv/rx_frag_info.h>
47#include <IPQ4019/hw/datastruct/msdu_link_ext.h>
48
49/* Base address is defined in pcie_local_reg.h. Macros which access the
50 * registers include the base address in their definition.
51 */
52
53#define FW_EVENT_PENDING_ADDRESS (WIFICMN_SCRATCH_3_ADDRESS)
54#define DRAM_BASE_ADDRESS TARG_DRAM_START
55
56/* Backwards compatibility -- TBDXXX */
57
58#define MISSING 0
59
60#define WLAN_SYSTEM_SLEEP_DISABLE_LSB WIFI_SYSTEM_SLEEP_DISABLE_LSB
61#define WLAN_SYSTEM_SLEEP_DISABLE_MASK WIFI_SYSTEM_SLEEP_DISABLE_MASK
62#define WLAN_RESET_CONTROL_COLD_RST_MASK WIFI_RESET_CONTROL_MAC_COLD_RST_MASK
63#define WLAN_RESET_CONTROL_WARM_RST_MASK WIFI_RESET_CONTROL_MAC_WARM_RST_MASK
64#define SOC_CLOCK_CONTROL_OFFSET SOC_CLOCK_CONTROL_ADDRESS
65#define SOC_RESET_CONTROL_OFFSET SOC_RESET_CONTROL_ADDRESS
66#define CPU_CLOCK_OFFSET SOC_CPU_CLOCK_ADDRESS
67#define SOC_LPO_CAL_OFFSET SOC_LPO_CAL_ADDRESS
68#define SOC_RESET_CONTROL_CE_RST_MASK WIFI_RESET_CONTROL_CE_RESET_MASK
69#define WLAN_SYSTEM_SLEEP_OFFSET WIFI_SYSTEM_SLEEP_ADDRESS
70#define WLAN_RESET_CONTROL_OFFSET WIFI_RESET_CONTROL_ADDRESS
71#define CLOCK_CONTROL_OFFSET SOC_CLOCK_CONTROL_OFFSET
72#define CLOCK_CONTROL_SI0_CLK_MASK SOC_CLOCK_CONTROL_SI0_CLK_MASK
73#define RESET_CONTROL_SI0_RST_MASK SOC_RESET_CONTROL_SI0_RST_MASK
74#define GPIO_BASE_ADDRESS WLAN_GPIO_BASE_ADDRESS
75#define GPIO_PIN0_OFFSET MISSING
76#define GPIO_PIN1_OFFSET MISSING
77#define GPIO_PIN0_CONFIG_MASK MISSING
78#define GPIO_PIN1_CONFIG_MASK MISSING
79#define SCRATCH_BASE_ADDRESS SOC_CORE_BASE_ADDRESS
80#define LOCAL_SCRATCH_OFFSET 0x18
81#define GPIO_PIN10_OFFSET WLAN_GPIO_PIN10_ADDRESS
82#define GPIO_PIN11_OFFSET WLAN_GPIO_PIN11_ADDRESS
83#define GPIO_PIN12_OFFSET WLAN_GPIO_PIN12_ADDRESS
84#define GPIO_PIN13_OFFSET WLAN_GPIO_PIN13_ADDRESS
85/*TBD:dakota Check if these can be removed for dakota */
86#define CPU_CLOCK_STANDARD_LSB SOC_CPU_CLOCK_STANDARD_LSB
87#define CPU_CLOCK_STANDARD_MASK SOC_CPU_CLOCK_STANDARD_MASK
88#define LPO_CAL_ENABLE_LSB SOC_LPO_CAL_ENABLE_LSB
89#define LPO_CAL_ENABLE_MASK SOC_LPO_CAL_ENABLE_MASK
90#define ANALOG_INTF_BASE_ADDRESS WLAN_ANALOG_INTF_BASE_ADDRESS
91#define MBOX_BASE_ADDRESS MISSING
92#define INT_STATUS_ENABLE_ERROR_LSB MISSING
93#define INT_STATUS_ENABLE_ERROR_MASK MISSING
94#define INT_STATUS_ENABLE_CPU_LSB MISSING
95#define INT_STATUS_ENABLE_CPU_MASK MISSING
96#define INT_STATUS_ENABLE_COUNTER_LSB MISSING
97#define INT_STATUS_ENABLE_COUNTER_MASK MISSING
98#define INT_STATUS_ENABLE_MBOX_DATA_LSB MISSING
99#define INT_STATUS_ENABLE_MBOX_DATA_MASK MISSING
100#define ERROR_STATUS_ENABLE_RX_UNDERFLOW_LSB MISSING
101#define ERROR_STATUS_ENABLE_RX_UNDERFLOW_MASK MISSING
102#define ERROR_STATUS_ENABLE_TX_OVERFLOW_LSB MISSING
103#define ERROR_STATUS_ENABLE_TX_OVERFLOW_MASK MISSING
104#define COUNTER_INT_STATUS_ENABLE_BIT_LSB MISSING
105#define COUNTER_INT_STATUS_ENABLE_BIT_MASK MISSING
106#define INT_STATUS_ENABLE_ADDRESS MISSING
107#define CPU_INT_STATUS_ENABLE_BIT_LSB MISSING
108#define CPU_INT_STATUS_ENABLE_BIT_MASK MISSING
109#define HOST_INT_STATUS_ADDRESS MISSING
110#define CPU_INT_STATUS_ADDRESS MISSING
111#define ERROR_INT_STATUS_ADDRESS MISSING
112#define ERROR_INT_STATUS_WAKEUP_MASK MISSING
113#define ERROR_INT_STATUS_WAKEUP_LSB MISSING
114#define ERROR_INT_STATUS_RX_UNDERFLOW_MASK MISSING
115#define ERROR_INT_STATUS_RX_UNDERFLOW_LSB MISSING
116#define ERROR_INT_STATUS_TX_OVERFLOW_MASK MISSING
117#define ERROR_INT_STATUS_TX_OVERFLOW_LSB MISSING
118#define COUNT_DEC_ADDRESS MISSING
119#define HOST_INT_STATUS_CPU_MASK MISSING
120#define HOST_INT_STATUS_CPU_LSB MISSING
121#define HOST_INT_STATUS_ERROR_MASK MISSING
122#define HOST_INT_STATUS_ERROR_LSB MISSING
123#define HOST_INT_STATUS_COUNTER_MASK MISSING
124#define HOST_INT_STATUS_COUNTER_LSB MISSING
125#define RX_LOOKAHEAD_VALID_ADDRESS MISSING
126#define WINDOW_DATA_ADDRESS MISSING
127#define WINDOW_READ_ADDR_ADDRESS MISSING
128#define WINDOW_WRITE_ADDR_ADDRESS MISSING
129/* MAC Descriptor */
130#define RX_PPDU_END_ANTENNA_OFFSET_DWORD (RX_PPDU_END_25_RX_ANTENNA_OFFSET >> 2)
131/* GPIO Register */
132#define GPIO_ENABLE_W1TS_LOW_ADDRESS MISSING
133#define GPIO_PIN0_CONFIG_LSB MISSING
134#define GPIO_PIN0_PAD_PULL_LSB MISSING
135#define GPIO_PIN0_PAD_PULL_MASK MISSING
136/* SI reg */
137#define SI_CONFIG_ERR_INT_MASK MISSING
138#define SI_CONFIG_ERR_INT_LSB MISSING
139/* CE descriptor */
140#define CE_SRC_DESC_SIZE_DWORD 2
141#define CE_DEST_DESC_SIZE_DWORD 2
142#define CE_SRC_DESC_SRC_PTR_OFFSET_DWORD 0
143#define CE_SRC_DESC_INFO_OFFSET_DWORD 1
144#define CE_DEST_DESC_DEST_PTR_OFFSET_DWORD 0
145#define CE_DEST_DESC_INFO_OFFSET_DWORD 1
146#if _BYTE_ORDER == _BIG_ENDIAN
147#define CE_SRC_DESC_INFO_NBYTES_MASK 0xFFFF0000
148#define CE_SRC_DESC_INFO_NBYTES_SHIFT 16
149#define CE_SRC_DESC_INFO_GATHER_MASK 0x00008000
150#define CE_SRC_DESC_INFO_GATHER_SHIFT 15
151#define CE_SRC_DESC_INFO_BYTE_SWAP_MASK 0x00004000
152#define CE_SRC_DESC_INFO_BYTE_SWAP_SHIFT 14
153#define CE_SRC_DESC_INFO_HOST_INT_DISABLE_MASK 0x00002000
154#define CE_SRC_DESC_INFO_HOST_INT_DISABLE_SHIFT 13
155#define CE_SRC_DESC_INFO_TARGET_INT_DISABLE_MASK 0x00001000
156#define CE_SRC_DESC_INFO_TARGET_INT_DISABLE_SHIFT 12
157#define CE_SRC_DESC_INFO_META_DATA_MASK 0x00000FFF
158#define CE_SRC_DESC_INFO_META_DATA_SHIFT 0
159#else
160#define CE_SRC_DESC_INFO_NBYTES_MASK 0x0000FFFF
161#define CE_SRC_DESC_INFO_NBYTES_SHIFT 0
162#define CE_SRC_DESC_INFO_GATHER_MASK 0x00010000
163#define CE_SRC_DESC_INFO_GATHER_SHIFT 16
164#define CE_SRC_DESC_INFO_BYTE_SWAP_MASK 0x00020000
165#define CE_SRC_DESC_INFO_BYTE_SWAP_SHIFT 17
166#define CE_SRC_DESC_INFO_HOST_INT_DISABLE_MASK 0x00040000
167#define CE_SRC_DESC_INFO_HOST_INT_DISABLE_SHIFT 18
168#define CE_SRC_DESC_INFO_TARGET_INT_DISABLE_MASK 0x00080000
169#define CE_SRC_DESC_INFO_TARGET_INT_DISABLE_SHIFT 19
170#define CE_SRC_DESC_INFO_META_DATA_MASK 0xFFF00000
171#define CE_SRC_DESC_INFO_META_DATA_SHIFT 20
172#endif
173#if _BYTE_ORDER == _BIG_ENDIAN
174#define CE_DEST_DESC_INFO_NBYTES_MASK 0xFFFF0000
175#define CE_DEST_DESC_INFO_NBYTES_SHIFT 16
176#define CE_DEST_DESC_INFO_GATHER_MASK 0x00008000
177#define CE_DEST_DESC_INFO_GATHER_SHIFT 15
178#define CE_DEST_DESC_INFO_BYTE_SWAP_MASK 0x00004000
179#define CE_DEST_DESC_INFO_BYTE_SWAP_SHIFT 14
180#define CE_DEST_DESC_INFO_HOST_INT_DISABLE_MASK 0x00002000
181#define CE_DEST_DESC_INFO_HOST_INT_DISABLE_SHIFT 13
182#define CE_DEST_DESC_INFO_TARGET_INT_DISABLE_MASK 0x00001000
183#define CE_DEST_DESC_INFO_TARGET_INT_DISABLE_SHIFT 12
184#define CE_DEST_DESC_INFO_META_DATA_MASK 0x00000FFF
185#define CE_DEST_DESC_INFO_META_DATA_SHIFT 0
186#else
187#define CE_DEST_DESC_INFO_NBYTES_MASK 0x0000FFFF
188#define CE_DEST_DESC_INFO_NBYTES_SHIFT 0
189#define CE_DEST_DESC_INFO_GATHER_MASK 0x00010000
190#define CE_DEST_DESC_INFO_GATHER_SHIFT 16
191#define CE_DEST_DESC_INFO_BYTE_SWAP_MASK 0x00020000
192#define CE_DEST_DESC_INFO_BYTE_SWAP_SHIFT 17
193#define CE_DEST_DESC_INFO_HOST_INT_DISABLE_MASK 0x00040000
194#define CE_DEST_DESC_INFO_HOST_INT_DISABLE_SHIFT 18
195#define CE_DEST_DESC_INFO_TARGET_INT_DISABLE_MASK 0x00080000
196#define CE_DEST_DESC_INFO_TARGET_INT_DISABLE_SHIFT 19
197#define CE_DEST_DESC_INFO_META_DATA_MASK 0xFFF00000
198#define CE_DEST_DESC_INFO_META_DATA_SHIFT 20
199#endif
200
201#define MY_TARGET_DEF IPQ4019_TARGETdef
202#define MY_HOST_DEF IPQ4019_HOSTdef
203#define MY_CEREG_DEF IPQ4019_CE_TARGETdef
204#define MY_TARGET_BOARD_DATA_SZ IPQ4019_BOARD_DATA_SZ
205#define MY_TARGET_BOARD_EXT_DATA_SZ IPQ4019_BOARD_EXT_DATA_SZ
206#include "targetdef.h"
207#include "hostdef.h"
208#else
209#include "common_drv.h"
210#include "targetdef.h"
211#include "hostdef.h"
212struct targetdef_s *IPQ4019_TARGETdef;
213struct hostdef_s *IPQ4019_HOSTdef;
214#endif /* IPQ4019_HEADERS_DEF */