1bdcd8170SKalle Valo /*
2bdcd8170SKalle Valo  * Copyright (c) 2004-2010 Atheros Communications Inc.
3bdcd8170SKalle Valo  *
4bdcd8170SKalle Valo  * Permission to use, copy, modify, and/or distribute this software for any
5bdcd8170SKalle Valo  * purpose with or without fee is hereby granted, provided that the above
6bdcd8170SKalle Valo  * copyright notice and this permission notice appear in all copies.
7bdcd8170SKalle Valo  *
8bdcd8170SKalle Valo  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9bdcd8170SKalle Valo  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10bdcd8170SKalle Valo  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11bdcd8170SKalle Valo  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12bdcd8170SKalle Valo  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13bdcd8170SKalle Valo  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14bdcd8170SKalle Valo  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15bdcd8170SKalle Valo  */
16bdcd8170SKalle Valo 
17bdcd8170SKalle Valo #ifndef TARGET_H
18bdcd8170SKalle Valo #define TARGET_H
19bdcd8170SKalle Valo 
20bdcd8170SKalle Valo #define AR6003_BOARD_DATA_SZ		1024
21bdcd8170SKalle Valo #define AR6003_BOARD_EXT_DATA_SZ	768
22bdcd8170SKalle Valo 
2331024d99SKevin Fang #define AR6004_BOARD_DATA_SZ     7168
2431024d99SKevin Fang #define AR6004_BOARD_EXT_DATA_SZ 0
2531024d99SKevin Fang 
26bdcd8170SKalle Valo #define RESET_CONTROL_ADDRESS		0x00000000
27bdcd8170SKalle Valo #define RESET_CONTROL_COLD_RST		0x00000100
28bdcd8170SKalle Valo #define RESET_CONTROL_MBOX_RST		0x00000004
29bdcd8170SKalle Valo 
30bdcd8170SKalle Valo #define CPU_CLOCK_STANDARD_S		0
31bdcd8170SKalle Valo #define CPU_CLOCK_STANDARD		0x00000003
32bdcd8170SKalle Valo #define CPU_CLOCK_ADDRESS		0x00000020
33bdcd8170SKalle Valo 
34bdcd8170SKalle Valo #define CLOCK_CONTROL_ADDRESS		0x00000028
35bdcd8170SKalle Valo #define CLOCK_CONTROL_LF_CLK32_S	2
36bdcd8170SKalle Valo #define CLOCK_CONTROL_LF_CLK32		0x00000004
37bdcd8170SKalle Valo 
38bdcd8170SKalle Valo #define SYSTEM_SLEEP_ADDRESS		0x000000c4
39bdcd8170SKalle Valo #define SYSTEM_SLEEP_DISABLE_S		0
40bdcd8170SKalle Valo #define SYSTEM_SLEEP_DISABLE		0x00000001
41bdcd8170SKalle Valo 
42bdcd8170SKalle Valo #define LPO_CAL_ADDRESS			0x000000e0
43bdcd8170SKalle Valo #define LPO_CAL_ENABLE_S		20
44bdcd8170SKalle Valo #define LPO_CAL_ENABLE			0x00100000
45bdcd8170SKalle Valo 
46bdcd8170SKalle Valo #define GPIO_PIN10_ADDRESS		0x00000050
47bdcd8170SKalle Valo #define GPIO_PIN11_ADDRESS		0x00000054
48bdcd8170SKalle Valo #define GPIO_PIN12_ADDRESS		0x00000058
49bdcd8170SKalle Valo #define GPIO_PIN13_ADDRESS		0x0000005c
50bdcd8170SKalle Valo 
51bdcd8170SKalle Valo #define HOST_INT_STATUS_ADDRESS		0x00000400
52bdcd8170SKalle Valo #define HOST_INT_STATUS_ERROR_S		7
53bdcd8170SKalle Valo #define HOST_INT_STATUS_ERROR		0x00000080
54bdcd8170SKalle Valo 
55bdcd8170SKalle Valo #define HOST_INT_STATUS_CPU_S		6
56bdcd8170SKalle Valo #define HOST_INT_STATUS_CPU		0x00000040
57bdcd8170SKalle Valo 
58bdcd8170SKalle Valo #define HOST_INT_STATUS_COUNTER_S	4
59bdcd8170SKalle Valo #define HOST_INT_STATUS_COUNTER		0x00000010
60bdcd8170SKalle Valo 
61bdcd8170SKalle Valo #define CPU_INT_STATUS_ADDRESS		0x00000401
62bdcd8170SKalle Valo 
63bdcd8170SKalle Valo #define ERROR_INT_STATUS_ADDRESS	0x00000402
64bdcd8170SKalle Valo #define ERROR_INT_STATUS_WAKEUP_S	2
65bdcd8170SKalle Valo #define ERROR_INT_STATUS_WAKEUP		0x00000004
66bdcd8170SKalle Valo 
67bdcd8170SKalle Valo #define ERROR_INT_STATUS_RX_UNDERFLOW_S	1
68bdcd8170SKalle Valo #define ERROR_INT_STATUS_RX_UNDERFLOW	0x00000002
69bdcd8170SKalle Valo 
70bdcd8170SKalle Valo #define ERROR_INT_STATUS_TX_OVERFLOW_S	0
71bdcd8170SKalle Valo #define ERROR_INT_STATUS_TX_OVERFLOW	0x00000001
72bdcd8170SKalle Valo 
73bdcd8170SKalle Valo #define COUNTER_INT_STATUS_ADDRESS	0x00000403
74bdcd8170SKalle Valo #define COUNTER_INT_STATUS_COUNTER_S	0
75bdcd8170SKalle Valo #define COUNTER_INT_STATUS_COUNTER	0x000000ff
76bdcd8170SKalle Valo 
77bdcd8170SKalle Valo #define RX_LOOKAHEAD_VALID_ADDRESS	0x00000405
78bdcd8170SKalle Valo 
79bdcd8170SKalle Valo #define INT_STATUS_ENABLE_ADDRESS	0x00000418
80bdcd8170SKalle Valo #define INT_STATUS_ENABLE_ERROR_S	7
81bdcd8170SKalle Valo #define INT_STATUS_ENABLE_ERROR		0x00000080
82bdcd8170SKalle Valo 
83bdcd8170SKalle Valo #define INT_STATUS_ENABLE_CPU_S		6
84bdcd8170SKalle Valo #define INT_STATUS_ENABLE_CPU		0x00000040
85bdcd8170SKalle Valo 
86bdcd8170SKalle Valo #define INT_STATUS_ENABLE_INT_S		5
87bdcd8170SKalle Valo #define INT_STATUS_ENABLE_INT		0x00000020
88bdcd8170SKalle Valo #define INT_STATUS_ENABLE_COUNTER_S	4
89bdcd8170SKalle Valo #define INT_STATUS_ENABLE_COUNTER	0x00000010
90bdcd8170SKalle Valo 
91bdcd8170SKalle Valo #define INT_STATUS_ENABLE_MBOX_DATA_S	0
92bdcd8170SKalle Valo #define INT_STATUS_ENABLE_MBOX_DATA	0x0000000f
93bdcd8170SKalle Valo 
94bdcd8170SKalle Valo #define CPU_INT_STATUS_ENABLE_ADDRESS	0x00000419
95bdcd8170SKalle Valo #define CPU_INT_STATUS_ENABLE_BIT_S	0
96bdcd8170SKalle Valo #define CPU_INT_STATUS_ENABLE_BIT	0x000000ff
97bdcd8170SKalle Valo 
98bdcd8170SKalle Valo #define ERROR_STATUS_ENABLE_ADDRESS		0x0000041a
99bdcd8170SKalle Valo #define ERROR_STATUS_ENABLE_RX_UNDERFLOW_S	1
100bdcd8170SKalle Valo #define ERROR_STATUS_ENABLE_RX_UNDERFLOW	0x00000002
101bdcd8170SKalle Valo 
102bdcd8170SKalle Valo #define ERROR_STATUS_ENABLE_TX_OVERFLOW_S	0
103bdcd8170SKalle Valo #define ERROR_STATUS_ENABLE_TX_OVERFLOW		0x00000001
104bdcd8170SKalle Valo 
105bdcd8170SKalle Valo #define COUNTER_INT_STATUS_ENABLE_ADDRESS	0x0000041b
106bdcd8170SKalle Valo #define COUNTER_INT_STATUS_ENABLE_BIT_S		0
107bdcd8170SKalle Valo #define COUNTER_INT_STATUS_ENABLE_BIT		0x000000ff
108bdcd8170SKalle Valo 
109bdcd8170SKalle Valo #define COUNT_ADDRESS			0x00000420
110bdcd8170SKalle Valo 
111bdcd8170SKalle Valo #define COUNT_DEC_ADDRESS		0x00000440
112bdcd8170SKalle Valo 
113bdcd8170SKalle Valo #define WINDOW_DATA_ADDRESS		0x00000474
114bdcd8170SKalle Valo #define WINDOW_WRITE_ADDR_ADDRESS	0x00000478
115bdcd8170SKalle Valo #define WINDOW_READ_ADDR_ADDRESS	0x0000047c
116bdcd8170SKalle Valo #define CPU_DBG_SEL_ADDRESS		0x00000483
117bdcd8170SKalle Valo #define CPU_DBG_ADDRESS			0x00000484
118bdcd8170SKalle Valo 
119bdcd8170SKalle Valo #define LOCAL_SCRATCH_ADDRESS		0x000000c0
120bdcd8170SKalle Valo #define ATH6KL_OPTION_SLEEP_DISABLE	0x08
121bdcd8170SKalle Valo 
122bdcd8170SKalle Valo #define RTC_BASE_ADDRESS		0x00004000
123bdcd8170SKalle Valo #define GPIO_BASE_ADDRESS		0x00014000
124bdcd8170SKalle Valo #define MBOX_BASE_ADDRESS		0x00018000
125bdcd8170SKalle Valo #define ANALOG_INTF_BASE_ADDRESS	0x0001c000
126bdcd8170SKalle Valo 
127bdcd8170SKalle Valo /* real name of the register is unknown */
128bdcd8170SKalle Valo #define ATH6KL_ANALOG_PLL_REGISTER	(ANALOG_INTF_BASE_ADDRESS + 0x284)
129bdcd8170SKalle Valo 
130bdcd8170SKalle Valo #define SM(f, v)	(((v) << f##_S) & f)
131bdcd8170SKalle Valo #define MS(f, v)	(((v) & f) >> f##_S)
132bdcd8170SKalle Valo 
133bdcd8170SKalle Valo /*
134bdcd8170SKalle Valo  * xxx_HOST_INTEREST_ADDRESS is the address in Target RAM of the
135bdcd8170SKalle Valo  * host_interest structure.
136bdcd8170SKalle Valo  *
137bdcd8170SKalle Valo  * Host Interest is shared between Host and Target in order to coordinate
138bdcd8170SKalle Valo  * between the two, and is intended to remain constant (with additions only
139bdcd8170SKalle Valo  * at the end).
140bdcd8170SKalle Valo  */
14131024d99SKevin Fang #define ATH6KL_AR6003_HI_START_ADDR           0x00540600
14231024d99SKevin Fang #define ATH6KL_AR6004_HI_START_ADDR           0x00400800
143bdcd8170SKalle Valo 
144bdcd8170SKalle Valo /*
145bdcd8170SKalle Valo  * These are items that the Host may need to access
146bdcd8170SKalle Valo  * via BMI or via the Diagnostic Window. The position
147bdcd8170SKalle Valo  * of items in this structure must remain constant.
148bdcd8170SKalle Valo  * across firmware revisions!
149bdcd8170SKalle Valo  *
150bdcd8170SKalle Valo  * Types for each item must be fixed size across target and host platforms.
151bdcd8170SKalle Valo  * The structure is used only to calculate offset for each register with
152bdcd8170SKalle Valo  * HI_ITEM() macro, no values are stored to it.
153bdcd8170SKalle Valo  *
154bdcd8170SKalle Valo  * More items may be added at the end.
155bdcd8170SKalle Valo  */
156bdcd8170SKalle Valo struct host_interest {
157bdcd8170SKalle Valo 	/*
158bdcd8170SKalle Valo 	 * Pointer to application-defined area, if any.
159bdcd8170SKalle Valo 	 * Set by Target application during startup.
160bdcd8170SKalle Valo 	 */
161bdcd8170SKalle Valo 	u32 hi_app_host_interest;                      /* 0x00 */
162bdcd8170SKalle Valo 
163bdcd8170SKalle Valo 	/* Pointer to register dump area, valid after Target crash. */
164bdcd8170SKalle Valo 	u32 hi_failure_state;                          /* 0x04 */
165bdcd8170SKalle Valo 
166bdcd8170SKalle Valo 	/* Pointer to debug logging header */
167bdcd8170SKalle Valo 	u32 hi_dbglog_hdr;                             /* 0x08 */
168bdcd8170SKalle Valo 
169bdcd8170SKalle Valo 	u32 hi_unused1;                       /* 0x0c */
170bdcd8170SKalle Valo 
171bdcd8170SKalle Valo 	/*
172bdcd8170SKalle Valo 	 * General-purpose flag bits, similar to ATH6KL_OPTION_* flags.
173bdcd8170SKalle Valo 	 * Can be used by application rather than by OS.
174bdcd8170SKalle Valo 	 */
175bdcd8170SKalle Valo 	u32 hi_option_flag;                            /* 0x10 */
176bdcd8170SKalle Valo 
177bdcd8170SKalle Valo 	/*
178bdcd8170SKalle Valo 	 * Boolean that determines whether or not to
179bdcd8170SKalle Valo 	 * display messages on the serial port.
180bdcd8170SKalle Valo 	 */
181bdcd8170SKalle Valo 	u32 hi_serial_enable;                          /* 0x14 */
182bdcd8170SKalle Valo 
183bdcd8170SKalle Valo 	/* Start address of DataSet index, if any */
184bdcd8170SKalle Valo 	u32 hi_dset_list_head;                         /* 0x18 */
185bdcd8170SKalle Valo 
186bdcd8170SKalle Valo 	/* Override Target application start address */
187bdcd8170SKalle Valo 	u32 hi_app_start;                              /* 0x1c */
188bdcd8170SKalle Valo 
189bdcd8170SKalle Valo 	/* Clock and voltage tuning */
190bdcd8170SKalle Valo 	u32 hi_skip_clock_init;                        /* 0x20 */
191bdcd8170SKalle Valo 	u32 hi_core_clock_setting;                     /* 0x24 */
192bdcd8170SKalle Valo 	u32 hi_cpu_clock_setting;                      /* 0x28 */
193bdcd8170SKalle Valo 	u32 hi_system_sleep_setting;                   /* 0x2c */
194bdcd8170SKalle Valo 	u32 hi_xtal_control_setting;                   /* 0x30 */
195bdcd8170SKalle Valo 	u32 hi_pll_ctrl_setting_24ghz;                 /* 0x34 */
196bdcd8170SKalle Valo 	u32 hi_pll_ctrl_setting_5ghz;                  /* 0x38 */
197bdcd8170SKalle Valo 	u32 hi_ref_voltage_trim_setting;               /* 0x3c */
198bdcd8170SKalle Valo 	u32 hi_clock_info;                             /* 0x40 */
199bdcd8170SKalle Valo 
200bdcd8170SKalle Valo 	/*
201bdcd8170SKalle Valo 	 * Flash configuration overrides, used only
202bdcd8170SKalle Valo 	 * when firmware is not executing from flash.
203bdcd8170SKalle Valo 	 * (When using flash, modify the global variables
204bdcd8170SKalle Valo 	 * with equivalent names.)
205bdcd8170SKalle Valo 	 */
206bdcd8170SKalle Valo 	u32 hi_bank0_addr_value;                       /* 0x44 */
207bdcd8170SKalle Valo 	u32 hi_bank0_read_value;                       /* 0x48 */
208bdcd8170SKalle Valo 	u32 hi_bank0_write_value;                      /* 0x4c */
209bdcd8170SKalle Valo 	u32 hi_bank0_config_value;                     /* 0x50 */
210bdcd8170SKalle Valo 
211bdcd8170SKalle Valo 	/* Pointer to Board Data  */
212bdcd8170SKalle Valo 	u32 hi_board_data;                             /* 0x54 */
213bdcd8170SKalle Valo 	u32 hi_board_data_initialized;                 /* 0x58 */
214bdcd8170SKalle Valo 
215bdcd8170SKalle Valo 	u32 hi_dset_ram_index_tbl;                     /* 0x5c */
216bdcd8170SKalle Valo 
217bdcd8170SKalle Valo 	u32 hi_desired_baud_rate;                      /* 0x60 */
218bdcd8170SKalle Valo 	u32 hi_dbglog_config;                          /* 0x64 */
219bdcd8170SKalle Valo 	u32 hi_end_ram_reserve_sz;                     /* 0x68 */
220bdcd8170SKalle Valo 	u32 hi_mbox_io_block_sz;                       /* 0x6c */
221bdcd8170SKalle Valo 
222bdcd8170SKalle Valo 	u32 hi_num_bpatch_streams;                     /* 0x70 -- unused */
223bdcd8170SKalle Valo 	u32 hi_mbox_isr_yield_limit;                   /* 0x74 */
224bdcd8170SKalle Valo 
225bdcd8170SKalle Valo 	u32 hi_refclk_hz;                              /* 0x78 */
226bdcd8170SKalle Valo 	u32 hi_ext_clk_detected;                       /* 0x7c */
227bdcd8170SKalle Valo 	u32 hi_dbg_uart_txpin;                         /* 0x80 */
228bdcd8170SKalle Valo 	u32 hi_dbg_uart_rxpin;                         /* 0x84 */
229bdcd8170SKalle Valo 	u32 hi_hci_uart_baud;                          /* 0x88 */
230bdcd8170SKalle Valo 	u32 hi_hci_uart_pin_assignments;               /* 0x8C */
231bdcd8170SKalle Valo 	/*
232bdcd8170SKalle Valo 	 * NOTE: byte [0] = tx pin, [1] = rx pin, [2] = rts pin, [3] = cts
233bdcd8170SKalle Valo 	 * pin
234bdcd8170SKalle Valo 	 */
235bdcd8170SKalle Valo 	u32 hi_hci_uart_baud_scale_val;                /* 0x90 */
236bdcd8170SKalle Valo 	u32 hi_hci_uart_baud_step_val;                 /* 0x94 */
237bdcd8170SKalle Valo 
238bdcd8170SKalle Valo 	u32 hi_allocram_start;                         /* 0x98 */
239bdcd8170SKalle Valo 	u32 hi_allocram_sz;                            /* 0x9c */
240bdcd8170SKalle Valo 	u32 hi_hci_bridge_flags;                       /* 0xa0 */
241bdcd8170SKalle Valo 	u32 hi_hci_uart_support_pins;                  /* 0xa4 */
242bdcd8170SKalle Valo 	/*
243bdcd8170SKalle Valo 	 * NOTE: byte [0] = RESET pin (bit 7 is polarity),
244bdcd8170SKalle Valo 	 * bytes[1]..bytes[3] are for future use
245bdcd8170SKalle Valo 	 */
246bdcd8170SKalle Valo 	u32 hi_hci_uart_pwr_mgmt_params;               /* 0xa8 */
247bdcd8170SKalle Valo 	/*
248bdcd8170SKalle Valo 	 * 0xa8   - [1]: 0 = UART FC active low, 1 = UART FC active high
249bdcd8170SKalle Valo 	 *      [31:16]: wakeup timeout in ms
250bdcd8170SKalle Valo 	 */
251bdcd8170SKalle Valo 
252bdcd8170SKalle Valo 	/* Pointer to extended board data */
253bdcd8170SKalle Valo 	u32 hi_board_ext_data;                /* 0xac */
254bdcd8170SKalle Valo 	u32 hi_board_ext_data_config;         /* 0xb0 */
255bdcd8170SKalle Valo 
256bdcd8170SKalle Valo 	/*
257bdcd8170SKalle Valo 	 * Bit [0]  :   valid
258bdcd8170SKalle Valo 	 * Bit[31:16:   size
259bdcd8170SKalle Valo 	 */
260bdcd8170SKalle Valo 	/*
261bdcd8170SKalle Valo 	 * hi_reset_flag is used to do some stuff when target reset.
262bdcd8170SKalle Valo 	 * such as restore app_start after warm reset or
263bdcd8170SKalle Valo 	 * preserve host Interest area, or preserve ROM data, literals etc.
264bdcd8170SKalle Valo 	 */
265bdcd8170SKalle Valo 	u32 hi_reset_flag;                            /* 0xb4 */
266bdcd8170SKalle Valo 	/* indicate hi_reset_flag is valid */
267bdcd8170SKalle Valo 	u32 hi_reset_flag_valid;                      /* 0xb8 */
268bdcd8170SKalle Valo 	u32 hi_hci_uart_pwr_mgmt_params_ext;           /* 0xbc */
269bdcd8170SKalle Valo 	/*
270bdcd8170SKalle Valo 	 * 0xbc - [31:0]: idle timeout in ms
271bdcd8170SKalle Valo 	 */
272bdcd8170SKalle Valo 	/* ACS flags */
273bdcd8170SKalle Valo 	u32 hi_acs_flags;                              /* 0xc0 */
274bdcd8170SKalle Valo 	u32 hi_console_flags;                          /* 0xc4 */
275bdcd8170SKalle Valo 	u32 hi_nvram_state;                            /* 0xc8 */
276bdcd8170SKalle Valo 	u32 hi_option_flag2;                           /* 0xcc */
277bdcd8170SKalle Valo 
278bdcd8170SKalle Valo 	/* If non-zero, override values sent to Host in WMI_READY event. */
279bdcd8170SKalle Valo 	u32 hi_sw_version_override;                    /* 0xd0 */
280bdcd8170SKalle Valo 	u32 hi_abi_version_override;                   /* 0xd4 */
281bdcd8170SKalle Valo 
282bdcd8170SKalle Valo 	/*
283bdcd8170SKalle Valo 	 * Percentage of high priority RX traffic to total expected RX traffic -
284bdcd8170SKalle Valo 	 * applicable only to ar6004
285bdcd8170SKalle Valo 	 */
286bdcd8170SKalle Valo 	u32 hi_hp_rx_traffic_ratio;                    /* 0xd8 */
287bdcd8170SKalle Valo 
288bdcd8170SKalle Valo 	/* test applications flags */
289bdcd8170SKalle Valo 	u32 hi_test_apps_related    ;                  /* 0xdc */
290bdcd8170SKalle Valo 	/* location of test script */
291bdcd8170SKalle Valo 	u32 hi_ota_testscript;                         /* 0xe0 */
292bdcd8170SKalle Valo 	/* location of CAL data */
293bdcd8170SKalle Valo 	u32 hi_cal_data;                               /* 0xe4 */
294bdcd8170SKalle Valo 	/* Number of packet log buffers */
295bdcd8170SKalle Valo 	u32 hi_pktlog_num_buffers;                     /* 0xe8 */
296bdcd8170SKalle Valo 
297bdcd8170SKalle Valo } __packed;
298bdcd8170SKalle Valo 
299bdcd8170SKalle Valo #define HI_ITEM(item)  offsetof(struct host_interest, item)
300bdcd8170SKalle Valo 
301bdcd8170SKalle Valo #define HI_OPTION_MAC_ADDR_METHOD_SHIFT	3
302bdcd8170SKalle Valo 
303bdcd8170SKalle Valo #define HI_OPTION_FW_MODE_IBSS    0x0
304bdcd8170SKalle Valo #define HI_OPTION_FW_MODE_BSS_STA 0x1
305bdcd8170SKalle Valo #define HI_OPTION_FW_MODE_AP      0x2
306bdcd8170SKalle Valo 
3076bbc7c35SJouni Malinen #define HI_OPTION_FW_SUBMODE_NONE      0x0
3086bbc7c35SJouni Malinen #define HI_OPTION_FW_SUBMODE_P2PDEV    0x1
3096bbc7c35SJouni Malinen #define HI_OPTION_FW_SUBMODE_P2PCLIENT 0x2
3106bbc7c35SJouni Malinen #define HI_OPTION_FW_SUBMODE_P2PGO     0x3
3116bbc7c35SJouni Malinen 
312bdcd8170SKalle Valo #define HI_OPTION_NUM_DEV_SHIFT   0x9
313bdcd8170SKalle Valo 
314bdcd8170SKalle Valo #define HI_OPTION_FW_BRIDGE_SHIFT 0x04
315bdcd8170SKalle Valo 
316bdcd8170SKalle Valo /* Fw Mode/SubMode Mask
317bdcd8170SKalle Valo |------------------------------------------------------------------------------|
318bdcd8170SKalle Valo |   SUB   |   SUB   |   SUB   |  SUB    |         |         |         |
319bdcd8170SKalle Valo | MODE[3] | MODE[2] | MODE[1] | MODE[0] | MODE[3] | MODE[2] | MODE[1] | MODE[0|
320bdcd8170SKalle Valo |   (2)   |   (2)   |   (2)   |   (2)   |   (2)   |   (2)   |   (2)   |   (2)
321bdcd8170SKalle Valo |------------------------------------------------------------------------------|
322bdcd8170SKalle Valo */
323bdcd8170SKalle Valo #define HI_OPTION_FW_MODE_SHIFT        0xC
3246bbc7c35SJouni Malinen #define HI_OPTION_FW_SUBMODE_SHIFT     0x14
325bdcd8170SKalle Valo 
326bdcd8170SKalle Valo /* Convert a Target virtual address into a Target physical address */
32731024d99SKevin Fang #define AR6003_VTOP(vaddr) ((vaddr) & 0x001fffff)
32831024d99SKevin Fang #define AR6004_VTOP(vaddr) (vaddr)
32931024d99SKevin Fang 
33031024d99SKevin Fang #define TARG_VTOP(target_type, vaddr) \
33131024d99SKevin Fang 	(((target_type) == TARGET_TYPE_AR6003) ? AR6003_VTOP(vaddr) : \
33231024d99SKevin Fang 	(((target_type) == TARGET_TYPE_AR6004) ? AR6004_VTOP(vaddr) : 0))
333bdcd8170SKalle Valo 
334bdcd8170SKalle Valo #define AR6003_REV2_APP_START_OVERRIDE          0x944C00
335bdcd8170SKalle Valo #define AR6003_REV2_APP_LOAD_ADDRESS            0x543180
336bdcd8170SKalle Valo #define AR6003_REV2_BOARD_EXT_DATA_ADDRESS      0x57E500
337bdcd8170SKalle Valo #define AR6003_REV2_DATASET_PATCH_ADDRESS       0x57e884
338bdcd8170SKalle Valo #define AR6003_REV2_RAM_RESERVE_SIZE            6912
339bdcd8170SKalle Valo 
340bdcd8170SKalle Valo #define AR6003_REV3_APP_START_OVERRIDE          0x945d00
341bdcd8170SKalle Valo #define AR6003_REV3_APP_LOAD_ADDRESS            0x545000
342bdcd8170SKalle Valo #define AR6003_REV3_BOARD_EXT_DATA_ADDRESS      0x542330
343bdcd8170SKalle Valo #define AR6003_REV3_DATASET_PATCH_ADDRESS       0x57FF74
344bdcd8170SKalle Valo #define AR6003_REV3_RAM_RESERVE_SIZE            512
345bdcd8170SKalle Valo 
34631024d99SKevin Fang #define AR6004_REV1_BOARD_DATA_ADDRESS          0x435400
34731024d99SKevin Fang #define AR6004_REV1_BOARD_EXT_DATA_ADDRESS      0x437000
34831024d99SKevin Fang #define AR6004_REV1_RAM_RESERVE_SIZE            11264
349bdf5396bSKalle Valo 
350bdf5396bSKalle Valo #define ATH6KL_FWLOG_PAYLOAD_SIZE		1500
351bdf5396bSKalle Valo 
352bc07ddb2SKalle Valo struct ath6kl_dbglog_buf {
353bc07ddb2SKalle Valo 	__le32 next;
354bc07ddb2SKalle Valo 	__le32 buffer_addr;
355bc07ddb2SKalle Valo 	__le32 bufsize;
356bc07ddb2SKalle Valo 	__le32 length;
357bc07ddb2SKalle Valo 	__le32 count;
358bc07ddb2SKalle Valo 	__le32 free;
359bc07ddb2SKalle Valo } __packed;
360bc07ddb2SKalle Valo 
361bc07ddb2SKalle Valo struct ath6kl_dbglog_hdr {
362bc07ddb2SKalle Valo 	__le32 dbuf_addr;
363bc07ddb2SKalle Valo 	__le32 dropped;
364bc07ddb2SKalle Valo } __packed;
365bc07ddb2SKalle Valo 
366bdcd8170SKalle Valo #endif
367