1bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
2bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Copyright (c) 2004-2011 Atheros Communications Inc.
3bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
4bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Permission to use, copy, modify, and/or distribute this software for any
5bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * purpose with or without fee is hereby granted, provided that the above
6bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * copyright notice and this permission notice appear in all copies.
7bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
8bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
16bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
17bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#ifndef BMI_H
18bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_H
19bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
20bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
21bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Bootloader Messaging Interface (BMI)
22bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
23bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * BMI is a very simple messaging interface used during initialization
24bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * to read memory, write memory, execute code, and to define an
25bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * application entry PC.
26bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
27bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * It is used to download an application to ATH6KL, to provide
28bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * patches to code that is already resident on ATH6KL, and generally
29bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * to examine and modify state.  The Host has an opportunity to use
30bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * BMI only once during bootup.  Once the Host issues a BMI_DONE
31bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * command, this opportunity ends.
32bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
33bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * The Host writes BMI requests to mailbox0, and reads BMI responses
34bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * from mailbox0.   BMI requests all begin with a command
35bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * (see below for specific commands), and are followed by
36bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * command-specific data.
37bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
38bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Flow control:
39bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * The Host can only issue a command once the Target gives it a
40bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * "BMI Command Credit", using ATH6KL Counter #4.  As soon as the
41bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Target has completed a command, it issues another BMI Command
42bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Credit (so the Host can issue the next command).
43bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
44bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * BMI handles all required Target-side cache flushing.
45bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
46bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
47bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/* BMI Commands */
48bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
49bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_NO_COMMAND                      0
50bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
51bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_DONE                            1
52bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
53bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Host is done using BMI
54bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
55bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_DONE)
56bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format: none
57bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
58bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
59bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_READ_MEMORY                     2
60bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
61bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Host reads ATH6KL memory
62bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
63bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_READ_MEMORY)
64bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 address
65bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 length, at most BMI_DATASZ_MAX
66bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format:
67bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u8 data[length]
68bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
69bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
70bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_WRITE_MEMORY                    3
71bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
72bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Host writes ATH6KL memory
73bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
74bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_WRITE_MEMORY)
75bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 address
76bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 length, at most BMI_DATASZ_MAX
77bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u8 data[length]
78bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format: none
79bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
80bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
81bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_EXECUTE                         4
82bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
83bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Causes ATH6KL to execute code
84bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
85bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_EXECUTE)
86bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 address
87bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 parameter
88bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format:
89bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 return value
90bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
91bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
92bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_SET_APP_START                   5
93bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
94bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Set Target application starting address
95bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
96bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_SET_APP_START)
97bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 address
98bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format: none
99bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
100bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
101bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_READ_SOC_REGISTER               6
102bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
103bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Read a 32-bit Target SOC register.
104bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
105bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_READ_REGISTER)
106bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 address
107bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format:
108bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 value
109bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
110bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
111bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_WRITE_SOC_REGISTER              7
112bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
113bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Write a 32-bit Target SOC register.
114bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
115bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_WRITE_REGISTER)
116bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 address
117bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 value
118bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
119bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format: none
120bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
121bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
122bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_GET_TARGET_ID                  8
123bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_GET_TARGET_INFO                8
124bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
125bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Fetch the 4-byte Target information
126bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
127bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_GET_TARGET_ID/INFO)
128bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format1 (old firmware):
129bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 TargetVersionID
130bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format2 (newer firmware):
131bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 TARGET_VERSION_SENTINAL
132bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    struct bmi_target_info;
133bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
134bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
135bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define TARGET_VERSION_SENTINAL 0xffffffff
13631024d99003486c90c793dea58b55f7920f0488bKevin Fang#define TARGET_TYPE_AR6003      3
13731024d99003486c90c793dea58b55f7920f0488bKevin Fang#define TARGET_TYPE_AR6004      5
138bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_ROMPATCH_INSTALL               9
139bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
140bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Install a ROM Patch.
141bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
142bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_ROMPATCH_INSTALL)
143bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 Target ROM Address
144bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 Target RAM Address or Value (depending on Target Type)
145bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 Size, in bytes
146bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 Activate? 1-->activate;
147bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *                            0-->install but do not activate
148bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format:
149bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 PatchID
150bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
151bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
152bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_ROMPATCH_UNINSTALL             10
153bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
154bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Uninstall a previously-installed ROM Patch,
155bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * automatically deactivating, if necessary.
156bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
157bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_ROMPATCH_UNINSTALL)
158bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 PatchID
159bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
160bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format: none
161bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
162bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
163bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_ROMPATCH_ACTIVATE              11
164bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
165bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Activate a list of previously-installed ROM Patches.
166bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
167bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_ROMPATCH_ACTIVATE)
168bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 rompatch_count
169bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 PatchID[rompatch_count]
170bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
171bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format: none
172bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
173bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
174bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_ROMPATCH_DEACTIVATE            12
175bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
176bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Deactivate a list of active ROM Patches.
177bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
178bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_ROMPATCH_DEACTIVATE)
179bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 rompatch_count
180bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 PatchID[rompatch_count]
181bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *
182bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format: none
183bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
184bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
185bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
186bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_LZ_STREAM_START                13
187bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
188bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Begin an LZ-compressed stream of input
189bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * which is to be uncompressed by the Target to an
190bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * output buffer at address.  The output buffer must
191bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * be sufficiently large to hold the uncompressed
192bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * output from the compressed input stream.  This BMI
193bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * command should be followed by a series of 1 or more
194bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * BMI_LZ_DATA commands.
195bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_LZ_STREAM_START)
196bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 address
197bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Note: Not supported on all versions of ROM firmware.
198bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
199bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
200bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_LZ_DATA                        14
201bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo/*
202bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Semantics: Host writes ATH6KL memory with LZ-compressed
203bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * data which is uncompressed by the Target.  This command
204bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * must be preceded by a BMI_LZ_STREAM_START command. A series
205bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * of BMI_LZ_DATA commands are considered part of a single
206bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * input stream until another BMI_LZ_STREAM_START is issued.
207bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Request format:
208bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 command (BMI_LZ_DATA)
209bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u32 length (of compressed data),
210bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *                  at most BMI_DATASZ_MAX
211bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo *    u8 CompressedData[length]
212bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Response format: none
213bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo * Note: Not supported on all versions of ROM firmware.
214bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo */
215bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
216bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#define BMI_COMMUNICATION_TIMEOUT       1000 /* in msec */
217bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
218bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valostruct ath6kl;
219bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valostruct ath6kl_bmi_target_info {
220bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo	__le32 byte_count;   /* size of this structure */
221bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo	__le32 version;      /* target version id */
222bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo	__le32 type;         /* target type */
223bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo} __packed;
224bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo
225bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_init(struct ath6kl *ar);
226bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valovoid ath6kl_bmi_cleanup(struct ath6kl *ar);
2275fe4dffbc12b22507d2416667720cbd4b27c693bKalle Valovoid ath6kl_bmi_reset(struct ath6kl *ar);
2285fe4dffbc12b22507d2416667720cbd4b27c693bKalle Valo
229bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_done(struct ath6kl *ar);
230bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_get_target_info(struct ath6kl *ar,
231bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo			       struct ath6kl_bmi_target_info *targ_info);
232bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_read(struct ath6kl *ar, u32 addr, u8 *buf, u32 len);
233bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_write(struct ath6kl *ar, u32 addr, u8 *buf, u32 len);
234bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_execute(struct ath6kl *ar,
235bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo		       u32 addr, u32 *param);
236bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_set_app_start(struct ath6kl *ar,
237bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo			     u32 addr);
238bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_reg_read(struct ath6kl *ar, u32 addr, u32 *param);
239bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_reg_write(struct ath6kl *ar, u32 addr, u32 param);
240bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_lz_data(struct ath6kl *ar,
241bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo		       u8 *buf, u32 len);
242bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_lz_stream_start(struct ath6kl *ar,
243bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo			       u32 addr);
244bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valoint ath6kl_bmi_fast_download(struct ath6kl *ar,
245bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo			     u32 addr, u8 *buf, u32 len);
246bdcd81707973cf8aa9305337166f8ee842a050d4Kalle Valo#endif
247