27
27
28
28
#define VERSION "0.1"
29
29
30
- static int rome_patch_ver_req (struct hci_dev * hdev , u32 * rome_version )
30
+ int qca_read_soc_version (struct hci_dev * hdev , u32 * soc_version )
31
31
{
32
32
struct sk_buff * skb ;
33
33
struct edl_event_hdr * edl ;
34
34
struct rome_version * ver ;
35
35
char cmd ;
36
36
int err = 0 ;
37
37
38
- BT_DBG ( "%s: ROME Patch Version Request", hdev -> name );
38
+ bt_dev_dbg ( hdev , "QCA Version Request" );
39
39
40
40
cmd = EDL_PATCH_VER_REQ_CMD ;
41
41
skb = __hci_cmd_sync_ev (hdev , EDL_PATCH_CMD_OPCODE , EDL_PATCH_CMD_LEN ,
42
42
& cmd , HCI_VENDOR_PKT , HCI_INIT_TIMEOUT );
43
43
if (IS_ERR (skb )) {
44
44
err = PTR_ERR (skb );
45
- BT_ERR ( "%s: Failed to read version of ROME (%d)", hdev -> name ,
46
- err );
45
+ bt_dev_err ( hdev , "Reading QCA version information failed (%d)" ,
46
+ err );
47
47
return err ;
48
48
}
49
49
50
50
if (skb -> len != sizeof (* edl ) + sizeof (* ver )) {
51
- BT_ERR ("%s: Version size mismatch len %d" , hdev -> name ,
52
- skb -> len );
51
+ bt_dev_err (hdev , "QCA Version size mismatch len %d" , skb -> len );
53
52
err = - EILSEQ ;
54
53
goto out ;
55
54
}
56
55
57
56
edl = (struct edl_event_hdr * )(skb -> data );
58
57
if (!edl ) {
59
- BT_ERR ( "%s: TLV with no header", hdev -> name );
58
+ bt_dev_err ( hdev , "QCA TLV with no header" );
60
59
err = - EILSEQ ;
61
60
goto out ;
62
61
}
63
62
64
63
if (edl -> cresp != EDL_CMD_REQ_RES_EVT ||
65
64
edl -> rtype != EDL_APP_VER_RES_EVT ) {
66
- BT_ERR ( "%s: Wrong packet received %d %d" , hdev -> name ,
67
- edl -> cresp , edl -> rtype );
65
+ bt_dev_err ( hdev , "QCA Wrong packet received %d %d" , edl -> cresp ,
66
+ edl -> rtype );
68
67
err = - EIO ;
69
68
goto out ;
70
69
}
@@ -76,30 +75,31 @@ static int rome_patch_ver_req(struct hci_dev *hdev, u32 *rome_version)
76
75
BT_DBG ("%s: ROM :0x%08x" , hdev -> name , le16_to_cpu (ver -> rome_ver ));
77
76
BT_DBG ("%s: SOC :0x%08x" , hdev -> name , le32_to_cpu (ver -> soc_id ));
78
77
79
- /* ROME chipset version can be decided by patch and SoC
78
+ /* QCA chipset version can be decided by patch and SoC
80
79
* version, combination with upper 2 bytes from SoC
81
80
* and lower 2 bytes from patch will be used.
82
81
*/
83
- * rome_version = (le32_to_cpu (ver -> soc_id ) << 16 ) |
82
+ * soc_version = (le32_to_cpu (ver -> soc_id ) << 16 ) |
84
83
(le16_to_cpu (ver -> rome_ver ) & 0x0000ffff );
85
84
86
85
out :
87
86
kfree_skb (skb );
88
87
89
88
return err ;
90
89
}
90
+ EXPORT_SYMBOL_GPL (qca_read_soc_version );
91
91
92
- static int rome_reset (struct hci_dev * hdev )
92
+ static int qca_send_reset (struct hci_dev * hdev )
93
93
{
94
94
struct sk_buff * skb ;
95
95
int err ;
96
96
97
- BT_DBG ( "%s: ROME HCI_RESET", hdev -> name );
97
+ bt_dev_dbg ( hdev , "QCA HCI_RESET" );
98
98
99
99
skb = __hci_cmd_sync (hdev , HCI_OP_RESET , 0 , NULL , HCI_INIT_TIMEOUT );
100
100
if (IS_ERR (skb )) {
101
101
err = PTR_ERR (skb );
102
- BT_ERR ( "%s: Reset failed (%d)", hdev -> name , err );
102
+ bt_dev_err ( hdev , "QCA Reset failed (%d)" , err );
103
103
return err ;
104
104
}
105
105
@@ -108,7 +108,7 @@ static int rome_reset(struct hci_dev *hdev)
108
108
return 0 ;
109
109
}
110
110
111
- static void rome_tlv_check_data (struct rome_config * config ,
111
+ static void qca_tlv_check_data (struct rome_config * config ,
112
112
const struct firmware * fw )
113
113
{
114
114
const u8 * data ;
@@ -207,7 +207,7 @@ static void rome_tlv_check_data(struct rome_config *config,
207
207
}
208
208
}
209
209
210
- static int rome_tlv_send_segment (struct hci_dev * hdev , int seg_size ,
210
+ static int qca_tlv_send_segment (struct hci_dev * hdev , int seg_size ,
211
211
const u8 * data , enum rome_tlv_dnld_mode mode )
212
212
{
213
213
struct sk_buff * skb ;
@@ -228,19 +228,19 @@ static int rome_tlv_send_segment(struct hci_dev *hdev, int seg_size,
228
228
HCI_VENDOR_PKT , HCI_INIT_TIMEOUT );
229
229
if (IS_ERR (skb )) {
230
230
err = PTR_ERR (skb );
231
- BT_ERR ( "%s: Failed to send TLV segment (%d)", hdev -> name , err );
231
+ bt_dev_err ( hdev , "QCA Failed to send TLV segment (%d)" , err );
232
232
return err ;
233
233
}
234
234
235
235
if (skb -> len != sizeof (* edl ) + sizeof (* tlv_resp )) {
236
- BT_ERR ( "%s: TLV response size mismatch", hdev -> name );
236
+ bt_dev_err ( hdev , "QCA TLV response size mismatch" );
237
237
err = - EILSEQ ;
238
238
goto out ;
239
239
}
240
240
241
241
edl = (struct edl_event_hdr * )(skb -> data );
242
242
if (!edl ) {
243
- BT_ERR ( "%s: TLV with no header", hdev -> name );
243
+ bt_dev_err ( hdev , " TLV with no header" );
244
244
err = - EILSEQ ;
245
245
goto out ;
246
246
}
@@ -249,8 +249,8 @@ static int rome_tlv_send_segment(struct hci_dev *hdev, int seg_size,
249
249
250
250
if (edl -> cresp != EDL_CMD_REQ_RES_EVT ||
251
251
edl -> rtype != EDL_TVL_DNLD_RES_EVT || tlv_resp -> result != 0x00 ) {
252
- BT_ERR ( "%s: TLV with error stat 0x%x rtype 0x%x (0x%x)" ,
253
- hdev -> name , edl -> cresp , edl -> rtype , tlv_resp -> result );
252
+ bt_dev_err ( hdev , "QCA TLV with error stat 0x%x rtype 0x%x (0x%x)" ,
253
+ edl -> cresp , edl -> rtype , tlv_resp -> result );
254
254
err = - EIO ;
255
255
}
256
256
@@ -260,23 +260,23 @@ static int rome_tlv_send_segment(struct hci_dev *hdev, int seg_size,
260
260
return err ;
261
261
}
262
262
263
- static int rome_download_firmware (struct hci_dev * hdev ,
263
+ static int qca_download_firmware (struct hci_dev * hdev ,
264
264
struct rome_config * config )
265
265
{
266
266
const struct firmware * fw ;
267
267
const u8 * segment ;
268
268
int ret , remain , i = 0 ;
269
269
270
- bt_dev_info (hdev , "ROME Downloading %s" , config -> fwname );
270
+ bt_dev_info (hdev , "QCA Downloading %s" , config -> fwname );
271
271
272
272
ret = request_firmware (& fw , config -> fwname , & hdev -> dev );
273
273
if (ret ) {
274
- BT_ERR ( "%s: Failed to request file: %s (%d)", hdev -> name ,
275
- config -> fwname , ret );
274
+ bt_dev_err ( hdev , "QCA Failed to request file: %s (%d)" ,
275
+ config -> fwname , ret );
276
276
return ret ;
277
277
}
278
278
279
- rome_tlv_check_data (config , fw );
279
+ qca_tlv_check_data (config , fw );
280
280
281
281
segment = fw -> data ;
282
282
remain = fw -> size ;
@@ -290,7 +290,7 @@ static int rome_download_firmware(struct hci_dev *hdev,
290
290
if (!remain || segsize < MAX_SIZE_PER_TLV_SEGMENT )
291
291
config -> dnld_mode = ROME_SKIP_EVT_NONE ;
292
292
293
- ret = rome_tlv_send_segment (hdev , segsize , segment ,
293
+ ret = qca_tlv_send_segment (hdev , segsize , segment ,
294
294
config -> dnld_mode );
295
295
if (ret )
296
296
break ;
@@ -317,8 +317,7 @@ int qca_set_bdaddr_rome(struct hci_dev *hdev, const bdaddr_t *bdaddr)
317
317
HCI_VENDOR_PKT , HCI_INIT_TIMEOUT );
318
318
if (IS_ERR (skb )) {
319
319
err = PTR_ERR (skb );
320
- BT_ERR ("%s: Change address command failed (%d)" ,
321
- hdev -> name , err );
320
+ bt_dev_err (hdev , "QCA Change address command failed (%d)" , err );
322
321
return err ;
323
322
}
324
323
@@ -328,57 +327,57 @@ int qca_set_bdaddr_rome(struct hci_dev *hdev, const bdaddr_t *bdaddr)
328
327
}
329
328
EXPORT_SYMBOL_GPL (qca_set_bdaddr_rome );
330
329
331
- int qca_uart_setup_rome (struct hci_dev * hdev , uint8_t baudrate )
330
+ int qca_uart_setup (struct hci_dev * hdev , uint8_t baudrate )
332
331
{
333
332
u32 rome_ver = 0 ;
334
333
struct rome_config config ;
335
334
int err ;
336
335
337
- BT_DBG ( "%s: ROME setup on UART", hdev -> name );
336
+ bt_dev_dbg ( hdev , "QCA setup on UART" );
338
337
339
338
config .user_baud_rate = baudrate ;
340
339
341
- /* Get ROME version information */
342
- err = rome_patch_ver_req (hdev , & rome_ver );
340
+ /* Get QCA version information */
341
+ err = qca_read_soc_version (hdev , & rome_ver );
343
342
if (err < 0 || rome_ver == 0 ) {
344
- BT_ERR ( "%s: Failed to get version 0x%x" , hdev -> name , err );
343
+ bt_dev_err ( hdev , "QCA Failed to get version %d" , err );
345
344
return err ;
346
345
}
347
346
348
- bt_dev_info (hdev , "ROME controller version 0x%08x" , rome_ver );
347
+ bt_dev_info (hdev , "QCA controller version 0x%08x" , rome_ver );
349
348
350
349
/* Download rampatch file */
351
350
config .type = TLV_TYPE_PATCH ;
352
351
snprintf (config .fwname , sizeof (config .fwname ), "qca/rampatch_%08x.bin" ,
353
352
rome_ver );
354
- err = rome_download_firmware (hdev , & config );
353
+ err = qca_download_firmware (hdev , & config );
355
354
if (err < 0 ) {
356
- BT_ERR ( "%s: Failed to download patch (%d)", hdev -> name , err );
355
+ bt_dev_err ( hdev , "QCA Failed to download patch (%d)" , err );
357
356
return err ;
358
357
}
359
358
360
359
/* Download NVM configuration */
361
360
config .type = TLV_TYPE_NVM ;
362
361
snprintf (config .fwname , sizeof (config .fwname ), "qca/nvm_%08x.bin" ,
363
362
rome_ver );
364
- err = rome_download_firmware (hdev , & config );
363
+ err = qca_download_firmware (hdev , & config );
365
364
if (err < 0 ) {
366
- BT_ERR ( "%s: Failed to download NVM (%d)", hdev -> name , err );
365
+ bt_dev_err ( hdev , "QCA Failed to download NVM (%d)" , err );
367
366
return err ;
368
367
}
369
368
370
369
/* Perform HCI reset */
371
- err = rome_reset (hdev );
370
+ err = qca_send_reset (hdev );
372
371
if (err < 0 ) {
373
- BT_ERR ( "%s: Failed to run HCI_RESET (%d)", hdev -> name , err );
372
+ bt_dev_err ( hdev , "QCA Failed to run HCI_RESET (%d)" , err );
374
373
return err ;
375
374
}
376
375
377
- bt_dev_info (hdev , "ROME setup on UART is completed" );
376
+ bt_dev_info (hdev , "QCA setup on UART is completed" );
378
377
379
378
return 0 ;
380
379
}
381
- EXPORT_SYMBOL_GPL (qca_uart_setup_rome );
380
+ EXPORT_SYMBOL_GPL (qca_uart_setup );
382
381
383
382
MODULE_AUTHOR (
"Ben Young Tae Kim <[email protected] >" );
384
383
MODULE_DESCRIPTION ("Bluetooth support for Qualcomm Atheros family ver " VERSION );
0 commit comments