@@ -34,7 +34,13 @@ static const uint8_t pre_brcm_patchram_buf[] = {
34
34
0x03 , 0x0C , 0x00 ,
35
35
0x2E , 0xFC , 0x00 ,
36
36
};
37
+ static const uint8_t post_brcm_patchram_buf[] = {
38
+ // RESET cmd
39
+ 0x03 , 0x0C , 0x00 ,
40
+ };
41
+
37
42
static const int pre_brcm_patch_ram_length = sizeof (pre_brcm_patchram_buf);
43
+ static const int post_brcm_patch_ram_length = sizeof (post_brcm_patchram_buf);
38
44
39
45
#define HCI_RESET_RAND_CNT 4
40
46
#define HCI_VS_CMD_SET_SLEEP_MODE 0xFC27
@@ -278,12 +284,24 @@ class HCIDriver : public cordio::CordioHCIDriver {
278
284
{
279
285
service_pack_ptr = brcm_patchram_buf;
280
286
service_pack_length = brcm_patch_ram_length;
281
- service_pack_next = &HCIDriver::terminate_service_pack_transfert ;
287
+ service_pack_next = &HCIDriver::post_service_pack_transfert ;
282
288
service_pack_index = 0 ;
283
289
service_pack_transfered = false ;
284
290
send_service_pack_command ();
285
291
}
286
292
293
+ // Called once brcm_patchram_buf has been transferred; send post_brcm_patchram_buf
294
+ void post_service_pack_transfert (void )
295
+ {
296
+ service_pack_ptr = post_brcm_patchram_buf;
297
+ service_pack_length = post_brcm_patch_ram_length;
298
+ service_pack_next = &HCIDriver::terminate_service_pack_transfert;;
299
+ service_pack_index = 0 ;
300
+ service_pack_transfered = false ;
301
+ wait_ms (1000 );
302
+ send_service_pack_command ();
303
+ }
304
+
287
305
// Called once post_brcm_patchram_buf has been transferred; start regular initialization.
288
306
void terminate_service_pack_transfert (void )
289
307
{
@@ -292,7 +310,6 @@ class HCIDriver : public cordio::CordioHCIDriver {
292
310
service_pack_next = NULL ;
293
311
service_pack_index = 0 ;
294
312
service_pack_transfered = true ;
295
- wait_ms (1000 );
296
313
set_sleep_mode ();
297
314
}
298
315
0 commit comments