Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: chromeos/drivers/ath6kl/miscdrv/ar3kps/ar3kpsconfig.c

Issue 2649001: Atheros patch to support ath3k BT device. (Closed) Base URL: ssh://git@chromiumos-git/kernel.git
Patch Set: Modified to address review comments. Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chromeos/drivers/ath6kl/miscdrv/ar3kps/ar3kpsconfig.h ('k') | drivers/bluetooth/Kconfig » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2004-2008 Atheros Communications Inc. 2 * Copyright (c) 2004-2008 Atheros Communications Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This file implements the Atheros PS and patch downloaded for HCI UART Transpo rt driver. 5 * This file implements the Atheros PS and patch downloaded for HCI UART Transpo rt driver.
6 * This file can be used for HCI SDIO transport implementation for AR6002 with H CI_TRANSPORT_SDIO 6 * This file can be used for HCI SDIO transport implementation for AR6002 with H CI_TRANSPORT_SDIO
7 * defined. 7 * defined.
8 * 8 *
9 * 9 *
10 * ar3kcpsconfig.c 10 * ar3kcpsconfig.c
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 const struct firmware* firmware; 133 const struct firmware* firmware;
134 A_UINT32 numCmds; 134 A_UINT32 numCmds;
135 A_UINT8 *event; 135 A_UINT8 *event;
136 A_UINT8 *bufferToFree; 136 A_UINT8 *bufferToFree;
137 struct hci_dev *device; 137 struct hci_dev *device;
138 A_UCHAR *buffer; 138 A_UCHAR *buffer;
139 A_UINT32 len; 139 A_UINT32 len;
140 A_UINT32 DevType; 140 A_UINT32 DevType;
141 A_UCHAR *PsFileName; 141 A_UCHAR *PsFileName;
142 A_UCHAR *patchFileName; 142 A_UCHAR *patchFileName;
143 A_UCHAR path[256];
144 A_UCHAR config_path[256];
143 AR3K_CONFIG_INFO *hdev = (AR3K_CONFIG_INFO*)arg; 145 AR3K_CONFIG_INFO *hdev = (AR3K_CONFIG_INFO*)arg;
144 struct device *firmwareDev = NULL; 146 struct device *firmwareDev = NULL;
145 status = 0; 147 status = 0;
146 HciCmdList = NULL; 148 HciCmdList = NULL;
147 #ifdef HCI_TRANSPORT_SDIO 149 #ifdef HCI_TRANSPORT_SDIO
148 device = hdev->pBtStackHCIDev; 150 device = hdev->pBtStackHCIDev;
149 firmwareDev = device->parent; 151 firmwareDev = device->parent;
150 #else 152 #else
151 device = hdev; 153 device = hdev;
152 firmwareDev = &device->dev; 154 firmwareDev = &device->dev;
153 AthEnableSyncCommandOp(TRUE); 155 AthEnableSyncCommandOp(TRUE);
154 #endif /* HCI_TRANSPORT_SDIO */ 156 #endif /* HCI_TRANSPORT_SDIO */
155 /* First verify if the controller is an FPGA or ASIC, so depending on the de vice type the PS file to be written will be different. 157 /* First verify if the controller is an FPGA or ASIC, so depending on the de vice type the PS file to be written will be different.
156 */ 158 */
157 if(A_ERROR == getDeviceType(hdev,&DevType)) { 159 if(A_ERROR == getDeviceType(hdev,&DevType)) {
158 status = 1; 160 status = 1;
159 goto complete; 161 goto complete;
160 } 162 }
161 if(A_ERROR == ReadVersionInfo(hdev)) { 163 if(A_ERROR == ReadVersionInfo(hdev)) {
162 status = 1; 164 status = 1;
163 goto complete; 165 goto complete;
164 } 166 }
165 patchFileName = PATCH_FILE; 167 patchFileName = PATCH_FILE;
168 snprintf(path, sizeof(path), "%s/%xcoex/",CONFIG_PATH,Rom_Version);
166 if(DevType){ 169 if(DevType){
167 if(DevType == 0xdeadc0de){ 170 if(DevType == 0xdeadc0de){
168 PsFileName = PS_ASIC_FILE; 171 PsFileName = PS_ASIC_FILE;
169 } else{ 172 } else{
170 » » AR_DEBUG_PRINTF(ATH_DEBUG_ERR,(" FPGA Test Image : %x %x \n",Ro m_Version,Build_Version)); 173 » » AR_DEBUG_PRINTF(ATH_DEBUG_ERR,(" FPGA Test Image : %x %x \n",Ro m_Version,Build_Version));
171 if((Rom_Version == 0x99999999) && (Build_Version == 1)){ 174 if((Rom_Version == 0x99999999) && (Build_Version == 1)){
172 175
173 » » » AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("FPGA Test Image : Skippi ng Patch File load\n")); 176 » » » AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("FPGA Test Image : Skippi ng Patch File load\n"));
174 » » » patchFileName = NULL; 177 » » » patchFileName = NULL;
175 } 178 }
176 PsFileName = PS_FPGA_FILE; 179 PsFileName = PS_FPGA_FILE;
177 } 180 }
178 } 181 }
179 else{ 182 else{
180 PsFileName = PS_ASIC_FILE; 183 PsFileName = PS_ASIC_FILE;
181 } 184 }
182 185
183 AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("%x: FPGA/ASIC PS File Name %s\n", DevType,Ps FileName)); 186 snprintf(config_path, sizeof(config_path), "%s%s",path,PsFileName);
187 AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("%x: FPGA/ASIC PS File Name %s\n", DevType,co nfig_path));
184 /* Read the PS file to a dynamically allocated buffer */ 188 /* Read the PS file to a dynamically allocated buffer */
185 if(request_firmware(&firmware,PsFileName,firmwareDev) < 0) { 189 if(request_firmware(&firmware,config_path,firmwareDev) < 0) {
186 AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("%s: firmware file open error\n", __FUNCT ION__ )); 190 AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("%s: firmware file open error\n", __FUNCT ION__ ));
187 status = 1; 191 status = 1;
188 goto complete; 192 goto complete;
189 193
190 } 194 }
191 if(NULL == firmware || firmware->size == 0) { 195 if(NULL == firmware || firmware->size == 0) {
192 status = 1; 196 status = 1;
193 goto complete; 197 goto complete;
194 } 198 }
195 buffer = (A_UCHAR *)A_MALLOC(firmware->size); 199 buffer = (A_UCHAR *)A_MALLOC(firmware->size);
196 if(buffer != NULL) { 200 if(buffer != NULL) {
197 /* Copy the read file to a local Dynamic buffer */ 201 /* Copy the read file to a local Dynamic buffer */
198 memcpy(buffer,firmware->data,firmware->size); 202 memcpy(buffer,firmware->data,firmware->size);
199 len = firmware->size; 203 len = firmware->size;
200 release_firmware(firmware); 204 release_firmware(firmware);
201 /* Parse the PS buffer to a global variable */ 205 /* Parse the PS buffer to a global variable */
202 status = AthDoParsePS(buffer,len); 206 status = AthDoParsePS(buffer,len);
203 A_FREE(buffer); 207 A_FREE(buffer);
204 } else { 208 } else {
205 release_firmware(firmware); 209 release_firmware(firmware);
206 } 210 }
207 211
208 212
209 /* Read the patch file to a dynamically allocated buffer */ 213 /* Read the patch file to a dynamically allocated buffer */
210 if((patchFileName == NULL) || (request_firmware(&firmware,patchFileName,firm wareDev) < 0)) { 214 » if(patchFileName != NULL)
215 » » snprintf(config_path,
216 » » » sizeof(config_path), "%s%s",path,patchFileName);
217 » else {
218 » » status = 0;
219 » }
220 AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("Patch File Name %s\n", config_path));
221 if((patchFileName == NULL) || (request_firmware(&firmware,config_path,firmwa reDev) < 0)) {
211 AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("%s: firmware file open error\n", __FUNCT ION__ )); 222 AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("%s: firmware file open error\n", __FUNCT ION__ ));
212 /* 223 /*
213 * It is not necessary that Patch file be available, continue with PS O perations if. 224 * It is not necessary that Patch file be available, continue with PS O perations if.
214 * failed. 225 * failed.
215 */ 226 */
216 status = 0; 227 status = 0;
217 228
218 } else { 229 } else {
219 if(NULL == firmware || firmware->size == 0) { 230 if(NULL == firmware || firmware->size == 0) {
220 status = 0; 231 status = 0;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 goto complete; 306 goto complete;
296 } 307 }
297 } 308 }
298 #ifndef HCI_TRANSPORT_SDIO 309 #ifndef HCI_TRANSPORT_SDIO
299 if(bdaddr[0] != '\0') { 310 if(bdaddr[0] != '\0') {
300 write_bdaddr(hdev,bdaddr); 311 write_bdaddr(hdev,bdaddr);
301 } else 312 } else
302 #endif /* HCI_TRANSPORT_SDIO */ 313 #endif /* HCI_TRANSPORT_SDIO */
303 { 314 {
304 /* Read Contents of BDADDR file if user has not provided any op tion */ 315 /* Read Contents of BDADDR file if user has not provided any op tion */
305 » if(request_firmware(&firmware,BDADDR_FILE,firmwareDev) < 0) { 316 » » sprintf(config_path,"%s%s",path,BDADDR_FILE);
306 » AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("%s: firmware file open error\n", __FUNCTION__ )); 317 » AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("Patch File Name %s\n", config_path));
307 » status = 1; 318 » if(request_firmware(&firmware,config_path,firmwareDev) < 0) {
308 » goto complete; 319 » » AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("%s: firmware file open error\n", __FUNCTION__ ));
309 » } 320 » » status = 1;
310 » if(NULL == firmware || firmware->size == 0) { 321 » » goto complete;
311 » status = 1; 322 » }
312 » goto complete; 323 » if(NULL == firmware || firmware->size == 0) {
313 » } 324 » » status = 1;
325 » » goto complete;
326 » }
314 write_bdaddr(hdev,(A_UCHAR *)firmware->data); 327 write_bdaddr(hdev,(A_UCHAR *)firmware->data);
315 »release_firmware(firmware); 328 » release_firmware(firmware);
316 } 329 }
317 complete: 330 complete:
318 #ifndef HCI_TRANSPORT_SDIO 331 #ifndef HCI_TRANSPORT_SDIO
319 AthEnableSyncCommandOp(FALSE); 332 AthEnableSyncCommandOp(FALSE);
320 PSTagMode = FALSE; 333 PSTagMode = FALSE;
321 wake_up_interruptible(&PsCompleteEvent); 334 wake_up_interruptible(&PsCompleteEvent);
322 #endif /* HCI_TRANSPORT_SDIO */ 335 #endif /* HCI_TRANSPORT_SDIO */
323 if(NULL != HciCmdList) { 336 if(NULL != HciCmdList) {
324 AthFreeCommandList(&HciCmdList,numCmds); 337 AthFreeCommandList(&HciCmdList,numCmds);
325 } 338 }
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 } 510 }
498 511
499 } 512 }
500 if(bufferToFree != NULL) { 513 if(bufferToFree != NULL) {
501 A_FREE(bufferToFree); 514 A_FREE(bufferToFree);
502 } 515 }
503 return result; 516 return result;
504 } 517 }
505 518
506 519
OLDNEW
« no previous file with comments | « chromeos/drivers/ath6kl/miscdrv/ar3kps/ar3kpsconfig.h ('k') | drivers/bluetooth/Kconfig » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698