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