4682 lines
148 KiB
C
4682 lines
148 KiB
C
/***************************************************************************
|
|
*
|
|
* Copyright 2015-2019 BES.
|
|
* All rights reserved. All unpublished rights reserved.
|
|
*
|
|
* No part of this work may be used or reproduced in any form or by any
|
|
* means, or stored in a database or retrieval system, without prior written
|
|
* permission of BES.
|
|
*
|
|
* Use of this work is governed by a license granted by BES.
|
|
* This work contains confidential and proprietary information of
|
|
* BES. which is protected by copyright, trade secret,
|
|
* trademark and other intellectual property rights.
|
|
*
|
|
****************************************************************************/
|
|
#include "bt_drv.h"
|
|
#include "bt_drv_2300p_internal.h"
|
|
#include "bt_drv_interface.h"
|
|
#include "hal_chipid.h"
|
|
#include "hal_i2c.h"
|
|
#include "hal_uart.h"
|
|
#include "plat_types.h"
|
|
|
|
extern void btdrv_write_memory(uint8_t wr_type, uint32_t address,
|
|
const uint8_t *value, uint8_t length);
|
|
|
|
/// enable m4 patch func
|
|
#define BTDRV_PATCH_EN_REG 0xe0002000
|
|
|
|
// set m4 patch remap adress
|
|
#define BTDRV_PATCH_REMAP_REG 0xe0002004
|
|
|
|
// instruction patch compare src address
|
|
#define BTDRV_PATCH_INS_COMP_ADDR_START 0xe0002008
|
|
|
|
#define BTDRV_PATCH_INS_REMAP_ADDR_START 0xc0000100
|
|
|
|
// data patch compare src address
|
|
#define BTDRV_PATCH_DATA_COMP_ADDR_START 0xe00020e8
|
|
|
|
#define BTDRV_PATCH_DATA_REMAP_ADDR_START 0xc00001e0
|
|
|
|
#define BTDRV_PATCH_ACT 0x1
|
|
#define BTDRV_PATCH_INACT 0x0
|
|
|
|
typedef struct {
|
|
uint8_t patch_index; // patch position
|
|
uint8_t patch_state; // is patch active
|
|
uint16_t patch_length; // patch length 0:one instrution replace other:jump to
|
|
// ram to run more instruction
|
|
uint32_t patch_remap_address; // patch occured address
|
|
uint32_t patch_remap_value; // patch replaced instuction
|
|
uint32_t patch_start_address; // ram patch address for lenth>0
|
|
uint8_t *patch_data; // ram patch date for length >0
|
|
|
|
} BTDRV_PATCH_STRUCT;
|
|
|
|
#ifdef IBRT
|
|
/***************************************************************************
|
|
*
|
|
* instruction patch Information
|
|
*
|
|
* BT ROM Chip Version:1302 T3 (CHIP ID=2)
|
|
*
|
|
* IBRT function
|
|
*
|
|
* patch 2: 0xC00069a8--->0xC00069b0
|
|
* patch 4: 0xC00069b8--->0xC00069d0
|
|
* patch 5: 0xC00069d4--->0xC00069f0
|
|
* patch 6: 0xC00069f8--->0xC0006a08
|
|
* patch 7: 0xC0006a10--->0xC0006a24
|
|
* patch 9: 0xC0006a2c--->0xC0006a4c
|
|
* patch 10: 0xC0006a54--->0xC0006a64
|
|
* patch 11: 0xC0006a68--->0xC0006a90
|
|
* patch 13: 0xC0006a98--->0xC0006b2c
|
|
* patch 15: 0xC0006b3c--->0xC0006b88
|
|
* patch 16: 0xC0006b90--->0xC0006ba0
|
|
* patch 17: 0xC0006ba4--->0xC0006bc0
|
|
* patch 14: 0xC0006bc8--->0xC0006bdc
|
|
* patch 0: 0xC0006be4--->0xC0006c04
|
|
* patch 1: 0xC0006c0c--->0xC0006c24
|
|
* patch 2: 0xC0006c34--->0xC0006c80
|
|
* patch 3: 0xC0006c88--->0xC0006c94
|
|
* lmp_ext_sniffer_fast_cfm_tab: 0xC0006c9c --->0xC0006ca4
|
|
|
|
* patch 18: 0xC0006cbc--->0xC0006d10 DEBUG_PATCH
|
|
* patch 19: 0xC0006d14--->0xC0006dbc
|
|
* patch 20: 0xC0006dc4--->0xC0006df4
|
|
* patch 21: 0xC0006e00--->0xC0006e2c
|
|
* patch 22: 0xC0006e34--->0xC0006e38
|
|
* lmp_ext_sniffer_filter_tab: 0xC0006e40 --->0xC0006e54
|
|
* patch 2a: 0xC0006e5c--->0xC0006e70
|
|
* patch 24: 0xC0006e78--->0xC0006e88
|
|
* patch 25: 0xC0006e94--->0xC0006ea4
|
|
* patch 29: 0xC0006eb0--->0xC0006ec4
|
|
* patch 30: 0xC0006ecc--->0xC0006ef0
|
|
* patch 31: 0xC0006ef8--->0xC0006f08
|
|
* patch 32: 0xC0006f0c--->0xC0006f18
|
|
* patch 33: 0xc0006f20--->0xc0006f50
|
|
* patch 34: 0xc0006f58--->0xc0006f64
|
|
* patch 35: 0xc0006f70--->0xc0006f90
|
|
* patch 49: 0xc0006f98--->0xc0006fac
|
|
* patch 36: 0xc0006fc0--->0xc0007034
|
|
* patch 37: 0xc0007050--->0xc0007328
|
|
* patch 37: 0xc000732c--->0xc0007348
|
|
* patch 44: 0xc0007460--->0xc0007500
|
|
|
|
patch_ld_ibrt_sco_req_filter: c0007670--->c0007670
|
|
****************************************************************************/
|
|
//#define BT_CONTROLLER_DEBUG 1
|
|
|
|
const uint32_t bes2300p_patch0_ibrt_ins_data_t3[] = {
|
|
0x400fe92d, /*0xc0007758L*/
|
|
0xf0004630, /*0xc000775cL*/
|
|
0xe8bdf805, /*0xc0007760L*/
|
|
0xf634400f, /*0xc0007764L*/
|
|
0x0000bb51, /*0xc0007768L*/
|
|
0x4604b510, /*0xc000776cL*/
|
|
0x47984b0c, /*0xc0007770L*/
|
|
0x60184b0c, /*0xc0007774L*/
|
|
0x781b3304, /*0xc0007778L*/
|
|
0x2b03b2db, /*0xc000777cL*/
|
|
0x2c02d005, /*0xc0007780L*/
|
|
0x2c10d009, /*0xc0007784L*/
|
|
0x2004d10a, /*0xc0007788L*/
|
|
0x4b07e006, /*0xc000778cL*/
|
|
0xb2db781b, /*0xc0007790L*/
|
|
0x70134a06, /*0xc0007794L*/
|
|
0x2002e7f3, /*0xc0007798L*/
|
|
0x47984b05, /*0xc000779cL*/
|
|
0xbf00bd10, /*0xc00077a0L*/
|
|
0xa0026ded, /*0xc00077a4L*/
|
|
0xc000653c, /*0xc00077a8L*/
|
|
0xc00064da, /*0xc00077acL*/
|
|
0xc0006541, /*0xc00077b0L*/
|
|
0xa003bcc1, /*0xc00077b4L*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch0 = {
|
|
0,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch0_ibrt_ins_data_t3),
|
|
0x0003bdc0,
|
|
0xbccaf1cb,
|
|
0xc0007758,
|
|
(uint8_t *)
|
|
bes2300p_patch0_ibrt_ins_data_t3}; // ibrt sco auto accept (slave)
|
|
|
|
const uint32_t bes2300p_patch1_ibrt_ins_data_t3[] = {
|
|
0x681b4b08, 0xf632b933, 0x2800ffdb, 0x2001bf0c, 0xe0002004,
|
|
0xf6352001, 0x2000f84d, 0x60184b01, 0xb809f60a, 0xc0007434, /*6c30*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch1 = {
|
|
1,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch1_ibrt_ins_data_t3),
|
|
0x00010c3c,
|
|
0xbfe6f1f5,
|
|
0xc0006c0c,
|
|
(uint8_t *)
|
|
bes2300p_patch1_ibrt_ins_data_t3}; // ibrt sco auto accept (master)
|
|
|
|
const uint32_t bes2300p_patch2_ibrt_ins_data_t3[] = {
|
|
0x4b04b508, 0x2b01681b, 0x2001d102, 0xfb00f5fa, 0xbf00bd08,
|
|
0xc0007668, 0xfd56f60d, 0xfff0f7ff, 0xbe7af60f, /*6c58*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch2 = {
|
|
2,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch2_ibrt_ins_data_t3),
|
|
0x0001694c,
|
|
0xb980f1f0,
|
|
0xc0006c38,
|
|
(uint8_t *)bes2300p_patch2_ibrt_ins_data_t3}; // tws unsniff update ke state
|
|
|
|
const uint32_t bes2300p_patch3_ibrt_ins_data_t3[] = {
|
|
0xbf004628, 0xfdc4f60d, 0x21144628, 0xba4af60f, /*6c94*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch3 = {
|
|
3,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch3_ibrt_ins_data_t3),
|
|
0x00016128,
|
|
0xbdaef1f0,
|
|
0xc0006c88,
|
|
(uint8_t *)bes2300p_patch3_ibrt_ins_data_t3}; // start lmp to before sending
|
|
// LMP_HostConnectionReq
|
|
|
|
const uint32_t bes2300p_patch4_ibrt_ins_data_t3[] = {
|
|
0xf633b940, /*69b8*/
|
|
0x2801f86d, 0xf633d104, 0x2800f903,
|
|
0xbf00d102, 0xbd84f62b, 0xbe02f62b, /*69d0*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch4 = {
|
|
4,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch4_ibrt_ins_data_t3),
|
|
0x000324d4,
|
|
0xba70f1d4,
|
|
0xc00069b8,
|
|
(uint8_t *)bes2300p_patch4_ibrt_ins_data_t3}; // filter afh map
|
|
|
|
const uint32_t bes2300p_patch5_ibrt_ins_data_t3[] = {
|
|
0x79ab4688, /*69d4*/
|
|
0x6383ea6f, 0x4578f023, 0xf8d39b09, 0x9906308c,
|
|
0x402b440b, 0xbf004641, 0xb8bdf62d, /*69f0*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch5 = {
|
|
5,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch5_ibrt_ins_data_t3),
|
|
0x00033b60,
|
|
0xbf38f1d2,
|
|
0xc00069d4,
|
|
(uint8_t *)bes2300p_patch5_ibrt_ins_data_t3}; // sco param init
|
|
|
|
const uint32_t bes2300p_patch6_ibrt_ins_data_t3[] = {
|
|
0x4a033304, /*69f8*/
|
|
0xbf008153, 0x12c4f640, 0xbeb9f632, 0xc00062c0, /*6a08*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch6 = {
|
|
6,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch6_ibrt_ins_data_t3),
|
|
0x00039770,
|
|
0xb942f1cd,
|
|
0xc00069f8,
|
|
(uint8_t *)bes2300p_patch6_ibrt_ins_data_t3}; // pscan duration
|
|
|
|
const uint32_t bes2300p_patch7_ibrt_ins_data_t3[] = {
|
|
0x71ab2300, /*6a10*/
|
|
0x0000f8d9, 0x380cb110, 0xf8f6f5fa, 0xbf002300, 0xbf3ef608, /*6a24*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch7 = {
|
|
7,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch7_ibrt_ins_data_t3),
|
|
0x0000f8a0,
|
|
0xb8b6f1f7,
|
|
0xc0006a10,
|
|
(uint8_t *)
|
|
bes2300p_patch7_ibrt_ins_data_t3}; // lm_page_scan_end_ind free msg
|
|
|
|
const uint32_t bes2300p_patch8_ibrt_ins_data_t3[] = {
|
|
0xf8862001,
|
|
0xf8860060,
|
|
0xbf000061,
|
|
0xbba3f611,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch8 = {
|
|
8,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch8_ibrt_ins_data_t3),
|
|
0x00018f1c,
|
|
0xbc62f1ee,
|
|
0xc00077e4,
|
|
(uint8_t *)bes2300p_patch8_ibrt_ins_data_t3}; // ignore 0x5d sm
|
|
|
|
const uint32_t bes2300p_patch9_ibrt_ins_data_t3[] = {
|
|
0xf62a4628, /*6a2c*/
|
|
0x4620fef7, 0xff76f60f, 0xf8534b04, 0x46203025,
|
|
0x135ef893, 0xfc68f5fa, 0xbd702000, 0xc0005de4, /*6a4c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch9 = {
|
|
9,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch9_ibrt_ins_data_t3),
|
|
0x0002347c,
|
|
0xbad6f1e3,
|
|
0xc0006a2c,
|
|
(uint8_t *)bes2300p_patch9_ibrt_ins_data_t3};
|
|
|
|
const uint32_t bes2300p_patch10_ibrt_ins_data_t3[] = {
|
|
0x0818f104,
|
|
0xbb9ff634,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch10 = {
|
|
10,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch10_ibrt_ins_data_t3),
|
|
0x0003b184,
|
|
0xbc66f1cb,
|
|
0xc0006a54,
|
|
(uint8_t *)bes2300p_patch10_ibrt_ins_data_t3}; // set afh
|
|
|
|
const uint32_t bes2300p_patch11_ibrt_ins_data_t3[] = {
|
|
0xf8934b09, /*6a68*/
|
|
0xf0133084, 0xd0050f06, 0xf6374620, 0x4601f805, 0xe0052400,
|
|
0xf8934b03, 0xbf003084, 0xb941f636, 0xb987f636, 0xc0006568, /*6a90*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch11 = {
|
|
11,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch11_ibrt_ins_data_t3),
|
|
0x0003cd08,
|
|
0xbeaef1c9,
|
|
0xc0006a68,
|
|
(uint8_t *)bes2300p_patch11_ibrt_ins_data_t3}; // set ble adv data
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch12 = {
|
|
12, BTDRV_PATCH_ACT, 0, 0x0003cbf0, 0xbf00e004, 0,
|
|
NULL}; // set ble scan response data
|
|
|
|
const uint32_t bes2300p_patch13_ibrt_ins_data_t3[] = {
|
|
/*6a98*/ 0x99049803,
|
|
/*6a9c*/ 0x4b12b470,
|
|
/*6aa0*/ 0x010e5c5a,
|
|
/*6aa4*/ 0x19734d11,
|
|
/*6aa8*/ 0x78244c11,
|
|
/*6aac*/ 0xd20342a2,
|
|
/*6ab0*/ 0x32015498,
|
|
/*6ab4*/ 0xe001b2d2,
|
|
/*6ab8*/ 0x22015570,
|
|
/*6abc*/ 0x5442480a,
|
|
/*6ac0*/ 0x461ab14c,
|
|
/*6ac4*/ 0x23001919,
|
|
/*6ac8*/ 0x0b01f912,
|
|
/*6acc*/ 0xbf004403,
|
|
/*6ad0*/ 0xd1f9428a,
|
|
/*6ad4*/ 0x2300e000,
|
|
/*6ad8*/ 0xf0f4fb93,
|
|
/*6adc*/ 0xbc70b240,
|
|
/*6ae0*/ 0x22019904,
|
|
/*6ae4*/ 0xba00f626, // jump a0206ae4 -> a002cee8
|
|
/*6ae8*/ 0xc0006af8, // addr of rssi_idx_for_agc
|
|
/*6aec*/ 0xc0006afc, // addr of rssi_set_for_agc
|
|
/*6af0*/ 0xc0006af4, // addr of N
|
|
/*6af4*/ 0x00000005, // N : 1 ~ 16
|
|
/*6af8*/ 0x00000000, // rssi_idx_for_agc[3]
|
|
/*6afc*/ 0xbabababa, // rssi_set_for_agc[3*16]
|
|
/*6b00*/ 0xbabababa,
|
|
/*6b04*/ 0xbabababa,
|
|
/*6b08*/ 0xbabababa,
|
|
/*6b0c*/ 0xbabababa,
|
|
/*6b10*/ 0xbabababa,
|
|
/*6b14*/ 0xbabababa,
|
|
/*6b18*/ 0xbabababa,
|
|
/*6b1c*/ 0xbabababa,
|
|
/*6b20*/ 0xbabababa,
|
|
/*6b24*/ 0xbabababa,
|
|
/*6b28*/ 0xbabababa,
|
|
/*6b2c*/ 0xbabababa,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch13 = {
|
|
13,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch13_ibrt_ins_data_t3),
|
|
0x0002cee4,
|
|
0xbdd8f1d9, // jump a002cee4 -> a0206a98
|
|
0xc0006a98,
|
|
(uint8_t *)bes2300p_patch13_ibrt_ins_data_t3}; // ld_acl_rx() average rssi
|
|
|
|
const uint32_t bes2300p_patch14_ibrt_ins_data_t3[] = {
|
|
0x305af893, 0xd1032b00, 0x12f4f240,
|
|
0xbf00e002, 0x32b8f640, 0xbe30f60d, /*6bdc*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch14 = {
|
|
14,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch14_ibrt_ins_data_t3),
|
|
0x0001483c,
|
|
0xb9c4f1f2,
|
|
0xc0006bc8,
|
|
(uint8_t *)bes2300p_patch14_ibrt_ins_data_t3}; // lmp to 5s before
|
|
// connection cmp sent
|
|
|
|
const uint32_t bes2300p_patch15_ibrt_ins_data_t3[] = {
|
|
0x2028f843, /*6b3c*/
|
|
0xf8434b08, 0x4b052028, 0x4b0e701a, 0x2201701a, 0xf8434b08,
|
|
0xbf002028, 0xba32f624, 0xc0006b60, 0x00000000, 0xc0006b68,
|
|
0x00000000, 0x00000000, 0x00000000, 0xc0006b78, 0x00000001,
|
|
0x00000001, 0x00000001, 0xc0006b88, 0x00000000, /*6b88*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch15 = {
|
|
15,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch15_ibrt_ins_data_t3),
|
|
0x0002afbc,
|
|
0xbdbef1db,
|
|
0xc0006b3c,
|
|
(uint8_t *)bes2300p_patch15_ibrt_ins_data_t3}; // sync clear count
|
|
|
|
const uint32_t bes2300p_patch16_ibrt_ins_data_t3[] = {
|
|
0x0046f894, /*6b90*/
|
|
0xfe94f625, 0xd8012802, 0xba3ef629, 0xba57f629, /*6ba0*/
|
|
};
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch16 = {
|
|
16,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch16_ibrt_ins_data_t3),
|
|
0x00030014,
|
|
0xbdbcf1d6,
|
|
0xc0006b90,
|
|
(uint8_t *)bes2300p_patch16_ibrt_ins_data_t3}; // ld_sco_evt_start_cbk
|
|
|
|
const uint32_t bes2300p_patch17_ibrt_ins_data_t3[] = {
|
|
0xf6062002, /*6ba4*/
|
|
0x2802f937, 0xf898d108, 0xf62500b2, 0x2802fe85,
|
|
0xbf00d802, 0xbc93f629, 0xbc98f629, /*6bc0*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch17 = {
|
|
17,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch17_ibrt_ins_data_t3),
|
|
0x000304d4,
|
|
0xbb66f1d6,
|
|
0xc0006ba4,
|
|
(uint8_t *)
|
|
bes2300p_patch17_ibrt_ins_data_t3}; // ld_calculate_event_timestamp
|
|
|
|
#ifdef BT_CONTROLLER_DEBUG
|
|
const uint32_t bes2300p_patch18_ibrt_ins_data_t3[] = {
|
|
0x68124a0e, 0x2084f8c3, 0x68124a0d, 0x2088f8c3, 0x68124a0c, 0x208cf8c3,
|
|
0x68124a0b, 0x2090f8c3, 0x68124a0a, 0x2094f8c3, 0x68124a09, 0x2098f8c3,
|
|
0x68124a08, 0x209cf8c3, 0xbf004770, 0xe000ed04, 0xe000ed0c, 0xe000ed10,
|
|
0xe000ed14, 0xe000ed24, 0xe000ed3c, 0xe000ed34, /*6d10*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch18 = {
|
|
18,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch18_ibrt_ins_data_t3),
|
|
0x000077fc,
|
|
0xba5ef1ff,
|
|
0xc0006cbc,
|
|
(uint8_t *)bes2300p_patch18_ibrt_ins_data_t3}; // correct crash dump
|
|
#else
|
|
const uint32_t bes2300p_patch18_ibrt_ins_data_t3[] = {
|
|
0x2271f240, /*6cc0*/
|
|
0x4080f8b0, /*6cc4*/
|
|
0xb9f9f63f,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch18 = {
|
|
18,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch18_ibrt_ins_data_t3),
|
|
0x000460ac,
|
|
0xbe08f1c0,
|
|
0xc0006cc0,
|
|
(uint8_t *)bes2300p_patch18_ibrt_ins_data_t3
|
|
|
|
}; // BT avoid ble
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch19_ibrt_ins_data_t3[] = {
|
|
0x4603b508, 0x8210f3ef, 0x0f01f012, 0xb672d112, 0xf5a34811, 0x3b285343,
|
|
0xfba14910, 0xf3c32303, 0xeb032387, 0xeb000343, 0x31940183, 0xfdd0f5fc,
|
|
0xbd08b662, 0xf5a34808, 0x3b285343, 0xfba14907, 0xf3c32303, 0xeb032387,
|
|
0xeb000343, 0x31940183, 0xfdbef5fc, 0xbf00bd08, 0xc0005b4c, 0xff00ff01,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch19 = {
|
|
19,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch19_ibrt_ins_data_t3),
|
|
0x00008b24,
|
|
0xb8f8f1fe,
|
|
0xc0006d18,
|
|
(uint8_t *)bes2300p_patch19_ibrt_ins_data_t3}; // add lock interrupt when
|
|
// free acl buf
|
|
|
|
const uint32_t bes2300p_patch20_ibrt_ins_data_t3[] = {
|
|
0x460cb510, 0xfafaf5fa, 0xd9042870, 0x007ef1b4, 0x2001bf18,
|
|
0x2000bd10, 0xbf00bd10, 0xf7ff4621, 0x2800ffef, 0x4628d104,
|
|
0xfae8f5fa, 0xbd9af61c, 0xb85ff61d, /*6df4*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch20 = {
|
|
20,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch20_ibrt_ins_data_t3),
|
|
0x00023924,
|
|
0xba5cf1e3,
|
|
0xc0006dc4,
|
|
(uint8_t *)bes2300p_patch20_ibrt_ins_data_t3}; // protect ext3 lmp tx cfm
|
|
|
|
const uint32_t bes2300p_patch21_ibrt_ins_data_t3[] = {
|
|
0x2040f897, /*6e00*/
|
|
0xd1112a01, 0x0109f106, 0xf5fc4608, 0x2813fd4b, 0x221ed802, 0xbc54f614,
|
|
0x2a017a32, 0xf614d801, 0x221ebbf6, 0xbc4cf614, 0xbc47f614, /*6e2c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch21 = {
|
|
21,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch21_ibrt_ins_data_t3),
|
|
0x0001b604,
|
|
0xbbfcf1eb,
|
|
0xc0006e00,
|
|
(uint8_t *)
|
|
bes2300p_patch21_ibrt_ins_data_t3}; // reject set afh lmp when
|
|
// channel number less than 20
|
|
|
|
const uint32_t bes2300p_patch22_ibrt_ins_data_t3[] = {
|
|
0x2202729a, /*6e34*/
|
|
0xbd38719a, /*6e38*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch22 = {
|
|
22,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch22_ibrt_ins_data_t3),
|
|
0x00011c90,
|
|
0xb8d0f1f5,
|
|
0xc0006e34,
|
|
(uint8_t *)bes2300p_patch22_ibrt_ins_data_t3}; // update sco sync type
|
|
|
|
const uint32_t bes2300p_patch2a_ibrt_ins_data_t3[] = {
|
|
/*6e5c*/ 0xb10b4b04,
|
|
/*6e60*/ 0xbb84f615, // jump a001c56c
|
|
/*6e64*/ 0x783b2300,
|
|
/*6e68*/ 0x0301f003,
|
|
/*6e6c*/ 0xbb5ef615, // jump a001c52c
|
|
/*6e70*/ 0x00000000, // reject sniff
|
|
}; // LMP_MSG_HANDLER(sniff_req) LC_CONNECTED
|
|
|
|
const uint32_t bes2300p_patch23_ibrt_ins_data_t3[] = {
|
|
0xf9c6f632, /*7744*/
|
|
0x02194603, 0x417ff401, 0xbeeff632, /*7750*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch23 = {
|
|
23,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch23_ibrt_ins_data_t3),
|
|
0x0003a52c,
|
|
0xb90af1cd,
|
|
0xc0007744,
|
|
(uint8_t *)bes2300p_patch23_ibrt_ins_data_t3}; // fix sco success index
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch24 = {
|
|
24, BTDRV_PATCH_ACT, 0, 0x00002490, 0xbf00e012, 0, NULL,
|
|
}; // stop ibrt directly
|
|
|
|
const uint32_t bes2300p_patch25_ibrt_ins_data_t3[] = {
|
|
0x2a020a02, 0xbf00d804, 0x427ff400, 0xbf44f61c, 0xb807f61d,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch25 = {
|
|
25,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch25_ibrt_ins_data_t3),
|
|
0x00023d28,
|
|
0xb8b4f1e3,
|
|
0xc0006e94,
|
|
(uint8_t *)bes2300p_patch25_ibrt_ins_data_t3}; // enc update2 idx error
|
|
|
|
#if 1
|
|
const uint32_t bes2300p_patch26_ibrt_ins_data_t3[] = {
|
|
0x68134a05, 0x2380f043, 0xf5a26013, 0x68137206,
|
|
0x0301f043, 0xbd386013, 0xd0220400,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch26 = {
|
|
26,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch26_ibrt_ins_data_t3),
|
|
0x00048200,
|
|
0xba8ef1bf,
|
|
0xc0007720,
|
|
(uint8_t *)bes2300p_patch26_ibrt_ins_data_t3}; // enable hw spiin BLE
|
|
// lld_evt_rx_isr
|
|
|
|
#elif 0
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch26 = {
|
|
26, BTDRV_PATCH_ACT, 0, 0x00013f44, 0xbf00bd38, 0, NULL}; // assert
|
|
#else
|
|
const uint32_t bes2300p_patch26_ibrt_ins_data_t3[] = {
|
|
0xf6324607, 0xb120fa87, 0x63a6f640, 0xf63e827b,
|
|
0x4638bd94, 0x2080f8d0, 0xbd86f63e,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch26 = {
|
|
26,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch26_ibrt_ins_data_t3),
|
|
0x000461dc,
|
|
0xba6cf1c1,
|
|
0xc00076b8,
|
|
(uint8_t *)bes2300p_patch26_ibrt_ins_data_t3}; // ble con slave duration in
|
|
// snoop mode
|
|
#endif
|
|
|
|
#if defined(SYNC_BT_CTLR_PROFILE)
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch27 = {
|
|
27, BTDRV_PATCH_ACT, 0, 0x000187b8, 0x4628b123, 0,
|
|
NULL}; // send profile via ble
|
|
#else
|
|
const uint32_t bes2300p_patch27_ibrt_ins_data_t3[] = {
|
|
0xfe88f632, 0xffe8f7ff, 0xb9a2f625, /*6c68*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch27 = {
|
|
27,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch27_ibrt_ins_data_t3),
|
|
0x0002bfac,
|
|
0xbe58f1da,
|
|
0xc0006c60,
|
|
(uint8_t *)bes2300p_patch27_ibrt_ins_data_t3}; // disconnect update ke state
|
|
#endif
|
|
|
|
#if 1
|
|
// for ble master update con param with large winsize
|
|
const uint32_t bes2300p_patch28_ibrt_ins_data_t3[] = {
|
|
0x4630bf00, 0x109ef894, 0xf958f63f, 0x309cf894,
|
|
0x2271f240, 0x0003fb02, 0xbcf1f63f,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch28 = {
|
|
28,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch28_ibrt_ins_data_t3),
|
|
0x000471e4,
|
|
0xbb08f1c0,
|
|
0xc00077f8,
|
|
(uint8_t *)bes2300p_patch28_ibrt_ins_data_t3};
|
|
#else
|
|
// only for search UI
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch28 = {
|
|
28, BTDRV_PATCH_ACT, 0, 0x0000e47a, 0xe0027b20, 0,
|
|
NULL}; // lm_inq_res_ind_handler() rssi
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch29_ibrt_ins_data_t3[] = {
|
|
0xf8934b04, 0x2b0231c2, 0x230fbf0c,
|
|
0x75ab2314, 0xbac2f629, 0xc0005ea8, /*6ec4*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch29 = {
|
|
29,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch29_ibrt_ins_data_t3),
|
|
0x00030444,
|
|
0xbd34f1d6,
|
|
0xc0006eb0,
|
|
(uint8_t *)bes2300p_patch29_ibrt_ins_data_t3}; /// fix acl interv priority
|
|
|
|
const uint32_t bes2300p_patch30_ibrt_ins_data_t3[] = {
|
|
0xd80a2802, 0x4b05b508, 0x3020f853, 0xf893b123, 0x220510c4,
|
|
0xfe86f61d, 0x4770bd08, 0xc00009d4, 0xffeef7ff, 0xbda8f634, /*6ef0*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch30 = {
|
|
30,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch30_ibrt_ins_data_t3),
|
|
0x0003ba40,
|
|
0xba54f1cb,
|
|
0xc0006ecc,
|
|
(uint8_t *)bes2300p_patch30_ibrt_ins_data_t3}; /// send max slot req when
|
|
/// start ibrt
|
|
|
|
const uint32_t bes2300p_patch31_ibrt_ins_data_t3[] = {
|
|
0xf632b920, 0x2800fdc1, 0xbf00d002, 0xbb3af629, 0xbba2f629, /*6f08*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch31 = {
|
|
31,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch31_ibrt_ins_data_t3),
|
|
0x00030578,
|
|
0xbcbef1d6,
|
|
0xc0006ef8,
|
|
(uint8_t *)bes2300p_patch31_ibrt_ins_data_t3}; // modify start ibrt timing
|
|
|
|
#if 0 // def BT_CONTROLLER_DEBUG
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch32=
|
|
{
|
|
32,
|
|
BTDRV_PATCH_ACT,
|
|
0,
|
|
0x00000348,
|
|
0xbf00e005,
|
|
0,
|
|
NULL
|
|
};///lmp trace
|
|
#else
|
|
|
|
const uint32_t bes2300p_patch32_ibrt_ins_data_t3[] = {
|
|
0xfe4af5f9, 0xbf002300, 0x30c8f884, 0xbaf8f624, /*6f18*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch32 = {
|
|
32,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch32_ibrt_ins_data_t3),
|
|
0x0002b508,
|
|
0xbd00f1db,
|
|
0xc0006f0c,
|
|
(uint8_t *)bes2300p_patch32_ibrt_ins_data_t3}; /// role switch fail
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch33_ibrt_ins_data_t3[] = {
|
|
0x2300b430, 0x4d072103, 0x4290b2da, 0xf855d004, 0x2c004023,
|
|
0x4611bf18, 0x2b033301, 0x4608d1f4, 0x4770bc30, 0xc00009d4, /*6f50*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch33 = {
|
|
33,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch33_ibrt_ins_data_t3),
|
|
0x0002c8c0,
|
|
0xbb2ef1da,
|
|
0xc0006f20,
|
|
(uint8_t *)bes2300p_patch33_ibrt_ins_data_t3}; // find_other_acl_link
|
|
|
|
const uint32_t bes2300p_patch34_ibrt_ins_data_t3[] = {
|
|
0xfe38f632, 0xd0052800, 0xbf002002,
|
|
0xfcb0f61c, 0xbb2ff634, 0xbb25f634, /*6f6c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch34 = {
|
|
34,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch34_ibrt_ins_data_t3),
|
|
0x0003b5b4,
|
|
0xbcd0f1cb,
|
|
0xc0006f58,
|
|
(uint8_t *)bes2300p_patch34_ibrt_ins_data_t3}; // do not trans afh after
|
|
// IBRT switch
|
|
|
|
const uint32_t bes2300p_patch35_ibrt_ins_data_t3[] = {
|
|
0xfd92f632, /*6f70*/
|
|
0xd1092801, 0xfe28f632, 0xd0052800, 0xfd9cf632,
|
|
0xd10142a0, 0xbc77f611, 0x68294620, 0xbc70f611, /*6f90*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch35 = {
|
|
35,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch35_ibrt_ins_data_t3),
|
|
0x00018870,
|
|
0xbb7ef1ee,
|
|
0xc0006f70,
|
|
(uint8_t *)bes2300p_patch35_ibrt_ins_data_t3}; // acl data tx cfm
|
|
|
|
const uint32_t bes2300p_patch36_ibrt_ins_data_t3[] = {
|
|
0x460db538, 0x78034614, 0x7842085b, 0x2b7f78c1, 0x2a01d10a,
|
|
0x290dd11e, 0xf632d11c, 0x4601fd45, 0xf6342000, 0xe015ff1f,
|
|
0xd1132b03, 0xd1112a18, 0xd80f2d02, 0xf6104628, 0xb158fcb3,
|
|
0x3047f890, 0xd1072b02, 0xf62a4628, 0x0228fc0b, 0x0001f040,
|
|
0xfc88f60f, 0x000cf1a4, 0xfdf8f5f9, 0xbf00bd38, 0xd1072800,
|
|
0x4620bf00, 0x46524639, 0xffc8f7ff, 0xbbd8f61a, 0xbb62f61a, /*7034*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch36 = {
|
|
36,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch36_ibrt_ins_data_t3),
|
|
0x000216f8,
|
|
0xbc92f1e5,
|
|
0xc0006fc0,
|
|
(uint8_t *)bes2300p_patch36_ibrt_ins_data_t3}; // lmp filter
|
|
|
|
const uint32_t bes2300p_patch37_ibrt_ins_data_t3[] = {
|
|
0x47f0e92d, /*7050*/
|
|
0x4b97b082, 0x236e5c1e, 0xf300fb03, 0x5a9b4a95, 0x4f00f413, 0x8120f040,
|
|
0x46044689, 0x1800ea4f, 0xeb084f91, 0x4b910507, 0xa020f853, 0xf8524a90,
|
|
0x33013020, 0x3020f842, 0xf860f635, 0x42a04601, 0x8088f040, 0xf8534b8a,
|
|
0x4b8a2024, 0x429a681b, 0xf8dad817, 0xebc22084, 0xf0230309, 0xf1b34378,
|
|
0xd9046f80, 0x0302ebc9, 0x4378f023, 0x4a82425b, 0x0024f852, 0x68124a81,
|
|
0xf200fb02, 0xf2404293, 0x4b7f80eb, 0x3000f993, 0x4b7eb9c3, 0xc000f893,
|
|
0x0f00f1bc, 0x462ad00a, 0x0e0ceb05, 0xf9122300, 0x44030b01, 0xd1fa4572,
|
|
0xe0014662, 0x46132200, 0xfcfcfb93, 0xf8804872, 0xe001c000, 0x46132200,
|
|
0xf890486f, 0x4870e000, 0x9000f890, 0xf890486f, 0xfa4fc000, 0xebc9f08e,
|
|
0xfa4f0000, 0x4550fa8c, 0xebc9dd05, 0x48660e0e, 0xe000f880, 0x4864e002,
|
|
0xc000f880, 0x0e00f04f, 0xf840485d, 0xf8dfe024, 0xf85ee178, 0x30010024,
|
|
0x0024f84e, 0x7800485d, 0xd2054286, 0x783f4f5a, 0x360155af, 0xe004b2f6,
|
|
0x78364e57, 0x6007f808, 0x4f4d2601, 0x4282553e, 0x442ada06, 0xf9124405,
|
|
0x44234b01, 0xd1fa42aa, 0xfb934a53, 0x9200f0f0, 0xb2406a14, 0x23002201,
|
|
0xe08147a0, 0xf8534b46, 0x4b4e2024, 0x429a681b, 0xf8dad816, 0xebc22084,
|
|
0xf0230309, 0xf1b34378, 0xd9046f80, 0x0302ebc9, 0x4378f023, 0x4a3e425b,
|
|
0x1024f852, 0x68124a44, 0xf201fb02, 0xd9634293, 0xf9934b42, 0xb9c33000,
|
|
0xf8934b3a, 0xf1bee000, 0xd00a0f00, 0xeb05462a, 0x2300000e, 0x1b01f912,
|
|
0x4282440b, 0x4672d1fa, 0x2200e001, 0xfb934613, 0x4936fefe, 0xe000f881,
|
|
0x2200e001, 0x49334613, 0x49337808, 0xc000f891, 0xf8914932, 0xb241e000,
|
|
0x0101ebcc, 0xf98efa4f, 0xdd044549, 0x0000ebcc, 0x7008492a, 0x4929e002,
|
|
0xe000f881, 0x491c2000, 0x0024f841, 0xf850481c, 0x31011024, 0x1024f840,
|
|
0x7808491c, 0xd2054286, 0x78094920, 0x360155a9, 0xe004b2f6, 0x7809491d,
|
|
0x1007f808, 0x490c2601, 0x4282550e, 0x442ada06, 0xf9124405, 0x440b1b01,
|
|
0xd1fa42aa, 0xfb934a12, 0x9200f0f0, 0xb2406a15, 0x22014621, 0x47a82300,
|
|
0xe8bdb002, 0xbf0087f0,
|
|
0xc0006af8, // rssi_idx_for_agc[link_id] shenxin
|
|
0xd02111f8, // EM_BT_RD(EM_BT_RXBIT_ADDR
|
|
0xc0006afc, // rssi_set_for_agc shenxin
|
|
0xc00009d4, // ld_acl_env[link_id]
|
|
0xc0006b68, // link_no_sync_count[link_id]
|
|
0xc00072fc, // link_agc_thd_tws
|
|
0xc0006b78, // link_no_sync_count_time[link_id]
|
|
0xc0007300, // link_agc_thd_tws_time
|
|
0xc0006b60, // rssi_store_tws
|
|
0xc0006af4, // n shenxin
|
|
0xc0007304, // rssi_tws_step
|
|
0xc0007308, // rssi_min_value_tws
|
|
0xc0004268, // rwip_rf.rxgain_cntl
|
|
0xc000730c, // link_agc_thd_mobile
|
|
0xc0007310, // link_agc_thd_mobile_time
|
|
0xc0006b88, // rssi_store_mobile
|
|
0xc0007314, // rssi_mobile_step
|
|
0xc0007318, // rssi_min_value_mobile
|
|
0xffffffff, // link_agc_thd_tws
|
|
0x00000030, // link_agc_thd_tws_time
|
|
0x00000014, // rssi_tws_step
|
|
0x0000009c, // rssi_min_value_tws
|
|
0xffffffff, // link_agc_thd_mobile
|
|
0x00000030, // link_agc_thd_mobile_time
|
|
0x00000014, // rssi_mobile_step
|
|
0x000000a1, // rssi_min_value_mobile
|
|
0x99029804, 0xfe96f7ff, 0xfc48f632, 0xb898f626, /*7328*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch37 = {
|
|
37,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch37_ibrt_ins_data_t3),
|
|
0x0002d458,
|
|
0xbf60f1d9,
|
|
0xc0007050,
|
|
(uint8_t *)bes2300p_patch37_ibrt_ins_data_t3}; // swagc no sync
|
|
|
|
#if 0
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch38 =
|
|
{
|
|
38,
|
|
BTDRV_PATCH_ACT,
|
|
0,
|
|
0x000340b0,
|
|
0xbf00e003,
|
|
0,
|
|
NULL,
|
|
};//ld_sco_stop
|
|
#elif 1
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch38 = {
|
|
38, BTDRV_PATCH_ACT, 0, 0x00039ecc, 0xbf00e001, 0, NULL,
|
|
}; // remove lc_start_lmp_to
|
|
#else
|
|
const uint32_t bes2300p_patch38_ibrt_ins_data_t3[] = {
|
|
0x30d8f8c4, 0xfed6f61f, 0xd2014283, 0xbca7f62a, 0xbcbaf62a, /*7048*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch38 = {
|
|
38,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch38_ibrt_ins_data_t3),
|
|
0x000319a4,
|
|
0xbb48f1d5,
|
|
0xc0007038,
|
|
(uint8_t *)
|
|
bes2300p_patch38_ibrt_ins_data_t3}; // ble first connection anchor
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch39_ibrt_ins_data_t3[] = {
|
|
0x681b4b05, /*732c*/
|
|
0xd1032b00, 0x781a9b12, 0xbeb8f60b, 0xbec3f60b, 0xbf00bf00,
|
|
|
|
0xc0007348, // sniffer_sco_auto_accept
|
|
0x00000000, /*7348*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch39 = {
|
|
39,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch39_ibrt_ins_data_t3),
|
|
0x000130a8,
|
|
0xb940f1f4,
|
|
0xc000732c,
|
|
(uint8_t *)bes2300p_patch39_ibrt_ins_data_t3}; // lm_get_sync_param_hl_rsp
|
|
|
|
const uint32_t bes2300p_patch40_ibrt_ins_data_t3[] = {
|
|
0xfba2f632, 0xd11d2801, 0xfc38f632, 0x4b33b1d0, 0x2b00681b, 0xf632d013,
|
|
0x4606fba9, 0xd10e42b8, 0xfb98f632, 0xd15f2800, 0xfb76f632, 0x7a224605,
|
|
0x42937a63, 0x4620d103,
|
|
0xf99af000, //
|
|
0x2000b9d0, 0xbdeff614, 0xfb80f632, 0xd10d2802, 0xfc16f632, 0x4b22b150,
|
|
0x2b00681b, 0x4620d006,
|
|
0xf988f000, //
|
|
0x4b1fb910, 0x601a2201, 0xf0037823, 0xbf000301, 0xbda9f614, 0xf8852602,
|
|
0x79a36054, 0x3055f885, 0xf844f5fc, 0x7c4279e3, 0xd802429a, 0xf83ef5fc,
|
|
0xf8857c43, 0x79633056, 0x3057f885, 0xf3c37923, 0xf8850340, 0x7a233058,
|
|
0x3059f885, 0xf8a58963, 0x7ba3305a, 0x305cf885, 0xf88578e3, 0x78a3305d,
|
|
0x305ff885, 0xfb28f632, 0x46384603, 0xf1052110, 0xf6340252, 0x2000fc65,
|
|
0xbda3f614,
|
|
0xc0007348, // sniffer_sco_auto_accept
|
|
0xc0007434, // sco_param_filter_status
|
|
0x00000000, 0xfc3cf634, 0xb2c33801, 0xd8022b02, 0xf6342004, 0x2000fc3b,
|
|
0xbd91f614, 0x3c260cff, 0x5a3712ff, 0xffffffff, 0xffffffff,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch40 = {
|
|
40,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch40_ibrt_ins_data_t3),
|
|
0x0001bf10,
|
|
0xba1ef1eb,
|
|
0xc0007350,
|
|
(uint8_t *)
|
|
bes2300p_patch40_ibrt_ins_data_t3}; // LMP_MSG_HANDLER(esco_link_req)
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch41 = {
|
|
41, BTDRV_PATCH_ACT, 0, 0x0003b818, 0xfb1be001, 0, NULL,
|
|
}; // config fastack none mode
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch42 = {
|
|
42, BTDRV_PATCH_ACT, 0, 0x0002ceb4, 0xe00b0f0f, 0,
|
|
NULL}; // ld_acl_rx() average rssi
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch43 = {
|
|
43, BTDRV_PATCH_ACT, 0, 0x0002a51c, 0x3300f443, 0, NULL,
|
|
}; // bt_e_scoltcntl_retxnb_setf 2
|
|
|
|
const uint32_t bes2300p_patch44_ibrt_ins_data_t3[] = {
|
|
0xbf00686b, 0xd00f42b3, 0x4a212100, 0x6863e004, 0x42b34629, 0x4625d00a,
|
|
0xd9264293, 0xd8242e01, 0x462c461e, 0xe001460d, 0x2500462c, 0x8008f8d4,
|
|
0xa00cf894, 0x900df894, 0x46384f16, 0x46224629, 0xfb12f5fc, 0x0014f1a7,
|
|
0xf5fc4621, 0xf1b8fa1d, 0xd0050f00, 0x46514630, 0x2300464a, 0xe00847c0,
|
|
0x21ff480d, 0xfffaf5ff, 0x682ce003, 0xd1ce2c00, 0xb924e000, 0xf44f4808,
|
|
0xf5ff7185, 0xe8bdffef, 0xbf0087f0, 0xc0000954, 0xd02200bc, 0xa00508ec,
|
|
0x07fffffc, 0xc0000968, 0xa00508b4,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch44 = {
|
|
44,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch44_ibrt_ins_data_t3),
|
|
0x0002706c,
|
|
0xb9f8f1e0,
|
|
0xc0007460,
|
|
(uint8_t *)bes2300p_patch44_ibrt_ins_data_t3};
|
|
|
|
const uint32_t bes2300p_patch45_ibrt_ins_data_t3[] = {
|
|
0x4b05b508, 0x2b01681b, 0x2200d104, 0x601a4b02,
|
|
0xfe6cf633, 0xbf00bd08, 0xc00076a4, 0x00000000,
|
|
0xffeef7ff, 0xd1012b04, 0xbff0f5ff, 0xbff5f5ff, /*76b4*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch45 = {
|
|
45,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch45_ibrt_ins_data_t3),
|
|
0x00007690,
|
|
0xb80af200,
|
|
0xc0007688,
|
|
(uint8_t *)bes2300p_patch45_ibrt_ins_data_t3}; // dbg state
|
|
|
|
const uint32_t bes2300p_patch46_ibrt_ins_data_t3[] = {
|
|
0x4b06b508, 0x02007a98, 0x0001f040, 0xfb70f5fa, 0xbf183801, 0x30fff04f,
|
|
0xbf00bd08, 0xc00064d0, 0xffeef7ff, 0x781bb918, 0xf6342b02, 0xbd08bc89,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch46 = {
|
|
46,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch46_ibrt_ins_data_t3),
|
|
0x0003b60c,
|
|
0xbb70f1cb,
|
|
0xc0006cd0,
|
|
(uint8_t *)bes2300p_patch46_ibrt_ins_data_t3};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch47 = {
|
|
47,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch2a_ibrt_ins_data_t3),
|
|
0x0001c528,
|
|
0xbc98f1ea, // a001c528 -> a0206e5c
|
|
0xc0006e5c,
|
|
(uint8_t *)bes2300p_patch2a_ibrt_ins_data_t3}; // LMP_MSG_HANDLER(sniff_req)
|
|
// LC_CONNECTED
|
|
|
|
const uint32_t bes2300p_patch48_ibrt_ins_data_t3[] = {
|
|
0x681b4b1d, 0xd1352b00, 0xb083b530, 0x8310f3ef, 0x0f01f013, 0xb672d117,
|
|
0x25004c18, 0x95019500, 0xf1044620, 0x2208013c, 0xf5fc2307, 0x9500f9ed,
|
|
0xf5049501, 0xf5047080, 0x2208718a, 0xf5fc2307, 0xb662f9e3, 0x4c0de014,
|
|
0x95002500, 0x46209501, 0x013cf104, 0x23072208, 0xf9d6f5fc, 0x95019500,
|
|
0x7080f504, 0x718af504, 0x23072208, 0xf9ccf5fc, 0xbd30b003, 0xbf004770,
|
|
0xc0005df0, 0xc0005b24, 0xffbef7ff, 0xe8bdb004, 0xbf0081f0, /*75a4*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch48 = {
|
|
48,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch48_ibrt_ins_data_t3),
|
|
0x000013b0,
|
|
0xb8f2f206,
|
|
0xc0007518,
|
|
(uint8_t *)bes2300p_patch48_ibrt_ins_data_t3};
|
|
#if 1
|
|
const uint32_t bes2300p_patch49_ibrt_ins_data_t3[] = {
|
|
0x78004804, 0xbf00b120, 0xfd8cf632, 0xba1af609, 0xba1af609, 0xc0006221,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch49 = {
|
|
49,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch49_ibrt_ins_data_t3),
|
|
0x000103d8,
|
|
0xbddef1f6,
|
|
0xc0006f98,
|
|
(uint8_t *)bes2300p_patch49_ibrt_ins_data_t3}; // lc_sco_ind
|
|
#else
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch49 = {
|
|
49, BTDRV_PATCH_ACT, 0, 0x000103d8, 0xbf00e002, 0, NULL,
|
|
}; // lc_sco_ind
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch50_ibrt_ins_data_t3[] = {
|
|
0xf632d806, 0x2801fb0b, 0x0209d002, 0xbbeef632, 0xbf00bd08, /*75d0*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch50 = {
|
|
50,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch50_ibrt_ins_data_t3),
|
|
0x00039d98,
|
|
0xbc0af1cd,
|
|
0xc00075b0,
|
|
(uint8_t *)bes2300p_patch50_ibrt_ins_data_t3}; // do not trans stop SCO
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch51 = {
|
|
51, BTDRV_PATCH_ACT, 0, 0x0002ea00, 0x8ff8e8bd, 0, NULL,
|
|
}; // remove lmp flush
|
|
|
|
const uint32_t bes2300p_patch52_ibrt_ins_data_t3[] = {
|
|
0x4605b5f8, 0xf8544c19, 0xf6327020, 0x4606fb05, 0x4020f854,
|
|
0xfaecf632, 0xf632b320, 0x42a8fa61, 0xf897d120, 0x2b023047,
|
|
0x2e02d11c, 0xb1ccd81a, 0x3047f894, 0xd1152b02, 0x3040f894,
|
|
0x0234b973, 0x0401f044, 0x4620b2a4, 0xfeccf5f9, 0xd0052836,
|
|
0x60a2f44f, 0x46224621, 0xfadaf5f9, 0x4b042001, 0xbdf86018,
|
|
0x4b022000, 0xbdf86018, 0xc0005de4, 0xc0007668, 0x4638bf00,
|
|
0xffc2f7ff, 0x4628d104, 0xfeb0f5f9, 0xfc38f614, 0xbc84f614,
|
|
0x00000000, /*7668*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch52 = {
|
|
52,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch52_ibrt_ins_data_t3),
|
|
0x0001bed0,
|
|
0xbbbef1eb,
|
|
0xc00075dc,
|
|
(uint8_t *)bes2300p_patch52_ibrt_ins_data_t3}; // delay mobile unsniff lmp
|
|
|
|
const uint32_t bes2300p_patch53_ibrt_ins_data_t3[] = {
|
|
0x681b4b03, /*76fc*/
|
|
0xd1012b01, /*7700*/
|
|
0xfb06f632, /*7704*/
|
|
0x81f0e8bd, /*7708*/
|
|
0xc0007434, /*770c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch53 = {
|
|
53,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch53_ibrt_ins_data_t3),
|
|
0x0003a088,
|
|
0xbb38f1cd,
|
|
0xc00076fc,
|
|
(uint8_t *)
|
|
bes2300p_patch53_ibrt_ins_data_t3}; // don not trans start ibrt sco
|
|
|
|
const uint32_t bes2300p_patch54_ibrt_ins_data_t3[] = {
|
|
0xbf000a28, 0xffc6f626, 0x0a210a28, 0xb8a4f611, /*767c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch54 = {
|
|
54,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch54_ibrt_ins_data_t3),
|
|
0x000187c4,
|
|
0xbf54f1ee,
|
|
0xc0007670,
|
|
(uint8_t *)bes2300p_patch54_ibrt_ins_data_t3}; // protect tws tx type
|
|
|
|
#if 0
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch55 =
|
|
{
|
|
55,
|
|
BTDRV_PATCH_ACT,
|
|
0,
|
|
0x00030758,
|
|
0xbf00e03a,
|
|
0,
|
|
NULL,
|
|
};//decrease the connection time of TWS link in SCO
|
|
#else
|
|
const uint32_t bes2300p_patch55_ibrt_ins_data_t3[] = {
|
|
0x68134a06, 0x2380f023, 0xf5a26013, 0x68137206,
|
|
0x0301f023, 0xbf006013, 0xbdaff63e, 0xd0220400, /*77dc*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ibrt_ins_patch55 = {
|
|
55,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch55_ibrt_ins_data_t3),
|
|
0x00046330,
|
|
0xba46f1c1,
|
|
0xc00077c0,
|
|
(uint8_t *)bes2300p_patch55_ibrt_ins_data_t3}; // disable hw spi in BLE push
|
|
#endif
|
|
|
|
/////2300p t3 ibrt patch (chip id =2)
|
|
static const uint32_t best2300p_t3_ibrt_ins_patch_config[] = {
|
|
56,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch0,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch1,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch2,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch3,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch4,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch5,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch6,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch7,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch8,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch9,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch10,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch11,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch12,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch13,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch14,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch15,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch16,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch17,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch18,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch19,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch20,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch21,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch22,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch23,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch24,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch25,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch26,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch27,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch28,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch29,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch30,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch31,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch32,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch33,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch34,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch35,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch36,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch37,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch38,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch39,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch40,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch41,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch42,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch43,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch44,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch45,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch46,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch47,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch48,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch49,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch50,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch51,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch52,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch53,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch54,
|
|
(uint32_t)&bes2300p_t3_ibrt_ins_patch55,
|
|
};
|
|
#else
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch0 = {
|
|
0, BTDRV_PATCH_ACT, 0, 0x000324d4, 0xbf00bf00, 0,
|
|
NULL}; // afh filter disable
|
|
|
|
const uint32_t bes2300p_patch1_ins_data_t3[] = {
|
|
0xf8934b09, 0xf0133084, 0xd0050f06, 0xf6374620, 0x4601f839, 0xe0052400,
|
|
0xf8934b03, 0xbf003084, 0xb975f636, 0xb9bbf636, 0xc0006568,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch1 = {
|
|
1,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch1_ins_data_t3),
|
|
0x0003cd08,
|
|
0xbe7af1c9,
|
|
0xc0006a00,
|
|
(uint8_t *)bes2300p_patch1_ins_data_t3}; // set ble adv data
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch2 = {
|
|
2, BTDRV_PATCH_ACT, 0, 0x0003cbf0, 0xbf00e004, 0,
|
|
NULL}; // set ble scan response data
|
|
|
|
const uint32_t bes2300p_patch3_ins_data_t3[] = {
|
|
/*6a98*/ 0x99049803,
|
|
/*6a9c*/ 0x4b12b470,
|
|
/*6aa0*/ 0x010e5c5a,
|
|
/*6aa4*/ 0x19734d11,
|
|
/*6aa8*/ 0x78244c11,
|
|
/*6aac*/ 0xd20342a2,
|
|
/*6ab0*/ 0x32015498,
|
|
/*6ab4*/ 0xe001b2d2,
|
|
/*6ab8*/ 0x22015570,
|
|
/*6abc*/ 0x5442480a,
|
|
/*6ac0*/ 0x461ab14c,
|
|
/*6ac4*/ 0x23001919,
|
|
/*6ac8*/ 0x0b01f912,
|
|
/*6acc*/ 0xbf004403,
|
|
/*6ad0*/ 0xd1f9428a,
|
|
/*6ad4*/ 0x2300e000,
|
|
/*6ad8*/ 0xf0f4fb93,
|
|
/*6adc*/ 0xbc70b240,
|
|
/*6ae0*/ 0x22019904,
|
|
/*6ae4*/ 0xba00f626, // jump a0206ae4 -> a002cee8
|
|
/*6ae8*/ 0xc0006af8, // addr of rssi_idx_for_agc
|
|
/*6aec*/ 0xc0006afc, // addr of rssi_set_for_agc
|
|
/*6af0*/ 0xc0006af4, // addr of N
|
|
/*6af4*/ 0x00000005, // N : 1 ~ 16
|
|
/*6af8*/ 0x00000000, // rssi_idx_for_agc[3]
|
|
/*6afc*/ 0xbabababa, // rssi_set_for_agc[3*16]
|
|
/*6b00*/ 0xbabababa,
|
|
/*6b04*/ 0xbabababa,
|
|
/*6b08*/ 0xbabababa,
|
|
/*6b0c*/ 0xbabababa,
|
|
/*6b10*/ 0xbabababa,
|
|
/*6b14*/ 0xbabababa,
|
|
/*6b18*/ 0xbabababa,
|
|
/*6b1c*/ 0xbabababa,
|
|
/*6b20*/ 0xbabababa,
|
|
/*6b24*/ 0xbabababa,
|
|
/*6b28*/ 0xbabababa,
|
|
/*6b2c*/ 0xbabababa,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch3 = {
|
|
3,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch3_ins_data_t3),
|
|
0x0002cee4,
|
|
0xbdd8f1d9, // jump a002cee4 -> a0206a98
|
|
0xc0006a98,
|
|
(uint8_t *)bes2300p_patch3_ins_data_t3}; // ld_acl_rx() average rssi
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch4 = {
|
|
4, BTDRV_PATCH_ACT, 0, 0x0002ceb4, 0xe00b0f0f, 0,
|
|
NULL}; // ld_acl_rx() average rssi
|
|
|
|
const uint32_t bes2300p_patch5_ins_data_t3[] = {
|
|
0x2028f843, /*6b3c*/
|
|
0xf8434b08, 0x4b052028, 0x4b0e701a, 0x2201701a, 0xf8434b08,
|
|
0xbf002028, 0xba32f624, 0xc0006b60, 0x00000000, 0xc0006b68,
|
|
0x00000000, 0x00000000, 0x00000000, 0xc0006b78, 0x00000001,
|
|
0x00000001, 0x00000001, 0xc0006b88, 0x00000000, /*6b88*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch5 = {
|
|
5,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch5_ins_data_t3),
|
|
0x0002afbc,
|
|
0xbdbef1db,
|
|
0xc0006b3c,
|
|
(uint8_t *)bes2300p_patch5_ins_data_t3}; // sync clear count
|
|
|
|
const uint32_t bes2300p_patch6_ins_data_t3[] = {
|
|
0x47f0e92d, /*7050*/
|
|
0x4b97b082, 0x236e5c1e, 0xf300fb03, 0x5a9b4a95, 0x4f00f413, 0x8120f040,
|
|
0x46044689, 0x1800ea4f, 0xeb084f91, 0x4b910507, 0xa020f853, 0xf8524a90,
|
|
0x33013020, 0x3020f842, 0xf860f635, 0x42a04601, 0x8088f040, 0xf8534b8a,
|
|
0x4b8a2024, 0x429a681b, 0xf8dad817, 0xebc22084, 0xf0230309, 0xf1b34378,
|
|
0xd9046f80, 0x0302ebc9, 0x4378f023, 0x4a82425b, 0x0024f852, 0x68124a81,
|
|
0xf200fb02, 0xf2404293, 0x4b7f80eb, 0x3000f993, 0x4b7eb9c3, 0xc000f893,
|
|
0x0f00f1bc, 0x462ad00a, 0x0e0ceb05, 0xf9122300, 0x44030b01, 0xd1fa4572,
|
|
0xe0014662, 0x46132200, 0xfcfcfb93, 0xf8804872, 0xe001c000, 0x46132200,
|
|
0xf890486f, 0x4870e000, 0x9000f890, 0xf890486f, 0xfa4fc000, 0xebc9f08e,
|
|
0xfa4f0000, 0x4550fa8c, 0xebc9dd05, 0x48660e0e, 0xe000f880, 0x4864e002,
|
|
0xc000f880, 0x0e00f04f, 0xf840485d, 0xf8dfe024, 0xf85ee178, 0x30010024,
|
|
0x0024f84e, 0x7800485d, 0xd2054286, 0x783f4f5a, 0x360155af, 0xe004b2f6,
|
|
0x78364e57, 0x6007f808, 0x4f4d2601, 0x4282553e, 0x442ada06, 0xf9124405,
|
|
0x44234b01, 0xd1fa42aa, 0xfb934a53, 0x9200f0f0, 0xb2406a14, 0x23002201,
|
|
0xe08147a0, 0xf8534b46, 0x4b4e2024, 0x429a681b, 0xf8dad816, 0xebc22084,
|
|
0xf0230309, 0xf1b34378, 0xd9046f80, 0x0302ebc9, 0x4378f023, 0x4a3e425b,
|
|
0x1024f852, 0x68124a44, 0xf201fb02, 0xd9634293, 0xf9934b42, 0xb9c33000,
|
|
0xf8934b3a, 0xf1bee000, 0xd00a0f00, 0xeb05462a, 0x2300000e, 0x1b01f912,
|
|
0x4282440b, 0x4672d1fa, 0x2200e001, 0xfb934613, 0x4936fefe, 0xe000f881,
|
|
0x2200e001, 0x49334613, 0x49337808, 0xc000f891, 0xf8914932, 0xb241e000,
|
|
0x0101ebcc, 0xf98efa4f, 0xdd044549, 0x0000ebcc, 0x7008492a, 0x4929e002,
|
|
0xe000f881, 0x491c2000, 0x0024f841, 0xf850481c, 0x31011024, 0x1024f840,
|
|
0x7808491c, 0xd2054286, 0x78094920, 0x360155a9, 0xe004b2f6, 0x7809491d,
|
|
0x1007f808, 0x490c2601, 0x4282550e, 0x442ada06, 0xf9124405, 0x440b1b01,
|
|
0xd1fa42aa, 0xfb934a12, 0x9200f0f0, 0xb2406a15, 0x22014621, 0x47a82300,
|
|
0xe8bdb002, 0xbf0087f0,
|
|
0xc0006af8, // rssi_idx_for_agc[link_id] shenxin
|
|
0xd02111f8, // EM_BT_RD(EM_BT_RXBIT_ADDR
|
|
0xc0006afc, // rssi_set_for_agc shenxin
|
|
0xc00009d4, // ld_acl_env[link_id]
|
|
0xc0006b68, // link_no_sync_count[link_id]
|
|
0xc00072fc, // link_agc_thd_tws
|
|
0xc0006b78, // link_no_sync_count_time[link_id]
|
|
0xc0007300, // link_agc_thd_tws_time
|
|
0xc0006b60, // rssi_store_tws
|
|
0xc0006af4, // n shenxin
|
|
0xc0007304, // rssi_tws_step
|
|
0xc0007308, // rssi_min_value_tws
|
|
0xc0004268, // rwip_rf.rxgain_cntl
|
|
0xc000730c, // link_agc_thd_mobile
|
|
0xc0007310, // link_agc_thd_mobile_time
|
|
0xc0006b88, // rssi_store_mobile
|
|
0xc0007314, // rssi_mobile_step
|
|
0xc0007318, // rssi_min_value_mobile
|
|
0xffffffff, // link_agc_thd_tws
|
|
0x00000030, // link_agc_thd_tws_time
|
|
0x00000014, // rssi_tws_step
|
|
0x0000009c, // rssi_min_value_tws
|
|
0xffffffff, // link_agc_thd_mobile
|
|
0x00000030, // link_agc_thd_mobile_time
|
|
0x00000014, // rssi_mobile_step
|
|
0x000000a1, // rssi_min_value_mobile
|
|
0x99029804, 0xfe96f7ff, 0xfc48f632, 0xb898f626, /*7328*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch6 = {
|
|
6,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch6_ins_data_t3),
|
|
0x0002d458,
|
|
0xbf60f1d9,
|
|
0xc0007050,
|
|
(uint8_t *)bes2300p_patch6_ins_data_t3}; // swagc no sync
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch7 = {
|
|
7, BTDRV_PATCH_ACT, 0, 0x0000e47a, 0xe0027b20, 0,
|
|
NULL}; // lm_inq_res_ind_handler() rssi
|
|
|
|
const uint32_t bes2300p_patch8_ins_data_t3[] = {
|
|
0x2300b430, 0x4d072103, 0x4290b2da, 0xf855d004, 0x2c004023,
|
|
0x4611bf18, 0x2b033301, 0x4608d1f4, 0x4770bc30, 0xc00009d4,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch8 = {
|
|
8,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch8_ins_data_t3),
|
|
0x0002c8c0,
|
|
0xbb2ef1da,
|
|
0xc0006f20,
|
|
(uint8_t *)bes2300p_patch8_ins_data_t3}; // find_other_acl_link
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch9 = {
|
|
9, BTDRV_PATCH_ACT, 0, 0x000123e8, 0xf7f1bf00, 0,
|
|
NULL}; // ignore lm_get_nb_acl(MASTER_FLAG|SLAVE_FLAG) > 1 when cal wesco
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch10 = {
|
|
10, BTDRV_PATCH_ACT, 0, 0x0002ff48, 0xd9590f05, 0, NULL,
|
|
}; // ignore bld_sco_retransmit_dec function
|
|
|
|
const uint32_t bes2300p_patch11_ins_data_t3[] = {
|
|
0x304bf996,
|
|
0x44233302,
|
|
0xbbfcf629,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch11 = {
|
|
11,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch11_ins_data_t3),
|
|
0x00030748,
|
|
0xbbfef1d6,
|
|
0xc0006f48,
|
|
(uint8_t *)bes2300p_patch11_ins_data_t3}; // ld_calculate_timestamp
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch12 = {
|
|
12, BTDRV_PATCH_ACT, 0, 0x0001bcf4, 0xbf00e004, 0, NULL,
|
|
}; // LMP_MSG_HANDLER(max_slot_req)
|
|
|
|
const uint32_t bes2300p_patch13_ins_data_t3[] = {
|
|
0x3040f894, 0xd1032b00, 0x222a210b, 0xbe00f616, 0xbd06f616};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch13 = {
|
|
13,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch13_ins_data_t3),
|
|
0x0001d63c,
|
|
0xb9f8f1e9,
|
|
0xc0006a30,
|
|
(uint8_t *)bes2300p_patch13_ins_data_t3}; // LMP_MSG_HANDLER(aurand)
|
|
|
|
const uint32_t bes2300p_patch14_ins_data_t3[] = {
|
|
0xf8534b04, 0x46283026, 0x135ef893, 0xfc62f5fa, 0xbd55f616, 0xc0005de4};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch14 = {
|
|
14,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch14_ins_data_t3),
|
|
0x0001d4f4,
|
|
0xbaa6f1e9,
|
|
0xc0006a44,
|
|
(uint8_t *)bes2300p_patch14_ins_data_t3}; // LMP_MSG_HANDLER(aurand)
|
|
|
|
const uint32_t bes2300p_patch15_ins_data_t3[] = {
|
|
0x3040f897, 0xd1032b00, 0xbbacf617,
|
|
0x21234620, 0xf836f610, 0xbc8bf617 /*0xc0006a74*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch15 = {
|
|
15,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch15_ins_data_t3),
|
|
0x0001e1c0,
|
|
0xbc4ef1e8,
|
|
0xc0006a60,
|
|
(uint8_t *)bes2300p_patch15_ins_data_t3}; // LMP_MSG_HANDLER(not_accepted)
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch16 = {
|
|
16, BTDRV_PATCH_ACT, 0, 0x0002ea00, 0x8ff8e8bd, 0, NULL,
|
|
}; // remove lmp flush
|
|
|
|
const uint32_t bes2300p_patch17_ins_data_t3[] = {
|
|
0xfe4af5f9, 0xbf002300, 0x30c8f884, 0xbaf8f624, /*6f18*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch17 = {
|
|
17,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch17_ins_data_t3),
|
|
0x0002b508,
|
|
0xbd00f1db,
|
|
0xc0006f0c,
|
|
(uint8_t *)bes2300p_patch17_ins_data_t3}; /// role switch fail
|
|
|
|
const uint32_t bes2300p_patch18_ins_data_t3[] = {
|
|
0xbf004628, 0xfdc4f60d, 0x21144628, 0xba4af60f, /*6c94*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch18 = {
|
|
18,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch18_ins_data_t3),
|
|
0x00016128,
|
|
0xbdaef1f0,
|
|
0xc0006c88,
|
|
(uint8_t *)bes2300p_patch18_ins_data_t3}; // start lmp to before sending
|
|
// LMP_HostConnectionReq
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch19 = {
|
|
19, BTDRV_PATCH_ACT, 0, 0x00020640, 0xe00dbf00, 0, NULL,
|
|
}; // detach directly
|
|
|
|
const uint32_t bes2300p_patch20_ins_data_t3[] = {
|
|
0x305af893, 0xd1032b00, 0x12f4f240,
|
|
0xbf00e002, 0x32b8f640, 0xbe30f60d, /*6bdc*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch20 = {
|
|
20,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch20_ins_data_t3),
|
|
0x0001483c,
|
|
0xb9c4f1f2,
|
|
0xc0006bc8,
|
|
(uint8_t *)bes2300p_patch20_ins_data_t3}; // lmp to 5s before connection cmp
|
|
// sent
|
|
|
|
const uint32_t bes2300p_patch21_ins_data_t3[] = {
|
|
0x4603b508, 0x8210f3ef, 0x0f01f012, 0xb672d112, 0xf5a34811, 0x3b285343,
|
|
0xfba14910, 0xf3c32303, 0xeb032387, 0xeb000343, 0x31940183, 0xfdd0f5fc,
|
|
0xbd08b662, 0xf5a34808, 0x3b285343, 0xfba14907, 0xf3c32303, 0xeb032387,
|
|
0xeb000343, 0x31940183, 0xfdbef5fc, 0xbf00bd08, 0xc0005b4c, 0xff00ff01,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch21 = {
|
|
21,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch21_ins_data_t3),
|
|
0x00008b24,
|
|
0xb8f8f1fe,
|
|
0xc0006d18,
|
|
(uint8_t *)bes2300p_patch21_ins_data_t3}; // add lock interrupt when free
|
|
// acl buf
|
|
|
|
const uint32_t bes2300p_patch22_ins_data_t3[] = {
|
|
0x2040f897, /*6e00*/
|
|
0xd1112a01, 0x0109f106, 0xf5fc4608, 0x2813fd4b, 0x221ed802, 0xbc54f614,
|
|
0x2a017a32, 0xf614d801, 0x221ebbf6, 0xbc4cf614, 0xbc47f614, /*6e2c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch22 = {
|
|
22,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch22_ins_data_t3),
|
|
0x0001b604,
|
|
0xbbfcf1eb,
|
|
0xc0006e00,
|
|
(uint8_t *)bes2300p_patch22_ins_data_t3}; // reject set afh lmp when channel
|
|
// number less than 20
|
|
|
|
/*patch 23,24 for HiSilicon,BCS4.2,ver0x608 and Broadcom,BCS4.2,ver0x6106
|
|
* Enhanced Data Rate problem*/
|
|
const uint32_t bes2300p_patch23_ins_data_t3[] = {
|
|
0x0a00b538, /*c0006b90*/
|
|
0xf8534b08, 0xb2c45020, 0xf6274620, 0x4620fdaf,
|
|
0xf895210b, 0xf61d2046, 0x2201ff63, 0x701a4b02,
|
|
0xbf00bd38, 0xc0005de4, 0xc0006bc0, 0x00000000 /*c0006bc0*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch23 = {
|
|
23,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch23_ins_data_t3),
|
|
0x000144fc,
|
|
0xbb48f1f2,
|
|
0xc0006b90,
|
|
(uint8_t *)bes2300p_patch23_ins_data_t3}; // table request
|
|
|
|
const uint32_t bes2300p_patch24_ins_data_t3[] = {
|
|
0x0a00b538, /*c0006be0*/
|
|
0xf8534b0f, 0xb2c45020, 0x104df895, 0x31004620, 0x2101bf18,
|
|
0xfab8f628, 0x8d298ea8, 0xf61d2201, 0x4601f9f7, 0xf6284620,
|
|
0x2301fae5, 0x3062f885, 0xf6274620, 0x2200fd7f, 0x701a4b02,
|
|
0xbf00bd38, 0xc0005de4, 0xc0006bc0, 0x78244c04, 0x4628b114,
|
|
0xffd4f7ff, 0xb00d2000, 0x83f0e8bd, 0xc0006bc0 /*c0006c40*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch24 = {
|
|
24,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch24_ins_data_t3),
|
|
0x00023eb8,
|
|
0xbeb8f1e2,
|
|
0xc0006be0,
|
|
(uint8_t *)bes2300p_patch24_ins_data_t3}; // table request configure
|
|
/*end patch 23,24 for HiSilicon,BCS4.2,ver0x608 and Broadcom,BCS4.2,ver0x6106
|
|
* Enhanced Data Rate problem*/
|
|
|
|
const uint32_t bes2300p_patch25_ins_data_t3[] = {
|
|
0xfa80f5fc, /*c0006f58*/
|
|
0xb9737f43, 0x2b01786b, 0x2b03d01a, 0x2b05d010, 0xf896d00e,
|
|
0x22203044, 0x4620212e, 0xfd90f61d, 0xf896e010, 0x212e2044,
|
|
0xf61d4620, 0xe009fd65, 0xfd70f60c, 0xd1ec2800, 0x325ef896,
|
|
0xd1e82b00, 0xbeb0f614, 0xbec1f614, /*c0006fa0*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch25 = {
|
|
25,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch25_ins_data_t3),
|
|
0x0001bcb8,
|
|
0xb94ef1eb,
|
|
0xc0006f58,
|
|
(uint8_t *)bes2300p_patch25_ins_data_t3}; // LMP_MSG_HANDLER(max_slot_req)
|
|
|
|
const uint32_t bes2300p_patch26_ins_data_t3[] = {
|
|
0x681b4b16, 0xd0222b00, 0xf8b34b16, 0xf01331c0, 0xd1000f18, 0x4b13e020,
|
|
0x71c2f893, 0xff12f61f, 0xd0192f02, 0xf8534b10, 0x2b003027, 0x6b5ad014,
|
|
0xd9074282, 0xf8931a10, 0xeb033042, 0x42980343, 0x2200d80a, 0x46204611,
|
|
0xfa62f629, 0x4620e004, 0xbf002100, 0xbe0cf629, 0xbe0df629,
|
|
|
|
0xc0007008, // sco_start_delay_flag
|
|
0x00000000,
|
|
0xc0005ea8, // ld_env
|
|
0xc00009e4, // ld_sco_env
|
|
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch26 = {
|
|
26,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch26_ins_data_t3),
|
|
0x00030c14,
|
|
0xb9c8f1d6,
|
|
0xc0006fa8,
|
|
(uint8_t *)bes2300p_patch26_ins_data_t3}; // ld_acl_sched
|
|
|
|
const uint32_t bes2300p_patch27_ins_data_t3[] = {
|
|
0xf0234413, 0x63634378, 0x68094904, 0x4904b121,
|
|
0xfb016809, 0x63633300, 0xba5af62c,
|
|
|
|
0xc0007008, // sco_start_delay_flag
|
|
0xc000703c, // sco_anchor_start_add
|
|
0x0000000a,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch27 = {
|
|
27,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch27_ins_data_t3),
|
|
0x000334e0,
|
|
0xbd9af1d3,
|
|
0xc0007018,
|
|
(uint8_t *)bes2300p_patch27_ins_data_t3}; // ld_sco_start
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch28 = {
|
|
28, BTDRV_PATCH_ACT, 0, 0x00019f54, 0xbf00e00b, 0, NULL,
|
|
}; // lc_sync_ind
|
|
// send max_slot anyway
|
|
|
|
const uint32_t bes2300p_patch29_ins_data_t3[] = {
|
|
0xf8862001,
|
|
0xf8860060,
|
|
0xbf000061,
|
|
0xbba3f611,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch29 = {
|
|
29,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch29_ins_data_t3),
|
|
0x00018f1c,
|
|
0xbc62f1ee,
|
|
0xc00077e4,
|
|
(uint8_t *)bes2300p_patch29_ins_data_t3}; // ignore 0x5d sm
|
|
|
|
// for ble master update con param with large winsize
|
|
const uint32_t bes2300p_patch30_ins_data_t3[] = {
|
|
0x4630bf00, 0x109ef894, 0xf958f63f, 0x309cf894,
|
|
0x2271f240, 0x0003fb02, 0xbcf1f63f,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch30 = {
|
|
30,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch30_ins_data_t3),
|
|
0x000471e4,
|
|
0xbb08f1c0,
|
|
0xc00077f8,
|
|
(uint8_t *)bes2300p_patch30_ins_data_t3};
|
|
|
|
static const uint32_t best2300p_t3_ins_patch_config[] = {
|
|
31,
|
|
(uint32_t)&bes2300p_t3_ins_patch0,
|
|
(uint32_t)&bes2300p_t3_ins_patch1,
|
|
(uint32_t)&bes2300p_t3_ins_patch2,
|
|
(uint32_t)&bes2300p_t3_ins_patch3,
|
|
(uint32_t)&bes2300p_t3_ins_patch4,
|
|
(uint32_t)&bes2300p_t3_ins_patch5,
|
|
(uint32_t)&bes2300p_t3_ins_patch6,
|
|
(uint32_t)&bes2300p_t3_ins_patch7,
|
|
(uint32_t)&bes2300p_t3_ins_patch8,
|
|
(uint32_t)&bes2300p_t3_ins_patch9,
|
|
(uint32_t)&bes2300p_t3_ins_patch10,
|
|
(uint32_t)&bes2300p_t3_ins_patch11,
|
|
(uint32_t)&bes2300p_t3_ins_patch12,
|
|
(uint32_t)&bes2300p_t3_ins_patch13,
|
|
(uint32_t)&bes2300p_t3_ins_patch14,
|
|
(uint32_t)&bes2300p_t3_ins_patch15,
|
|
(uint32_t)&bes2300p_t3_ins_patch16,
|
|
(uint32_t)&bes2300p_t3_ins_patch17,
|
|
(uint32_t)&bes2300p_t3_ins_patch18,
|
|
(uint32_t)&bes2300p_t3_ins_patch19,
|
|
(uint32_t)&bes2300p_t3_ins_patch20,
|
|
(uint32_t)&bes2300p_t3_ins_patch21,
|
|
(uint32_t)&bes2300p_t3_ins_patch22,
|
|
(uint32_t)&bes2300p_t3_ins_patch23,
|
|
(uint32_t)&bes2300p_t3_ins_patch24,
|
|
(uint32_t)&bes2300p_t3_ins_patch25,
|
|
(uint32_t)&bes2300p_t3_ins_patch26,
|
|
(uint32_t)&bes2300p_t3_ins_patch27,
|
|
(uint32_t)&bes2300p_t3_ins_patch28,
|
|
(uint32_t)&bes2300p_t3_ins_patch29,
|
|
(uint32_t)&bes2300p_t3_ins_patch30,
|
|
};
|
|
#endif
|
|
|
|
#ifndef IBRT
|
|
|
|
/***************************************************************************
|
|
*
|
|
* instruction patch Information
|
|
*
|
|
* BT ROM Chip Version:1302 T2(CHIP ID=1)
|
|
*
|
|
* __BT_ONE_BRING_TWO__ function
|
|
*
|
|
****************************************************************************/
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch0 = {
|
|
0, BTDRV_PATCH_ACT, 0, 0x00030d48, 0xbf00bf00, 0,
|
|
NULL}; // set lsto when there is no connect
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch1 = {
|
|
1, BTDRV_PATCH_ACT, 0, 0x00019acc, 0xbf00e003, 0, NULL}; ////iocap rsp
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch2 = {
|
|
2, BTDRV_PATCH_ACT, 0, 0x0001a7a4, 0xbf00e003, 0,
|
|
NULL}; // pwer rsp in wrong state
|
|
|
|
const uint32_t bes2300p_patch3_ins_data_t2[] = {
|
|
0xf5fa4620, /*6900*/
|
|
0x285dfd4b, 0xf240d10e, 0x46215005, 0xf84cf5fa, /*6910*/
|
|
0xf8534b05, 0x46203026, 0x135ef893, 0xfcd0f5fa, /*6920*/
|
|
0xb9f3f617, 0xb9ebf617, 0xc0005cd8, /*692c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch3 = {
|
|
3,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch3_ins_data_t2),
|
|
0x0001dcfc,
|
|
0xbe00f1e8,
|
|
0xc0006900,
|
|
(uint8_t *)bes2300p_patch3_ins_data_t2}; // not accept
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch4 = {
|
|
4, BTDRV_PATCH_ACT, 0, 0x0002a4a4, 0xbf8c7f80, 0,
|
|
NULL}; // LD_ACL_STOP_NOTIF_BIT_OFF_THR
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch5 = {
|
|
5, BTDRV_PATCH_ACT, 0, 0x0002a7e4, 0x7f80f5b3, 0,
|
|
NULL}; // LD_ACL_STOP_NOTIF_BIT_OFF_THR
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch6 = {
|
|
6, BTDRV_PATCH_ACT, 0, 0x0002a69c, 0xbf947f80, 0,
|
|
NULL}; // LD_ACL_STOP_NOTIF_BIT_OFF_THR
|
|
|
|
const uint32_t bes2300p_patch7_ins_data_t2[] = {
|
|
0xd01e0fdb, /*6930*/
|
|
0x6307f44f, 0xf304fb03, 0x48168f6a, 0x93011810, /*6940*/
|
|
0x49154418, 0xfea0f644, 0x58fb4b14, 0x4301f3c3, /*6950*/
|
|
0xf1028f2a, 0xf5024250, 0xf2021205, 0x8f6942fc, /*6960*/
|
|
0x0241eb02, 0x440a9901, 0x600a490d, 0xf44fe010, /*6970*/
|
|
0xfb036307, 0x9301f304, 0x18184806, 0x8f6a4906, /*6980*/
|
|
0xfe82f644, 0x58fb4b05, 0x4381f3c3, 0xba27f62e, /*6990*/
|
|
0xba2df62e,
|
|
|
|
0xd02144fc, 0xc000593c, 0xd0220144, /*69a0*/
|
|
0xc000005c, /*69a4*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch7 = {
|
|
7,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch7_ins_data_t2),
|
|
0x00034d80,
|
|
0xbdd6f1d1,
|
|
0xc0006930,
|
|
(uint8_t *)bes2300p_patch7_ins_data_t2}; // ld_sco_frm_isr
|
|
|
|
const uint32_t bes2300p_patch8_ins_data_t2[] = {
|
|
0xf6052002, /*69a8*/
|
|
0x2802ffbf, 0xf898d110, /*69b0*/
|
|
0x230120b2, 0x4a074093, 0x21c0f8b2, 0x0303ea22, /*69c0*/
|
|
0x0341f3c3, 0xf8524a04, 0xbf003023, 0xbbecf625, /*69d0*/
|
|
0xbbeef625,
|
|
|
|
0xc0005d9c, // ld_env
|
|
0xc0000998, // ld_acl_env /*69dc*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch8 = {
|
|
8,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch8_ins_data_t2),
|
|
0x0002c188,
|
|
0xbc0ef1da,
|
|
0xc00069a8,
|
|
(uint8_t *)bes2300p_patch8_ins_data_t2}; // ld_event_timestamp_calculate
|
|
|
|
const uint32_t bes2300p_patch9_ins_data_t2[] = {
|
|
0xf8934b07, /*69e0*/
|
|
0xf0133084, 0xd0070f06, 0xf6364620, 0x4601fa4b, /*69f0*/
|
|
0xbf002400, 0xbbd2f635, 0xbb91f635,
|
|
|
|
0xc0006460, // llm_le_env /*6a00*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch9 = {
|
|
9,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch9_ins_data_t2),
|
|
0x0003c11c,
|
|
0xbc60f1ca,
|
|
0xc00069e0,
|
|
(uint8_t *)bes2300p_patch9_ins_data_t2}; // hci_le_set_adv_data_cmd_handler
|
|
|
|
const uint32_t bes2300p_patch10_ins_data_t2[] = {
|
|
0x123ff240, /*6a04*/
|
|
0xd006421a, 0x2b007aab, 0x2201d003, /*6a10*/
|
|
0x601a4b05, 0x2201e002, 0x601a4b03, 0xf240892b, /*6a20*/
|
|
0xbf00123f, 0xbc1af63e,
|
|
|
|
0xc0006a30, // le_wrong_packet
|
|
0x00000000, /*6a30*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch10 = {
|
|
10,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch10_ins_data_t2),
|
|
0x0004525c,
|
|
0xbbd2f1c1,
|
|
0xc0006a04,
|
|
(uint8_t *)bes2300p_patch10_ins_data_t2}; // lld_pdu_rx_handler
|
|
|
|
const uint32_t bes2300p_patch11_ins_data_t2[] = {
|
|
0xf894b952, /*6a34*/
|
|
0xf01330ae, 0xd1050f09, 0x209ff894, /*6a40*/
|
|
0x4a03b912, 0xb10a6812, 0xbc05f63f, 0xbc09f63f, /*6a50*/
|
|
|
|
0xc0006a30, /*6a54*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch11 = {
|
|
11,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch11_ins_data_t2),
|
|
0x00046248,
|
|
0xbbf4f1c0,
|
|
0xc0006a34,
|
|
(uint8_t *)bes2300p_patch11_ins_data_t2}; // lld_evt_restart
|
|
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch12 = // from bes2300p_t2_ibrt_ins_patch2
|
|
{12, BTDRV_PATCH_ACT, 0, 0x00007024, 0xbf00e011, 0,
|
|
NULL}; // dont call rwip_assert_err when assert error
|
|
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch13 = // from bes2300p_t2_ibrt_ins_patch4
|
|
{13, BTDRV_PATCH_ACT, 0, 0x0002be90, 0xbd702000, 0,
|
|
NULL}; // ld_check_if_need_protect_sniff retrun 0
|
|
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch14 = // from bes2300p_t2_ibrt_ins_patch9
|
|
{
|
|
14, BTDRV_PATCH_ACT, 0, 0x0002d82c, 0x2b006013, 0, NULL,
|
|
}; // ld_acl_rsw_rx
|
|
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch15 = // from bes2300p_t2_ibrt_ins_patch10
|
|
{
|
|
15, BTDRV_PATCH_ACT, 0, 0x0002fe60, 0xbf00e001, 0, NULL,
|
|
}; // ld_acl_flow_on
|
|
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch16 = // from bes2300p_t2_ibrt_ins_patch12
|
|
{16, BTDRV_PATCH_ACT, 0, 0x0002a41c, 0xbf000f01, 0,
|
|
NULL}; // mode == SYNC2_SCO_MODE
|
|
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch17 = // from bes2300p_t2_ibrt_ins_patch17
|
|
{
|
|
17, BTDRV_PATCH_ACT,
|
|
0,
|
|
0x00007010, // a0007010
|
|
0xb9bef000, // jump a0007390
|
|
0, NULL,
|
|
}; // DEF_IRQHandler
|
|
|
|
const uint32_t bes2300p_patch18_ins_data_t2[] = {
|
|
0x4681b083, /*6b30*/
|
|
0x4b022200, 0x2020f843, 0xbddcf623, 0xc0006b44,
|
|
0x00000000, 0x00000000, 0x00000000, /*6b4c*/
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch18 = // from bes2300p_t2_ibrt_ins_patch22
|
|
{18,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch18_ins_data_t2),
|
|
0x0002a6f4,
|
|
0xba1cf1dc,
|
|
0xc0006b30,
|
|
(uint8_t *)bes2300p_patch18_ins_data_t2}; // sync clear count
|
|
|
|
const uint32_t bes2300p_patch19_ins_data_t2[] = {
|
|
/*6ba0*/ 0xbf0080c6,
|
|
/*6ba4*/ 0x71022200,
|
|
/*6ba8*/ 0xbb2af619, // jump a0020200
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch19 = // from bes2300p_t2_ibrt_ins_patch29
|
|
{19,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch19_ins_data_t2),
|
|
0x000201f8,
|
|
0xbcd2f1e6, // jump a00201f8 -> a0206ba0
|
|
0xc0006ba0,
|
|
(uint8_t *)
|
|
bes2300p_patch19_ins_data_t2}; // KE_MSG_HANDLER(lc_op_loc_sniff_req,
|
|
// void)
|
|
|
|
const uint32_t bes2300p_patch20_ins_data_t2[] = {
|
|
/*6bac*/ 0x46286825,
|
|
/*6bb0*/ 0x303ef895,
|
|
/*6bb4*/ 0xd0012b02,
|
|
/*6bb8*/ 0xbda2f622, // jump a0029700
|
|
/*6bbc*/ 0xbf002300,
|
|
/*6bc0*/ 0x303ef885,
|
|
/*6bc4*/ 0xfea6f622, // call a0029914
|
|
/*6bc8*/ 0xbdc1f622, // jump a002974e
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch20 = // from bes2300p_t2_ibrt_ins_patch30
|
|
{20,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch20_ins_data_t2),
|
|
0x000296fc,
|
|
0xba56f1dd, // jump a00296fc -> a0206bac
|
|
0xc0006bac,
|
|
(uint8_t *)bes2300p_patch20_ins_data_t2}; // ld_pscan_frm_cbk
|
|
|
|
const uint32_t bes2300p_patch21_ins_data_t2[] = {
|
|
0x4620461d, /*6d00*/
|
|
0x463a4629, 0xf5f94633, 0xbdf8fc2b, /*6d0c*/
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch21 = // from bes2300p_t2_ibrt_ins_patch0
|
|
{21,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch21_ins_data_t2),
|
|
0x000070ec,
|
|
0xbe08f1ff,
|
|
0xc0006d00,
|
|
(uint8_t *)bes2300p_patch21_ins_data_t2}; // assert warn
|
|
|
|
const uint32_t bes2300p_patch22_ins_data_t2[] = {
|
|
0x4630461f, /*6d14*/
|
|
0x462a4639, 0xf5f94623, 0xbdf8fc21, /*6d20*/
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch22 = // from bes2300p_t2_ibrt_ins_patch1
|
|
{22,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch22_ins_data_t2),
|
|
0x00007070,
|
|
0xbe50f1ff,
|
|
0xc0006d14,
|
|
(uint8_t *)bes2300p_patch22_ins_data_t2}; // assert param
|
|
|
|
const uint32_t bes2300p_patch23_ins_data_t2[] = {
|
|
0x2a140c92, /*6d30*/
|
|
0x2214bf28, 0xbf004691, 0xbc44f623, /*6d3c*/
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch23 = // from bes2300p_t2_ibrt_ins_patch40
|
|
{23,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch23_ins_data_t2),
|
|
0x0002a5c4,
|
|
0xbbb4f1dc,
|
|
0xc0006d30,
|
|
(uint8_t *)bes2300p_patch23_ins_data_t2}; // max_drift limit
|
|
|
|
const uint32_t bes2300p_patch24_ins_data_t2[] = {
|
|
/*6d9c*/ 0x4b179a0b,
|
|
/*6da0*/ 0xd023429a,
|
|
/*6da4*/ 0x20b5f894,
|
|
/*6da8*/ 0xb9fab2d2,
|
|
/*6dac*/ 0xf9b4b22e,
|
|
/*6db0*/ 0x1b9b3098,
|
|
/*6db4*/ 0xf9b24a0f,
|
|
/*6db8*/ 0x42932000,
|
|
/*6dbc*/ 0x4251da05,
|
|
/*6dc0*/ 0xdd02428b,
|
|
/*6dc4*/ 0x7088f8d4,
|
|
/*6dc8*/ 0x4293e00f,
|
|
/*6dcc*/ 0xf8d4dd05,
|
|
/*6dd0*/ 0x3f017088,
|
|
/*6dd4*/ 0x4778f027,
|
|
/*6dd8*/ 0x4252e007,
|
|
/*6ddc*/ 0xda044293,
|
|
/*6de0*/ 0x7088f8d4,
|
|
/*6de4*/ 0xf0273701,
|
|
/*6de8*/ 0xbf004778,
|
|
/*6dec*/ 0x708cf8c4,
|
|
/*6df0*/ 0xbce4f623, // jump a002a7bc
|
|
/*6df4*/ 0xc0006df8,
|
|
/*6df8*/ 0x00000032, // 50
|
|
/*6dfc*/ 0xa003477b, // ld_acl_sniff_frm_isr lr
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch24 = // from bes2300p_t2_ibrt_ins_patch46
|
|
{24,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch24_ins_data_t2),
|
|
0x0002a7b8,
|
|
0xbaf0f1dc, // jump a002a7b8 -> a0206d9c
|
|
0xc0006d9c,
|
|
(uint8_t *)bes2300p_patch24_ins_data_t2}; // ld_acl_rx_sync clk_off cal
|
|
// active mode
|
|
|
|
const uint32_t bes2300p_patch25_ins_data_t2[] = {
|
|
/*6e10*/ 0xbf00669a,
|
|
/*6e14*/ 0x66da466a, // mov r2, sp; str r2, [r3, #108]
|
|
/*6e18*/ 0x8208f3ef, // mrs r2, MSP
|
|
/*6e1c*/ 0xbf00671a, // str r2, [r3, #112]
|
|
/*6e20*/ 0x8209f3ef, // mrs r2, PSP
|
|
/*6e24*/ 0xbf00675a, // str r2, [r3, #116]
|
|
/*6e28*/ 0xbf00bf00,
|
|
/*6e2c*/ 0xbf00bf00,
|
|
/*6e30*/ 0xbf00bf00,
|
|
/*6e34*/ 0xbf00bf00,
|
|
/*6e38*/ 0xbf00bf00,
|
|
/*6e3c*/ 0xbf00bf00,
|
|
/*6e40*/ 0xbf00bf00,
|
|
/*6e44*/ 0xbf00bf00,
|
|
/*6e48*/ 0xbf00bf00,
|
|
/*6e4c*/ 0xbf00bf00,
|
|
/*6e50*/ 0xba90f600, // jump a0206e50 -> a0007374
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch25 = // from bes2300p_t2_ibrt_ins_patch15
|
|
{25,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch25_ins_data_t2),
|
|
0x00007360,
|
|
0xbd56f1ff, // jump a0007360 -> a0206e10
|
|
0xc0006e10,
|
|
(uint8_t *)bes2300p_patch25_ins_data_t2}; // bt_assert_crash_dump
|
|
|
|
#define PATCH_IN_EXTRA_SPACE 1
|
|
#if PATCH_IN_EXTRA_SPACE
|
|
const uint32_t bes2300p_patch26_ins_data_t2[] = {
|
|
0xd8092b01, /*70d0*/
|
|
0xfb03236e, 0x4a04f308, 0xf4135a9b, 0xd1016f00, /*70e0*/
|
|
0xb919f629, 0xb9aef629, 0xd0211200, /*70ec*/
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch26 = // from bes2300p_t2_ibrt_ins_patch44
|
|
{26,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch26_ins_data_t2),
|
|
0x00030314,
|
|
0xbedcf1d6,
|
|
0xc00070d0,
|
|
(uint8_t *)bes2300p_patch26_ins_data_t2}; // lmp tx for tx desc error
|
|
|
|
const uint32_t bes2300p_patch27_ins_data_t2[] = {
|
|
0xfeecf5f8, /*7300*/
|
|
0xbf00bf00, 0x8310f3ef, 0x0401f013, 0xb672d108, /*7310*/
|
|
0xff22f5f8, 0xbf30b110, 0xd1ef2c00, 0xe7edb662, /*7320*/
|
|
0xff1af5f8, 0xd1f62800, 0xbf00e7e8, /*732c*/
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch27 = // from bes2300p_t2_ibrt_ins_patch13
|
|
{27,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch27_ins_data_t2),
|
|
0x0000721c,
|
|
0xb870f200,
|
|
0xc0007300,
|
|
(uint8_t *)bes2300p_patch27_ins_data_t2};
|
|
|
|
const uint32_t bes2300p_patch28_ins_data_t2[] = {
|
|
0xf885b2db, /*7338*/
|
|
0xf89530bd, 0x2a0220b4, /*7340*/
|
|
0xb98bd114, 0xf8534b0a, 0xf6430024, 0xf895fd15, /*7350*/
|
|
0x2b0430b5, 0x4620d103, 0xf6232116, 0x4620fc61, /*7360*/
|
|
0xf6242116, 0xbf00f961, 0xbc6bf62d, 0xbc53f62d, /*7370*/
|
|
0xc0000998, /*7374*/
|
|
};
|
|
const BTDRV_PATCH_STRUCT
|
|
bes2300p_t2_ins_patch28 = // from bes2300p_t2_ibrt_ins_patch15
|
|
{28,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch28_ins_data_t2),
|
|
0x00034c14,
|
|
0xbb90f1d2,
|
|
0xc0007338,
|
|
(uint8_t *)bes2300p_patch28_ins_data_t2}; // no disconnect evt
|
|
#endif /* PATCH_IN_EXTRA_SPACE */
|
|
|
|
/////2300p t2 patch
|
|
static const uint32_t best2300p_t2_ins_patch_config[] = {
|
|
29,
|
|
(uint32_t)&bes2300p_t2_ins_patch0,
|
|
(uint32_t)&bes2300p_t2_ins_patch1,
|
|
(uint32_t)&bes2300p_t2_ins_patch2,
|
|
(uint32_t)&bes2300p_t2_ins_patch3,
|
|
(uint32_t)&bes2300p_t2_ins_patch4,
|
|
(uint32_t)&bes2300p_t2_ins_patch5,
|
|
(uint32_t)&bes2300p_t2_ins_patch6,
|
|
(uint32_t)&bes2300p_t2_ins_patch7,
|
|
(uint32_t)&bes2300p_t2_ins_patch8,
|
|
(uint32_t)&bes2300p_t2_ins_patch9,
|
|
(uint32_t)&bes2300p_t2_ins_patch10,
|
|
(uint32_t)&bes2300p_t2_ins_patch11,
|
|
(uint32_t)&bes2300p_t2_ins_patch12,
|
|
(uint32_t)&bes2300p_t2_ins_patch13,
|
|
(uint32_t)&bes2300p_t2_ins_patch14,
|
|
(uint32_t)&bes2300p_t2_ins_patch15,
|
|
(uint32_t)&bes2300p_t2_ins_patch16,
|
|
(uint32_t)&bes2300p_t2_ins_patch17,
|
|
(uint32_t)&bes2300p_t2_ins_patch18,
|
|
(uint32_t)&bes2300p_t2_ins_patch19,
|
|
(uint32_t)&bes2300p_t2_ins_patch20,
|
|
(uint32_t)&bes2300p_t2_ins_patch21,
|
|
(uint32_t)&bes2300p_t2_ins_patch22,
|
|
(uint32_t)&bes2300p_t2_ins_patch23,
|
|
(uint32_t)&bes2300p_t2_ins_patch24,
|
|
(uint32_t)&bes2300p_t2_ins_patch25,
|
|
(uint32_t)&bes2300p_t2_ins_patch26,
|
|
(uint32_t)&bes2300p_t2_ins_patch27,
|
|
(uint32_t)&bes2300p_t2_ins_patch28,
|
|
};
|
|
|
|
#else
|
|
/***************************************************************************
|
|
*
|
|
* instruction patch Information
|
|
*
|
|
* BT ROM Chip Version:1302 T2 (CHIP ID=1)
|
|
*
|
|
* IBRT function
|
|
*
|
|
* patch 3: 0xC0006900--->0xC0006910
|
|
* patch 45:0xC0006930--->0xC0006940
|
|
* patch 5: 0xC000694c--->0xC0006980
|
|
* patch 14: 0xC000698c--->0xC00069cc
|
|
* patch 16: 0xC0006a18--->0xC0006a28//REMOVE
|
|
* patch 19: 0xC0006a2c--->0xC0006a9c
|
|
* patch 20: 0xC0006aa4--->0xC0006ab0
|
|
* patch 21: 0xC0006ab4--->0xC0006ad0
|
|
* patch 2: 0xC0006ae8--->0xC0006b04
|
|
* patch 22: 0xC0006b30--->0xC0006b4c
|
|
* patch 22: 0xC0006b54--->0xC0006b7c
|
|
* patch 29: 0xC0006ba0--->0xC0006ba8
|
|
* patch 30: 0xC0006bac--->0xC0006bc8
|
|
* patch 32: 0xC0006be8--->0xC0006c14
|
|
* patch 33: 0xC0006c1c--->0xC0006c2c
|
|
* patch 34: 0xC0006c30--->0xC0006c44
|
|
* patch 35: 0xC0006c48--->0xC0006c84
|
|
* patch 36: 0xC0006c88--->0xC0006c98
|
|
* patch 37: 0xC0006ca0--->0xC0006cb8
|
|
* patch 38: 0xC0006cc0--->0xC0006cf8
|
|
* patch 0: 0xC0006d00--->0xC0006d0c
|
|
* patch 1: 0xC0006d14--->0xC0006d20
|
|
* patch 44: 0xC0006d24--->0xC0006d2c (via ble)
|
|
* patch 40: 0xC0006d30--->0xC0006d40
|
|
* patch 45: 0xC0006d50--->0xC0006d90
|
|
* patch 46: 0xC0006d9c--->0xC0006dfc
|
|
* patch 47: 0xC0006e00--->0xC0006e28
|
|
* patch 48: 0xC0006e30--->0xC0006e98
|
|
* patch 49: 0xC0006ec0--->0xC0006ed0
|
|
* patch 50: 0xC0006ed8--->0xC0006f2c
|
|
* patch 51: 0xC0006f30--->0xC0006f5c
|
|
* patch 53: 0xC0006f74--->0xC0006f8c
|
|
* patch 25: 0xC0006f90--->0xc0007074
|
|
* patch 55: 0xC00070a4--->0xC00070c4
|
|
* patch 44: 0xC00070d0--->0xC00070ec
|
|
* sniffer_filter_tab: 0xC00070f4--->0xC0007130
|
|
* patch 7: 0xC0007138--->0xC0007164
|
|
* patch 23: 0xC0007180--->0xC000720c
|
|
* patch 17: 0xC00072b4--->0xC00072ec
|
|
* patch 13: 0xC0007300--->0xC0007330
|
|
* patch 15: 0xC0007338--->0xC0007374
|
|
* patch 31: 0xC000737c--->0xC0007a4
|
|
* patch 54: 0xC00073cc--->0XC00074E4(new)
|
|
****************************************************************************/
|
|
//#define ECC_LL_MONITOR
|
|
|
|
const uint32_t bes2300p_patch0_ibrt_ins_data_t2[] = {
|
|
/*6d00*/ 0x4673b408,
|
|
/*6d04*/ 0x0f20f013,
|
|
/*6d08*/ 0xbc08d002,
|
|
/*6d0c*/ 0xb9e5f600, // jump a00070da
|
|
/*6d10*/ 0xbf00bc08,
|
|
/*6d14*/ 0x4b014699,
|
|
/*6d18*/ 0xbaeaf600, // jump a00072f0
|
|
/*6d1c*/ 0xc0000050,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch0 = {
|
|
0,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch0_ibrt_ins_data_t2),
|
|
0x000072ec,
|
|
0xbd08f1ff, // jump a00072ec -> a0206d00
|
|
0xc0006d00,
|
|
(uint8_t *)bes2300p_patch0_ibrt_ins_data_t2}; // assert warn, assert param
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch1 = {
|
|
1, BTDRV_PATCH_ACT,
|
|
0, 0x0001ff2c,
|
|
0xb81af000, // jump a001ff2c -> a001ff64
|
|
0, NULL}; // KE_MSG_HANDLER(lc_op_loc_unsniff_req)
|
|
|
|
#if 0
|
|
const uint32_t bes2300p_patch2_ibrt_ins_data_t2[] =
|
|
{
|
|
0x460a4603,/*6ae8*/
|
|
0x46194802,
|
|
0xfcb6f5fc,
|
|
0xbf00bd38,
|
|
0xc0006afc,/*6af8*/
|
|
0x73617243,
|
|
0x73252c68,
|
|
0x0064252c,/*6b04*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch2 =
|
|
{
|
|
2,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch2_ibrt_ins_data_t2),
|
|
0x00007018,
|
|
0xbd66f1ff,
|
|
0xc0006ae8,
|
|
(uint8_t *)bes2300p_patch2_ibrt_ins_data_t2
|
|
};//"Crash,%s,%d", file, line
|
|
#elif 1
|
|
#if 0
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch2 =
|
|
{
|
|
2,
|
|
BTDRV_PATCH_ACT,
|
|
0,
|
|
0x00007024,
|
|
0xbf00e011,
|
|
0,
|
|
NULL
|
|
};//dont call rwip_assert_err when assert error
|
|
#else
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch2 = {
|
|
2, BTDRV_PATCH_ACT,
|
|
0,
|
|
0x0002d8b0, // 0xa002d8b0
|
|
0xbf00bf00, 0,
|
|
NULL}; // ld_acl_rsw_frm_isr
|
|
#endif
|
|
#else
|
|
const uint32_t bes2300p_patch2_ibrt_ins_data_t2[] = {
|
|
0xfc12f631, /*7780*/
|
|
0xb1337843, 0x0518f100, 0xf5fb4628, 0x2813fed9,
|
|
0xf605d804, 0xbf00fba1, 0xba24f60c, 0xba23f60c /*77a0*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch2 = {
|
|
2,
|
|
BTDRV_PATCH_INACT,
|
|
sizeof(bes2300p_patch2_ibrt_ins_data_t2),
|
|
0x00013be4,
|
|
0xbdccf1f3,
|
|
0xc0007780,
|
|
(uint8_t *)bes2300p_patch2_ibrt_ins_data_t2}; // lc_afh_set use mobile afh
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch3_ibrt_ins_data_t2[] = {
|
|
0xd1052800, /*6900*/
|
|
0x000cf1aa, 0xf97af5fa, 0xbc48f61a, 0xbbd2f61a, /*6910*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch3 = {
|
|
3,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch3_ibrt_ins_data_t2),
|
|
0x000210b4,
|
|
0xbc24f1e5,
|
|
0xc0006900,
|
|
(uint8_t *)bes2300p_patch3_ibrt_ins_data_t2}; // lmp filter free heap
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch4 = {
|
|
4, BTDRV_PATCH_ACT, 0, 0x0002be90, 0xbd702000, 0,
|
|
NULL}; // ld_check_if_need_protect_sniff retrun 0
|
|
|
|
#if 0
|
|
const uint32_t bes2300p_patch5_ibrt_ins_data_t2[] =
|
|
{
|
|
/*6950*/ 0x0f01f013,
|
|
/*6954*/ 0x4b06d00a,
|
|
/*6958*/ 0x104ff893,
|
|
/*695c*/ 0xd8052902,
|
|
/*6960*/ 0x2a027a9a,
|
|
/*6964*/ 0xbf00d802,
|
|
/*6968*/ 0xbc73f632,
|
|
/*696c*/ 0xbf00bd08,
|
|
/*6970*/ 0xc00063c8,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch5 =
|
|
{
|
|
5,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch5_ibrt_ins_data_t2),
|
|
0x0003924c,
|
|
0xbb80f1cd, // jump a00384dc -> a0206950
|
|
0xc0006950,
|
|
(uint8_t *)bes2300p_patch5_ibrt_ins_data_t2
|
|
}; //protect link id when send bitoffset
|
|
|
|
const uint32_t bes2300p_patch6_ibrt_ins_data_t2[] =
|
|
{
|
|
/*6978*/ 0x5023f852,
|
|
/*697c*/ 0xd0012d00,
|
|
/*6980*/ 0xbc04f611,// jump a0206980 -> a001818c
|
|
/*6984*/ 0xbd382000,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch6 =
|
|
{
|
|
6,
|
|
BTDRV_PATCH_INACT,
|
|
sizeof(bes2300p_patch6_ibrt_ins_data_t2),
|
|
0x00018188,
|
|
0xbbf6f1ee, // jump a0018188 -> a0206978
|
|
0xc0006978,
|
|
(uint8_t *)bes2300p_patch6_ibrt_ins_data_t2
|
|
};//protect null ptr when send afh
|
|
#else
|
|
const uint32_t bes2300p_patch5_ibrt_ins_data_t2[] = {
|
|
/*694c*/ 0xf632b1c0,
|
|
/*6950*/ 0xb1a8fc1b,
|
|
/*6954*/ 0x70b2f898,
|
|
/*6958*/ 0xfc2af632,
|
|
/*695c*/ 0xd10d4287,
|
|
/*6960*/ 0xfbfaf634,
|
|
/*6964*/ 0xbf142804,
|
|
/*6968*/ 0x22012200,
|
|
/*696c*/ 0x46294640,
|
|
/*6970*/ 0xf6259b03,
|
|
/*6974*/ 0x2001fae5,
|
|
/*6978*/ 0xbecef625,
|
|
/*697c*/ 0xbc6cf625,
|
|
/*6980*/ 0xbcc9f625,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch5 = {
|
|
5,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch5_ibrt_ins_data_t2),
|
|
0x0002c230,
|
|
0xbb8cf1da, // jump a002c230 -> a020694c
|
|
0xc000694c,
|
|
(uint8_t *)bes2300p_patch5_ibrt_ins_data_t2}; // ld_cal_timestamp
|
|
|
|
#if 1
|
|
const uint32_t bes2300p_patch6_ibrt_ins_data_t2[] = {
|
|
0x79ab4688, 0x6383ea6f, 0x4578f023, 0xf8d39b09,
|
|
0x9906308c, 0x402b440b, 0xbf004641, 0xbb87f62c,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch6 = {
|
|
6,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch6_ibrt_ins_data_t2),
|
|
0x000330f4,
|
|
0xbc6ef1d3, // jump a00330f4 -> a02069d4
|
|
0xc00069d4,
|
|
(uint8_t *)bes2300p_patch6_ibrt_ins_data_t2}; // sco param init
|
|
#else
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch6 = {
|
|
6, BTDRV_PATCH_ACT,
|
|
0,
|
|
0x00007010, // a0007010
|
|
0xb9bef000, // jump a0007390
|
|
0, NULL,
|
|
}; // DEF_IRQHandler
|
|
#endif
|
|
|
|
#endif
|
|
const uint32_t bes2300p_patch7_ibrt_ins_data_t2[] = {
|
|
/*7138*/ 0x28024604,
|
|
/*713c*/ 0xf89ad812,
|
|
/*7140*/ 0x28020046,
|
|
/*7144*/ 0xf610d803,
|
|
/*7148*/ 0x2800fb1b,
|
|
/*714c*/ 0x2112d106,
|
|
/*7150*/ 0xf61b20ff,
|
|
/*7154*/ 0x2000fec9,
|
|
/*7158*/ 0xbb0af633,
|
|
/*715c*/ 0xbf004620,
|
|
/*7160*/ 0xba4ef633,
|
|
/*7164*/ 0xbad8f633,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch7 = {
|
|
7,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch7_ibrt_ins_data_t2),
|
|
0x0003a5f8,
|
|
0xbd9ef1cc, // jump a003a5f8 -> a0207138
|
|
0xc0007138,
|
|
(uint8_t *)
|
|
bes2300p_patch7_ibrt_ins_data_t2}; // start simu link check linkid
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch8 = {
|
|
8, BTDRV_PATCH_ACT, 0, 0x0002e720, 0xf8a62308, 0, NULL,
|
|
}; // ld_acl_start t_poll
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch9 = {
|
|
9, BTDRV_PATCH_ACT, 0, 0x0002d82c, 0x2b006013, 0, NULL,
|
|
}; // ld_acl_rsw_rx
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch10 = {
|
|
10, BTDRV_PATCH_ACT, 0, 0x0002fe60, 0xbf00e001, 0, NULL,
|
|
}; // ld_acl_flow_on
|
|
|
|
#ifdef ECC_LL_MONITOR
|
|
////patch 11 12 13 used for ecc count by set it to ll monitor parameter
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch11 = {
|
|
11, BTDRV_PATCH_ACT, 0, 0x0002dc94, 0x7000f400, 0, NULL}; ////wrong flag
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch12 = {
|
|
12, BTDRV_PATCH_ACT, 0, 0x0002dc98, 0x2800bf00, 0, NULL};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch13 = {
|
|
13, BTDRV_PATCH_ACT, 0, 0x0002f78c, 0x46288113, 0, NULL};
|
|
#else
|
|
const uint32_t bes2300p_patch11_ibrt_ins_data_t2[] = {
|
|
0x0034f104, 0x220a4649, 0xfd86f644, 0xf632b940, 0x2801fa39, 0xf632d104,
|
|
0x2800fb0d, 0xbf00d104, 0x00c5f894, 0xb97cf62b, 0xb9eaf62b,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch11 = {
|
|
11,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch11_ibrt_ins_data_t2),
|
|
0x00031e70,
|
|
0xbe70f1d4,
|
|
0xc0006b54,
|
|
(uint8_t *)bes2300p_patch11_ibrt_ins_data_t2}; // filter afh map
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch12 = {
|
|
12, BTDRV_PATCH_ACT, 0, 0x0002a41c, 0xbf000f01, 0,
|
|
NULL}; // mode == SYNC2_SCO_MODE
|
|
|
|
const uint32_t bes2300p_patch13_ibrt_ins_data_t2[] = {
|
|
0xfeecf5f8, 0xbf00bf00, 0x8310f3ef, 0x0401f013, 0xb672d108, 0xff22f5f8,
|
|
0xbf30b110, 0xd1ef2c00, 0xe7edb662, 0xff1af5f8, 0xd1f62800, 0xbf00e7e8,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch13 = {
|
|
13,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch13_ibrt_ins_data_t2),
|
|
0x0000721c,
|
|
0xb870f200,
|
|
0xc0007300,
|
|
(uint8_t *)bes2300p_patch13_ibrt_ins_data_t2};
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch14_ibrt_ins_data_t2[] = {
|
|
/*698c*/ 0x4604b510,
|
|
/*6990*/ 0xfc0ef632,
|
|
/*6994*/ 0xd00542a0,
|
|
/*6998*/ 0x7a984b03,
|
|
/*699c*/ 0xbf181b00,
|
|
/*69a0*/ 0xbd102001,
|
|
/*69a4*/ 0xbd102000,
|
|
/*69a8*/ 0xc00063c8,
|
|
/*69ac*/ 0x461f7a9e,
|
|
/*69b0*/ 0x46104625,
|
|
/*69b4*/ 0xffeaf7ff,
|
|
/*69b8*/ 0xd1072800,
|
|
/*69bc*/ 0x46392004,
|
|
/*69c0*/ 0xfc74f634,
|
|
/*69c4*/ 0x462c2003,
|
|
/*69c8*/ 0xbd68f634,
|
|
/*69cc*/ 0xbf00bdf8,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch14 = {
|
|
14,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch14_ibrt_ins_data_t2),
|
|
0x0003b498,
|
|
0xba88f1cb, // jump a003b498 -> a02069ac
|
|
0xc000698c,
|
|
(uint8_t *)
|
|
bes2300p_patch14_ibrt_ins_data_t2}; // protect idx when snoop disconnect
|
|
|
|
#if 0
|
|
const uint32_t bes2300p_patch15_ibrt_ins_data_t2[] =
|
|
{
|
|
/*69D0*/ 0xbf00669a,
|
|
/*69D4*/ 0x66da466a,//mov r2, sp; str r2, [r3, #108]
|
|
/*69D8*/ 0x8208f3ef,//mrs r2, MSP
|
|
/*69DC*/ 0xbf00671a,//str r2, [r3, #112]
|
|
/*69E0*/ 0x8209f3ef,//mrs r2, PSP
|
|
/*69E4*/ 0xbf00675a,//str r2, [r3, #116]
|
|
/*69E8*/ 0xbf00bf00,
|
|
/*69EC*/ 0xbf00bf00,
|
|
/*69F0*/ 0xbf00bf00,
|
|
/*69F4*/ 0xbf00bf00,
|
|
/*69F8*/ 0xbf00bf00,
|
|
/*69FC*/ 0xbf00bf00,
|
|
/*6A00*/ 0xbf00bf00,
|
|
/*6A04*/ 0xbf00bf00,
|
|
/*6A08*/ 0xbf00bf00,
|
|
/*6A0C*/ 0xbf00bf00,
|
|
/*6A10*/ 0xbcb0f600,//jump a0206a10 -> a0007374
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch15 =
|
|
{
|
|
15,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch15_ibrt_ins_data_t2),
|
|
0x00007360,
|
|
0xbb36f1ff, // jump a0007360 -> a02069d0
|
|
0xc00069d0,
|
|
(uint8_t *)bes2300p_patch15_ibrt_ins_data_t2
|
|
};//bt_assert_crash_dump
|
|
#else
|
|
|
|
const uint32_t bes2300p_patch15_ibrt_ins_data_t2[] = {
|
|
0xf885b2db, /*7338*/
|
|
0xf89530bd, 0x2a0220b4, 0xb98bd114, 0xf8534b0a, /*7348*/
|
|
0xf6430024, 0xf895fd15, 0x2b0430b5, 0x4620d103, /*7358*/
|
|
0xf6232116, 0x4620fc61, 0xf6242116, 0xbf00f961, /*7368*/
|
|
0xbc6bf62d, 0xbc53f62d, 0xc0000998, /*7374*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch15 = {
|
|
15,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch15_ibrt_ins_data_t2),
|
|
0x00034c14,
|
|
0xbb90f1d2,
|
|
0xc0007338,
|
|
(uint8_t *)bes2300p_patch15_ibrt_ins_data_t2}; // no disconnect evt
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch16_ibrt_ins_data_t2[] = {
|
|
0x71ab2300, 0x0000f8d9, 0x380cb110, 0xf96cf5fa, 0xbf002300, 0xbce2f608,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch16 = {
|
|
16,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch16_ibrt_ins_data_t2),
|
|
0x0000f2f0,
|
|
0xbb12f1f7,
|
|
0xc0006918,
|
|
(uint8_t *)
|
|
bes2300p_patch16_ibrt_ins_data_t2}; // lm_page_scan_end_ind free msg
|
|
|
|
#if 0
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch17 =
|
|
{
|
|
17,
|
|
BTDRV_PATCH_ACT,
|
|
0,
|
|
0x00007010, //a0007010
|
|
0xb9bef000, //jump a0007390
|
|
0,
|
|
NULL,
|
|
};//DEF_IRQHandler
|
|
#elif 1
|
|
const uint32_t bes2300p_patch17_ibrt_ins_data_t2[] = {
|
|
0x4605b538, /*72b4*/
|
|
0xfe76f631, 0x7a834604, 0x2f15ebb3, 0x7803d10a, /*72c4*/
|
|
0xd1072b02, 0xff5cf631, 0xf894b120, 0x2101004f, /*72d4*/
|
|
0xfc78f61d, 0xbf00bd38, 0x3312f886, 0xbf004620, /*72e4*/
|
|
0xffe4f7ff, 0xbcfaf614,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch17 = {
|
|
17,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch17_ibrt_ins_data_t2),
|
|
0x0001bce0,
|
|
0xbafef1eb,
|
|
0xc00072b4,
|
|
(uint8_t *)bes2300p_patch17_ibrt_ins_data_t2}; // send unsniff cmd
|
|
|
|
#else
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch17 = {
|
|
17, BTDRV_PATCH_ACT, 0, 0x0002e674, 0x53faf44f, 0, NULL,
|
|
}; // lc start lsto 5s
|
|
#endif
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch18 = {
|
|
18, BTDRV_PATCH_ACT, 0, 0x0002f264, 0xbf00e001, 0, NULL,
|
|
}; // close tx seq force set after start IBRT
|
|
|
|
const uint32_t bes2300p_patch19_ibrt_ins_data_t2[] = {
|
|
0xd01e0fdb, /*6a2c*/
|
|
0x6307f44f, 0xf304fb03, 0x48168f6a, 0x93011810, 0x49154418, 0xfe22f644,
|
|
0x58fb4b14, 0x4301f3c3, 0xf1028f2a, 0xf5024250, 0xf2021205, 0x8f6942fc,
|
|
0x0241eb02, 0x440a9901, 0x600a490d, 0xf44fe010, 0xfb036307, 0x9301f304,
|
|
0x18184806, 0x8f6a4906, 0xfe04f644, 0x58fb4b05, 0x4381f3c3, 0xb9a9f62e,
|
|
0xb9aff62e, 0xd02144fc, 0xc000593c, 0xd0220144, 0xc000005c, /*6a9c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch19 = {
|
|
19,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch19_ibrt_ins_data_t2),
|
|
0x00034d80,
|
|
0xbe54f1d1,
|
|
0xc0006a2c,
|
|
(uint8_t *)bes2300p_patch19_ibrt_ins_data_t2}; // ld_sco_frm_isr
|
|
|
|
const uint32_t bes2300p_patch20_ibrt_ins_data_t2[] = {
|
|
0xbf002004, /*6aa4*/
|
|
0xfb5cf634, /*6aa8*/
|
|
0xb8c4f618, /*6aac*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch20 = {
|
|
20,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch20_ibrt_ins_data_t2),
|
|
0x0001ec10,
|
|
0xbf48f1e7,
|
|
0xc0006aa4,
|
|
(uint8_t *)bes2300p_patch20_ibrt_ins_data_t2}; // ibrt sco status update
|
|
|
|
const uint32_t bes2300p_patch21_ibrt_ins_data_t2[] = {
|
|
0xf6414631, 0x4620fc1b, 0xf6064631, 0x4a03faaf,
|
|
0xf4436813, 0x60130380, 0xbdddf633, 0xd0220468,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch21 = {
|
|
21,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch21_ibrt_ins_data_t2),
|
|
0x0003a684,
|
|
0xba16f1cc, // jump a003a684 -> a0206ab4
|
|
0xc0006ab4,
|
|
(uint8_t *)
|
|
bes2300p_patch21_ibrt_ins_data_t2}; // register address at LM layer and
|
|
// open fa en register
|
|
|
|
#if 0
|
|
const uint32_t bes2300p_patch22_ibrt_ins_data_t2[] =
|
|
{
|
|
0x4681b083,/*6b30*/
|
|
0x4b022200,
|
|
0x2020f843,
|
|
0xbddcf623,
|
|
0xc0006b44,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,/*6b4c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch22 =
|
|
{
|
|
22,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch22_ibrt_ins_data_t2),
|
|
0x0002a6f4,
|
|
0xba1cf1dc,
|
|
0xc0006b30,
|
|
(uint8_t *)bes2300p_patch22_ibrt_ins_data_t2
|
|
};//sync clear count
|
|
#else
|
|
const uint32_t bes2300p_patch22_ibrt_ins_data_t2[] = {
|
|
0x4681b083, 0x4b042200, 0x2020f843, 0x601a4b0d,
|
|
0x601a4b0d, 0xb8b0f623, 0xc000759c,
|
|
0x00000000, // link_no_sync_count
|
|
0x00000000, 0x00000000,
|
|
0x00000018, // link_agc_thd
|
|
0x00000000, // rssi_store_tws
|
|
0x00000006, // rssi_tws_step
|
|
0x00000000, // rssi_store_mobile
|
|
0x00000006, // rssi_mobile_step
|
|
0x0000009c, // rssi_min_value_tws
|
|
0x0000009c, // rssi_min_value_mobile
|
|
0xc00075ac, // rssi_store_tws
|
|
0xc00075b4, // rssi_store_mobile
|
|
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch22 = {
|
|
22,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch22_ibrt_ins_data_t2),
|
|
0x0002a6f4,
|
|
0xbf44f1dc,
|
|
0xc0007580,
|
|
(uint8_t *)bes2300p_patch22_ibrt_ins_data_t2}; // sync clear count
|
|
#endif
|
|
|
|
#if 0
|
|
const uint32_t bes2300p_patch23_ibrt_ins_data_t2[] =
|
|
{
|
|
0x6020f853,/*6b50*/
|
|
0xf8524a0d,
|
|
0x33013020,
|
|
0x3020f842,
|
|
0x68124a0b,
|
|
0xd90f4293,
|
|
0x4a082300,
|
|
0x3020f842,
|
|
0xb082b402,
|
|
0x92004a08,
|
|
0xf06f6a14,
|
|
0x46290059,
|
|
0x47a02201,
|
|
0xbc02b002,
|
|
0xbce4f623,
|
|
0xc0006b44,
|
|
0xc0006b94,
|
|
0x00000050,
|
|
0xc00041b4,/*6b98*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch23 =
|
|
{
|
|
23,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch23_ibrt_ins_data_t2),
|
|
0x0002a550,
|
|
0xbafef1dc,
|
|
0xc0006b50,
|
|
(uint8_t *)bes2300p_patch23_ibrt_ins_data_t2
|
|
};////swagc no sync
|
|
#elif 0
|
|
|
|
const uint32_t bes2300p_patch23_ibrt_ins_data_t2[] = {
|
|
0xf6324620, 0xb480fce9, 0xfb07276e, 0x4a1ff704, 0xf837bf00, 0xf4133002,
|
|
0xd12b4f00, 0xf8524a17, 0x33013024, 0x3024f842, 0x68124a15, 0xd8124293,
|
|
0x3084f8d5, 0xf0221af2, 0xf1b14178, 0xd9066f80, 0xf0231b9b, 0x425b4378,
|
|
0xdc042b64, 0xf022e012, 0x2a644278, 0x2300dd0e, 0xf8424a08, 0xb0823024,
|
|
0x92004a09, 0xc020f8d2,
|
|
// 0x0036f06f,
|
|
0x004cf06f, 0x22014621, 0xb00247e0, 0xbf00bc80, 0xbbeff62d, 0xc0006b44,
|
|
0xc0007204, 0x0000003c, 0xc00041b4,
|
|
0xd02111f8, // 720c
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch23 = {
|
|
23,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch23_ibrt_ins_data_t2),
|
|
0x000349d4,
|
|
0xbbd4f1d2,
|
|
0xc0007180,
|
|
(uint8_t *)bes2300p_patch23_ibrt_ins_data_t2}; ////swagc no sync
|
|
#else
|
|
const uint32_t bes2300p_patch23_ibrt_ins_data_t2[] = {
|
|
0xfb03236e, 0x4a3ef300, 0xf4135a9b, 0xd1764f00, 0xb082b570, 0xf8534b3b,
|
|
0x4a3b4020, 0x3020f852, 0xf8423301, 0x4a393020, 0x42936812, 0xf8d4d812,
|
|
0x1aca3084, 0x4578f022, 0x6f80f1b5, 0x1a5bd906, 0x4378f023, 0x2b64425b,
|
|
0xe04ddc04, 0x4278f022, 0xdd492a64, 0x681b4b2e, 0xd11d4298, 0xf9934b2d,
|
|
0xb93b3000, 0x30acf9b4, 0x20aef894, 0xf3f2fb93, 0x70134a28, 0x78134a27,
|
|
0x78094927, 0xb2db1a5b, 0x4a267013, 0xb25b7812, 0x428bb251, 0x4b21bfbc,
|
|
0x4b20701a, 0xe01c781e, 0xf9934b21, 0xb93b3000, 0x30acf9b4, 0x20aef894,
|
|
0xf3f2fb93, 0x70134a1c, 0x78134a1b, 0x7809491b, 0xb2db1a5b, 0x4a1a7013,
|
|
0xb25b7812, 0x428bb251, 0x4b15bfbc, 0x4b14701a, 0x4601781e, 0x4a0c2300,
|
|
0x3020f842, 0x92004a13, 0xb2706a15, 0x47a82201, 0x30aef894, 0xd9042b95,
|
|
0xf8a42300, 0xf88430ac, 0xb00230ae, 0x4770bd70, 0xd02111f8, 0xc0000998,
|
|
0xc000759c, 0xc00075a8, 0xc0006e2c, 0xc00075ac, 0xc00075b0, 0xc00075bc,
|
|
0xc00075b4, 0xc00075b8, 0xc00075c0, 0xc00041b4, 0xf6324620, 0x4620f9f7,
|
|
0xf7ff4631, 0xbf00ff61, 0xb931f62d};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch23 = {
|
|
23,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch23_ibrt_ins_data_t2),
|
|
0x000349d4,
|
|
0xbec6f1d2,
|
|
0xc0007634,
|
|
(uint8_t *)bes2300p_patch23_ibrt_ins_data_t2}; ////swagc no sync
|
|
|
|
#endif
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch24 = {
|
|
24, BTDRV_PATCH_ACT, 0, 0x0000fe0c, 0xf029bf00, 0, NULL,
|
|
}; // filter tws link lc_sco_ind ke message
|
|
|
|
const uint32_t bes2300p_patch25_ibrt_ins_data_t2[] = {
|
|
/*6f90*/ 0xbf009904,
|
|
/*6f94*/ 0x4b12b470,
|
|
/*6f98*/ 0x010e5c5a,
|
|
/*6f9c*/ 0x19734d11,
|
|
/*6fa0*/ 0x78244c11,
|
|
/*6fa4*/ 0xd20342a2,
|
|
/*6fa8*/ 0x32015498,
|
|
/*6fac*/ 0xe001b2d2,
|
|
/*6fb0*/ 0x22015570,
|
|
/*6fb4*/ 0x5442480a,
|
|
/*6fb8*/ 0x461ab14c,
|
|
/*6fbc*/ 0x23001919,
|
|
/*6fc0*/ 0x0b01f912,
|
|
/*6fc4*/ 0xbf004403,
|
|
/*6fc8*/ 0xd1f9428a,
|
|
/*6fcc*/ 0x2300e000,
|
|
/*6fd0*/ 0xf0f4fb93,
|
|
/*6fd4*/ 0xbc70b240,
|
|
/*6fd8*/ 0x22019904,
|
|
/*6fdc*/ 0xbb8cf628, // jump a002f6f8
|
|
/*6fe0*/ 0xc0006ff0, // addr of rssi_idx_for_agc
|
|
/*6fe4*/ 0xc0006ff4, // addr of rssi_set_for_agc
|
|
/*6fe8*/ 0xc0006fec, // addr of N
|
|
/*6fec*/ 0x00000005, // N : 1 ~ 16
|
|
/*6ff0*/ 0x00000000, // rssi_idx_for_agc[3]
|
|
/*6ff4*/ 0xbabababa, // rssi_set_for_agc[3*16]
|
|
/*6ff8*/ 0xbabababa,
|
|
/*6ffc*/ 0xbabababa,
|
|
/*7000*/ 0xbabababa,
|
|
/*7004*/ 0xbabababa,
|
|
/*7008*/ 0xbabababa,
|
|
/*700c*/ 0xbabababa,
|
|
/*7010*/ 0xbabababa,
|
|
/*7014*/ 0xbabababa,
|
|
/*7018*/ 0xbabababa,
|
|
/*701c*/ 0xbabababa,
|
|
/*7020*/ 0xbabababa,
|
|
/*7024*/ 0xbabababa,
|
|
/*7028*/ 0xbabababa,
|
|
/*702c*/ 0xbabababa,
|
|
}; // 0xc0006f90--->0xc0007074
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch25 = {
|
|
25,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch25_ibrt_ins_data_t2),
|
|
0x0002f6f4,
|
|
0xbc4cf1d7, // jump a002f6f4 -> a0206f90
|
|
0xc0006f90,
|
|
(uint8_t *)bes2300p_patch25_ibrt_ins_data_t2}; // ld_acl_rx() average rssi
|
|
|
|
#if 0
|
|
//ECC patch 1
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch26 =
|
|
{
|
|
26,
|
|
BTDRV_PATCH_ACT,
|
|
0,
|
|
0x00034790,
|
|
0xbf00bf00,
|
|
0,
|
|
NULL,
|
|
};//ld_acl_sniff_frm_isr ld_get_rx_isr_counter ignore
|
|
#else
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch26 = {
|
|
26, BTDRV_PATCH_ACT, 0, 0x00029d50, 0x3300f443, 0, NULL,
|
|
}; // bt_e_scoltcntl_retxnb_setf
|
|
#endif
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch27 = {
|
|
27, BTDRV_PATCH_ACT, 0, 0x000236e0, 0xf0172004, 0, NULL,
|
|
}; // LC_WAIT_EXCHANGE_SCO_STATUS_CFM
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch28 = {
|
|
28, BTDRV_PATCH_ACT, 0, 0x00039144, 0x47702001, 0,
|
|
NULL}; // ld_get_sniffer_enter_sniff_flag() forece return 1
|
|
|
|
#if 0
|
|
const uint32_t bes2300p_patch29_ibrt_ins_data_t2[] =
|
|
{
|
|
/*6ba0*/ 0xbf0080c6,
|
|
/*6ba4*/ 0x71022200,
|
|
/*6ba8*/ 0xbb2af619, //jump a0020200
|
|
};
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch29 =
|
|
{
|
|
29,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch29_ibrt_ins_data_t2),
|
|
0x000201f8,
|
|
0xbcd2f1e6, //jump a00201f8 -> a0206ba0
|
|
0xc0006ba0,
|
|
(uint8_t *)bes2300p_patch29_ibrt_ins_data_t2
|
|
};//KE_MSG_HANDLER(lc_op_loc_sniff_req, void)
|
|
#else
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch29 = {
|
|
29, BTDRV_PATCH_ACT, 0, 0x00020024, 0xe00dbf00, 0, NULL,
|
|
}; // detach directly
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch30_ibrt_ins_data_t2[] = {
|
|
/*6bac*/ 0x46286825,
|
|
/*6bb0*/ 0x303ef895,
|
|
/*6bb4*/ 0xd0012b02,
|
|
/*6bb8*/ 0xbda2f622, // jump a0029700
|
|
/*6bbc*/ 0xbf002300,
|
|
/*6bc0*/ 0x303ef885,
|
|
/*6bc4*/ 0xfea6f622, // call a0029914
|
|
/*6bc8*/ 0xbdc1f622, // jump a002974e
|
|
};
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch30 = {
|
|
30,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch30_ibrt_ins_data_t2),
|
|
0x000296fc,
|
|
0xba56f1dd, // jump a00296fc -> a0206bac
|
|
0xc0006bac,
|
|
(uint8_t *)bes2300p_patch30_ibrt_ins_data_t2}; // ld_pscan_frm_cbk
|
|
|
|
const uint32_t bes2300p_patch31_ibrt_ins_data_t2[] = {
|
|
0x7021f853, 0xb12fb136, 0x017ff000, 0xf8534b06, 0xb93b3021, 0x210c20ff,
|
|
0xfda8f61b, 0xbf002004, 0xbffcf62b, 0xbf76f62b, 0xc0005cd8,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch31 = {
|
|
31,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch31_ibrt_ins_data_t2),
|
|
0x0003328c,
|
|
0xb876f1d4, // jump a003328c -> a020737c
|
|
0xc000737c,
|
|
(uint8_t *)bes2300p_patch31_ibrt_ins_data_t2}; // protect null ptr when acl
|
|
// tws switch
|
|
|
|
const uint32_t bes2300p_patch32_ibrt_ins_data_t2[] = {
|
|
/*6be8*/ 0x46514620,
|
|
/*6bec*/ 0x4b09464a,
|
|
/*6bf0*/ 0x3022f853,
|
|
/*6bf4*/ 0xd10b2901,
|
|
/*6bf8*/ 0x0184f103,
|
|
/*6bfc*/ 0xbf002206,
|
|
/*6c00*/ 0xfd34f644,
|
|
/*6c04*/ 0xbf00b920,
|
|
/*6c08*/ 0x0802f05f,
|
|
/*6c0c*/ 0xba4af641, // jump a00480a4
|
|
/*6c10*/ 0xbaf6f641, // jump a0048200
|
|
/*6c14*/ 0xc0005cd8,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch32 = {
|
|
32,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch32_ibrt_ins_data_t2),
|
|
0x00048008,
|
|
0xbdeef1be, // jump a0048008 -> a0206be8
|
|
0xc0006be8,
|
|
(uint8_t *)bes2300p_patch32_ibrt_ins_data_t2}; // hci_evt_filter_con_check
|
|
|
|
const uint32_t bes2300p_patch33_ibrt_ins_data_t2[] = {
|
|
/*6c1c*/ 0x0024f855,
|
|
/*6c20*/ 0xbf003038,
|
|
/*6c24*/ 0xfd9ef643,
|
|
/*6c28*/ 0x0024f855,
|
|
/*6c2c*/ 0xbe9ef60c,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch33 = {
|
|
33,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch33_ibrt_ins_data_t2),
|
|
0x00013968,
|
|
0xb958f1f3, // jump a0013968 -> a0206c1c
|
|
0xc0006c1c,
|
|
(uint8_t *)bes2300p_patch33_ibrt_ins_data_t2}; // ea_interval_remove
|
|
|
|
const uint32_t bes2300p_patch34_ibrt_ins_data_t2[] = {
|
|
/*6c30*/ 0xf632d108,
|
|
/*6c34*/ 0x2100f9e3,
|
|
/*6c38*/ 0xf802f634,
|
|
/*6c3c*/ 0xfa8cf634,
|
|
/*6c40*/ 0xbb8bf5fb,
|
|
/*6c44*/ 0xbbc3f5fb,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch34 = {
|
|
34,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch34_ibrt_ins_data_t2),
|
|
0x00002354,
|
|
0xbc6cf204, // jump a0002354 -> a0206c30
|
|
0xc0006c30,
|
|
(uint8_t *)
|
|
bes2300p_patch34_ibrt_ins_data_t2}; // close fastack when stop ibrt
|
|
|
|
const uint32_t bes2300p_patch35_ibrt_ins_data_t2[] = {
|
|
/*6c48*/ 0x4b0a0a02,
|
|
/*6c4c*/ 0x3022f853,
|
|
/*6c50*/ 0xb500b173,
|
|
/*6c54*/ 0x4601b083,
|
|
/*6c58*/ 0xf88d230f,
|
|
/*6c5c*/ 0x23133004,
|
|
/*6c60*/ 0x3005f88d,
|
|
/*6c64*/ 0xf616a801,
|
|
/*6c68*/ 0xb003fbc1,
|
|
/*6c6c*/ 0xfb04f85d,
|
|
/*6c70*/ 0xbf004770,
|
|
/*6c74*/ 0xc0005cd8,
|
|
/*6c78*/ 0xbf000230,
|
|
/*6c7c*/ 0x0001f040,
|
|
/*6c80*/ 0xffe2f7ff,
|
|
/*6c84*/ 0xbc5df634};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch35 = {
|
|
35,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch35_ibrt_ins_data_t2),
|
|
0x0003b538,
|
|
0xbb9ef1cb, // jump a003b538 -> a0206c78
|
|
0xc0006c48,
|
|
(uint8_t *)
|
|
bes2300p_patch35_ibrt_ins_data_t2}; // snoop disconnect lc_release
|
|
|
|
#if 0
|
|
//ECC patch 2
|
|
const uint32_t bes2300p_patch36_ibrt_ins_data_t2[] =
|
|
{
|
|
/*6c88*/ 0x701c4b03,
|
|
/*6c8c*/ 0x78134a01,
|
|
/*6c90*/ 0xbcfcf62d,
|
|
/*6c94*/ 0xc0000971,
|
|
/*6c98*/ 0xc000032a,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch36 =
|
|
{
|
|
36,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch36_ibrt_ins_data_t2),
|
|
0x00034688,
|
|
0xbafef1d2, // jump a0034688 -> a0206c88
|
|
0xc0006c88,
|
|
(uint8_t *)bes2300p_patch36_ibrt_ins_data_t2
|
|
};//ld_acl_rx_isr set_ecc_recheck_link_id
|
|
#else
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch36 = {
|
|
36, BTDRV_PATCH_ACT, 0, 0x0002ddc0, 0x4a07bf00, 0, NULL,
|
|
}; // 1st ibrt ok, ignore sniffer role
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch37_ibrt_ins_data_t2[] = {
|
|
0x4605b538, /*6ca0*/
|
|
0xf643460c, 0x6a00fc79, 0xd2034285, 0x28061b40, /*6cb0*/
|
|
0x2402bf98, 0xb9fdf627,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch37 = {
|
|
37,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch37_ibrt_ins_data_t2),
|
|
0x0002e0b0,
|
|
0xbdf6f1d8,
|
|
0xc0006ca0,
|
|
(uint8_t *)bes2300p_patch37_ibrt_ins_data_t2}; // decrease retx
|
|
|
|
#if 0
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch38 =
|
|
{
|
|
38,
|
|
BTDRV_PATCH_ACT,
|
|
0,
|
|
0x00000878,
|
|
0x2300bf00,
|
|
0,
|
|
NULL
|
|
};//SLEEP EN
|
|
#else
|
|
const uint32_t bes2300p_patch38_ibrt_ins_data_t2[] = {
|
|
0x4604b510, /*6cc0*/
|
|
0xf6104608, 0x2c03fd25, 0x2803d001, 0x200cd104, /*6cd0*/
|
|
0xfa4ef61c, 0xbd102001, 0xbd102000, 0xfd18f610, /*6ce0*/
|
|
0xf1044605, 0x46280145, 0xffe8f7ff, 0xd1012800, /*6cf0*/
|
|
0xbeb7f633, 0xbf19f633, /*6cf8*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch38 = {
|
|
38,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch38_ibrt_ins_data_t2),
|
|
0x0003aa60,
|
|
0xb93ef1cc, // jump a003aa60 -> a0206cc0
|
|
0xc0006cc0,
|
|
(uint8_t *)bes2300p_patch38_ibrt_ins_data_t2}; // set env
|
|
#endif
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch39 = {
|
|
39, BTDRV_PATCH_ACT, 0, 0x0003b450, 0xbf00bd08, 0,
|
|
NULL}; // do not send ld_sniffer_connect_sco_forward
|
|
|
|
const uint32_t bes2300p_patch40_ibrt_ins_data_t2[] = {
|
|
0x2a140c92, 0x2214bf28, 0xbf004691, 0xbc44f623, /*6d40*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch40 = {
|
|
40,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch40_ibrt_ins_data_t2),
|
|
0x0002a5c4,
|
|
0xbbb4f1dc,
|
|
0xc0006d30,
|
|
(uint8_t *)bes2300p_patch40_ibrt_ins_data_t2}; // max_drift limit
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch41 = {
|
|
41, BTDRV_PATCH_ACT, 0, 0x0003acd8, 0xbf00e005, 0, NULL}; /// acl tx silence
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch42 = {
|
|
42, BTDRV_PATCH_ACT, 0, 0x00033668, 0xbf00e001, 0,
|
|
NULL}; /// do not clear acl env during sco stop
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch43 = {
|
|
43, BTDRV_PATCH_ACT, 0, 0x0002a62c, 0xe001021a, 0,
|
|
NULL}; // rx window adjust for start ibrt
|
|
|
|
#if defined(SYNC_BT_CTLR_PROFILE)
|
|
const uint32_t bes2300p_patch44_ibrt_ins_data_t2[] = {
|
|
/*6d24*/ 0xbf004628,
|
|
/*6d28*/ 0xfff8f633,
|
|
/*6d2c*/ 0xb8f7f611,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch44 = {
|
|
44,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch44_ibrt_ins_data_t2),
|
|
0x00017f10,
|
|
0xbf08f1ee, // jump a0017f10 -> a0206d24
|
|
0xc0006d24,
|
|
(uint8_t *)bes2300p_patch44_ibrt_ins_data_t2}; // send profile via BLE
|
|
#else
|
|
|
|
const uint32_t bes2300p_patch44_ibrt_ins_data_t2[] = {
|
|
0xd8092b01, /*70d0*/
|
|
0xfb03236e, 0x4a04f308, 0xf4135a9b, 0xd1016f00, /*70e0*/
|
|
0xb919f629, 0xb9aef629, 0xd0211200, /*70ec*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch44 = {
|
|
44,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch44_ibrt_ins_data_t2),
|
|
0x00030314,
|
|
0xbedcf1d6,
|
|
0xc00070d0,
|
|
(uint8_t *)bes2300p_patch44_ibrt_ins_data_t2}; // lmp tx for tx desc error
|
|
#endif
|
|
|
|
#if 0
|
|
const uint32_t bes2300p_patch45_ibrt_ins_data_t2[] =
|
|
{
|
|
0x20aef89b,/*6d50*/
|
|
0xd1052aa0,
|
|
0xf88b2200,
|
|
0xf8ab20ae,
|
|
0xe01320ac,/*6d60*/
|
|
0x68194b0b,
|
|
0xf3f1fbb2,
|
|
0x2313fb01,
|
|
0x4b07b963,/*6d70*/
|
|
0x00acf9bb,
|
|
0x6a1e9300,
|
|
0xfb90bf00,
|
|
0x9904f0f2,/*6d80*/
|
|
0x2201b240,
|
|
0x47b02300,
|
|
0xbcb6f628,
|
|
0xc00041b4,/*6d90*/
|
|
0xc0006d98,
|
|
0x0000000a,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch45 =
|
|
{
|
|
45,
|
|
BTDRV_PATCH_INACT,
|
|
sizeof(bes2300p_patch45_ibrt_ins_data_t2),
|
|
0x0002f6ec,
|
|
0xbb30f1d7,
|
|
0xc0006d50,
|
|
(uint8_t *)bes2300p_patch45_ibrt_ins_data_t2
|
|
};//RSSI AVERAGE 10
|
|
#else
|
|
const uint32_t bes2300p_patch45_ibrt_ins_data_t2[] = {
|
|
0x4a033304, /*6930*/
|
|
0xbf008153, 0x12c4f640, 0xb9bdf632, 0xc00061b8, /*6940*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch45 = {
|
|
45,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch45_ibrt_ins_data_t2),
|
|
0x00038cb0,
|
|
0xbe3ef1cd,
|
|
0xc0006930,
|
|
(uint8_t *)bes2300p_patch45_ibrt_ins_data_t2}; // pscan duration
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch46_ibrt_ins_data_t2[] = {
|
|
/*6d9c*/ 0x4b179a0b,
|
|
/*6da0*/ 0xd023429a,
|
|
/*6da4*/ 0x20b5f894,
|
|
/*6da8*/ 0xb9fab2d2,
|
|
/*6dac*/ 0xf9b4b22e,
|
|
/*6db0*/ 0x1b9b3098,
|
|
/*6db4*/ 0xf9b24a0f,
|
|
/*6db8*/ 0x42932000,
|
|
/*6dbc*/ 0x4251da05,
|
|
/*6dc0*/ 0xdd02428b,
|
|
/*6dc4*/ 0x7088f8d4,
|
|
/*6dc8*/ 0x4293e00f,
|
|
/*6dcc*/ 0xf8d4dd05,
|
|
/*6dd0*/ 0x3f017088,
|
|
/*6dd4*/ 0x4778f027,
|
|
/*6dd8*/ 0x4252e007,
|
|
/*6ddc*/ 0xda044293,
|
|
/*6de0*/ 0x7088f8d4,
|
|
/*6de4*/ 0xf0273701,
|
|
/*6de8*/ 0xbf004778,
|
|
/*6dec*/ 0x708cf8c4,
|
|
/*6df0*/ 0xbce4f623, // jump a002a7bc
|
|
/*6df4*/ 0xc0006df8,
|
|
/*6df8*/ 0x00000032, // 50
|
|
/*6dfc*/ 0xa003477b, // ld_acl_sniff_frm_isr lr
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch46 = {
|
|
46,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch46_ibrt_ins_data_t2),
|
|
0x0002a7b8,
|
|
0xbaf0f1dc, // jump a002a7b8 -> a0206d9c
|
|
0xc0006d9c,
|
|
(uint8_t *)bes2300p_patch46_ibrt_ins_data_t2}; // ld_acl_rx_sync clk_off cal
|
|
// active mode
|
|
|
|
const uint32_t bes2300p_patch47_ibrt_ins_data_t2[] = {
|
|
0xd10b2800, /*6e00*/
|
|
0x0f00f1ba, 0x4a07d10a, 0x2aff7812, 0x4615d006, /*6e10*/
|
|
0x30b2f894, 0xd10342ab, 0xb8aff625, 0xb974f625, /*6e20*/
|
|
0xb952f625, 0xc0006e2c, 0x000000ff, /*6e28*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch47 = {
|
|
47,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch47_ibrt_ins_data_t2),
|
|
0x0002bf78,
|
|
0xbf42f1da,
|
|
0xc0006e00,
|
|
(uint8_t *)bes2300p_patch47_ibrt_ins_data_t2}; /// adjust slot share for tws
|
|
/// without ibrt
|
|
|
|
const uint32_t bes2300p_patch48_ibrt_ins_data_t2[] = {
|
|
0x781b4b13, 0xd0212bff, 0x4604b510, 0xf946f632, 0x4b0fb1d8, 0x4b0f781a,
|
|
0x3022f853, 0x0f28f113, 0xf893d013, 0xeb0330c1, 0xb2db0342, 0x0383eb03,
|
|
0x4a09005b, 0xf3c35a9b, 0x2b5303c9, 0x7ea2d905, 0x441368e3, 0x4378f023,
|
|
0xbd1060e3, 0xbf004770, 0xc0006e2c, 0xc0000998, 0xd0211632, 0x0028f104,
|
|
0xffcef7ff, 0x60a36b63, 0xb9fcf627,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch48 = {
|
|
48,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch48_ibrt_ins_data_t2),
|
|
0x0002e290,
|
|
0xbdfcf1d8,
|
|
0xc0006e30,
|
|
(uint8_t *)bes2300p_patch48_ibrt_ins_data_t2}; // big packet send in sco v1
|
|
|
|
const uint32_t bes2300p_patch49_ibrt_ins_data_t2[] = {
|
|
/*6ec0*/ 0xf6232100,
|
|
/*6ec4*/ 0xf643feaf,
|
|
/*6ec8*/ 0x2300fb69,
|
|
/*6ecc*/ 0xbf006243,
|
|
/*6ed0*/ 0xbcf4f626,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch49 = {
|
|
49,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch49_ibrt_ins_data_t2),
|
|
0x0002d88c,
|
|
0xbb18f1d9, // jump a0018188 -> a0206978
|
|
0xc0006ec0,
|
|
(uint8_t *)
|
|
bes2300p_patch49_ibrt_ins_data_t2}; /// role switch fail to disconnect
|
|
|
|
#if 0
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch50 =
|
|
{
|
|
50,
|
|
BTDRV_PATCH_INACT,
|
|
0,
|
|
0x0003ea94,
|
|
0xbf00e04a,
|
|
0,
|
|
NULL
|
|
};//ble channel map disable
|
|
#elif 0
|
|
const uint32_t bes2300p_patch50_ibrt_ins_data_t2[] = {
|
|
0xf8948263, 0xbf0030b3, 0xbf00bf00, 0xbf00bf00, 0xbf002304, 0xb8b8f625,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch50 = {
|
|
50,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch50_ibrt_ins_data_t2),
|
|
0x0002c024,
|
|
0xbf3cf1da,
|
|
0xc0006ea0,
|
|
(uint8_t *)bes2300p_patch50_ibrt_ins_data_t2};
|
|
#else
|
|
const uint32_t bes2300p_patch50_ibrt_ins_data_t2[] = {
|
|
0x75a32312, /*6ed8*/
|
|
0x001bf898, 0x1088f8d1, 0x300cf8d8, 0xf023440b, /*6ee8*/
|
|
0xea834378, 0xf8986380, 0x1a5b1019, 0x101af898, /*6ef8*/
|
|
0xf3f1fbb3, 0xfbb3b2db, 0xfb02f1f2, 0x1ad23311, /*6f08*/
|
|
0xf894b2d6, 0xb91330b3, 0xf8842301, 0xf5fc30bb, /*6f18*/
|
|
0xf890fa05, 0xf5c33025, 0x3304631c, 0x23048263, /*6f28*/
|
|
0xb87cf625, /*6f2c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch50 = {
|
|
50,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch50_ibrt_ins_data_t2),
|
|
0x0002bfc4,
|
|
0xbf88f1da,
|
|
0xc0006ed8,
|
|
(uint8_t *)
|
|
bes2300p_patch50_ibrt_ins_data_t2}; ////ibrt connect slot adjust in sco
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch51_ibrt_ins_data_t2[] = {
|
|
0x490a60e3, /*6f30*/
|
|
0x428f6809, 0x4620d10c, 0x22002100, 0xf914f625, /*6f40*/
|
|
0x429d68a3, 0x60a5bf38, 0x134cf640, 0x3012f8a4, /*6f50*/
|
|
0xbf004620, 0xbc20f624, 0xc0006e2c, /*6f5c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch51 = {
|
|
51,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch51_ibrt_ins_data_t2),
|
|
0x0002b798,
|
|
0xbbcaf1db,
|
|
0xc0006f30,
|
|
(uint8_t *)bes2300p_patch51_ibrt_ins_data_t2}; // sniff trans mode timing
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch52 = {
|
|
52, BTDRV_PATCH_ACT,
|
|
0, 0x0001bf54,
|
|
0xbff2f7ff, // jump a001bf54 -> a001bf3c
|
|
0, NULL}; // LMP_MSG_HANDLER(switch_req) LC_CONNECTED
|
|
|
|
const uint32_t bes2300p_patch53_ibrt_ins_data_t2[] = {
|
|
/*6f74*/ 0xf632b140,
|
|
/*6f78*/ 0x42b0f841,
|
|
/*6f7c*/ 0xf632d104,
|
|
/*6f80*/ 0x2801f82b,
|
|
/*6f84*/ 0xbf00d002,
|
|
/*6f88*/ 0xbea8f619,
|
|
/*6f8c*/ 0xbf08f619,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch53 = {
|
|
53,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch53_ibrt_ins_data_t2),
|
|
0x00020cd8,
|
|
0xb94cf1e6, // jump a0020cd8 -> a0206f74
|
|
0xc0006f74,
|
|
(uint8_t *)bes2300p_patch53_ibrt_ins_data_t2}; // disconnect cmp
|
|
|
|
#if 0
|
|
const uint32_t bes2300p_patch54_ibrt_ins_data_t2[] =
|
|
{
|
|
0xb3384606,/*6f90*/
|
|
0x0a0388a0,
|
|
0xd1212b05,
|
|
0xf1034b14,
|
|
0xb2c10528,/*6fa0*/
|
|
0xe044f8df,
|
|
0x428a781a,
|
|
0x785ad114,
|
|
0x0f01f012,/*6fb0*/
|
|
0x88e7d006,
|
|
0x2f020a3f,
|
|
0xf85ed814,
|
|
0xb18f7027,/*6fc0*/
|
|
0x0f02f012,
|
|
0x8922d006,
|
|
0x2a020a12,
|
|
0xf85ed80a,/*6fe0*/
|
|
0xb13a2022,
|
|
0x42ab3302,
|
|
0xbf00d1e4,
|
|
0xb8e5f5fa,/*6ff0*/
|
|
0xb8dcf5fa,
|
|
0xb8ecf5fa,
|
|
0xc0005cd8,
|
|
0xc0006ff4,/*7000*/
|
|
0x0327032a,
|
|
0x010e0326,
|
|
0x0000010f,
|
|
0x00000000,/*7010*/
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,
|
|
0x00000000,/*7020*/
|
|
0x00000000,
|
|
0x00000000,/*7024*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch54 =
|
|
{
|
|
54,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch54_ibrt_ins_data_t2),
|
|
0x0000119c,
|
|
0xbef8f205,
|
|
0xc0006f90,
|
|
(uint8_t *)bes2300p_patch54_ibrt_ins_data_t2
|
|
};//msg filter
|
|
#else
|
|
const uint32_t bes2300p_patch54_ibrt_ins_data_t2[] = {
|
|
0x8885b5f8, // 73cc
|
|
0x2b050a2b, 0x4b49d121, 0x0428f103, 0x4f48b2e9, 0x428a781a, 0x785ad116,
|
|
0x0f01f012, 0x88c6d007, 0x2e020a36, 0xf857d86b, 0x2e006026, 0xf012d069,
|
|
0xd0070f02, 0x0a128902, 0xd8642a02, 0x2022f857, 0xd0622a00, 0x42a33302,
|
|
0xf240d1e2, 0x429d5335, 0x4605d15d, 0x08637b44, 0xd1142b04, 0xf5f988c0,
|
|
0x2832ffb5, 0xf240d155, 0x88e95006, 0xfb2ef5f9, 0x0a0288e8, 0xf8534b2e,
|
|
0xf8933022, 0xf5f9135e, 0x2401ff39, 0x2b18e050, 0x88c0d126, 0xff9ef5f9,
|
|
0xd1402836, 0x02fef004, 0x0a3688ee, 0xf8534b24, 0xf8844026, 0xb2f62044,
|
|
0x21184630, 0xff1cf61c, 0x4040f894, 0xd1302c01, 0xf6294630, 0x88e8fa29,
|
|
0xf800f60f, 0x0a0288e8, 0xf8534b19, 0xf8933022, 0xf5f9135e, 0xe027ff0f,
|
|
0xd1202b7e, 0x3b097b83, 0x2b01b2db, 0xf631d81d, 0x7a83fd77, 0xd81a2b02,
|
|
0xf8524a0f, 0xfab44023, 0x0964f484, 0x2401e014, 0x2401e012, 0x2401e010,
|
|
0x2401e00e, 0x2400e00c, 0x2400e00a, 0x2400e008, 0x2401e006, 0x2400e004,
|
|
0x2400e002, 0x2401e000, 0xbdf84620, 0xa0207520, 0xc0005cd8, 0xb1484606,
|
|
0xf7ff4620, 0x2801ff5f, 0xbf00d102, 0xbe56f5f9, 0xbe49f5f9, 0xbe40f5f9,
|
|
0x0327032a, 0x010e0326, 0x0000010f, 0x00000000, 0x00000000, 0x00000000,
|
|
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch54 = {
|
|
54,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch54_ibrt_ins_data_t2),
|
|
0x0000119c,
|
|
0xb9b2f206,
|
|
0xc00073cc,
|
|
(uint8_t *)bes2300p_patch54_ibrt_ins_data_t2}; // msg filter
|
|
|
|
#endif
|
|
|
|
const uint32_t bes2300p_patch55_ibrt_ins_data_t2[] = {
|
|
0x49079804, /*70a4*/
|
|
0x42886809, 0xf632d103, 0x2800f86b, 0x3301d004, /*70b4*/
|
|
0xf88bb2db, 0xbf0030bb, 0xbaf4f628, 0xc0006e2c, /*70c4*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ibrt_ins_patch55 = {
|
|
55,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_patch55_ibrt_ins_data_t2),
|
|
0x0002f6a4,
|
|
0xbcfef1d7,
|
|
0xc00070a4,
|
|
(uint8_t *)bes2300p_patch55_ibrt_ins_data_t2}; // tws link dont rx traffic++
|
|
|
|
/////2300p t2 ibrt patch (chip id =1)
|
|
static const uint32_t best2300p_t2_ibrt_ins_patch_config[] = {
|
|
56,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch0,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch1,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch2,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch3,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch4,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch5,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch6,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch7,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch8,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch9,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch10,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch11,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch12,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch13,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch14,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch15,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch16,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch17,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch18,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch19,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch20,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch21,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch22,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch23,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch24,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch25,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch26,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch27,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch28,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch29,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch30,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch31,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch32,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch33,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch34,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch35,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch36,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch37,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch38,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch39,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch40,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch41,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch42,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch43,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch44,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch45,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch46,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch47,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch48,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch49,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch50,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch51,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch52,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch53,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch54,
|
|
(uint32_t)&bes2300p_t2_ibrt_ins_patch55,
|
|
};
|
|
#endif
|
|
/***************************************************************************
|
|
*
|
|
* instruction patch Information
|
|
*
|
|
* BT ROM Chip Version:1302 T1
|
|
*
|
|
* [IBRT]
|
|
* patch 7: 0xC0006a50--->0xC0006a78
|
|
* patch 8: 0xC0006a90--->0xC0006a9C
|
|
* patch 9: in used check ble conflict with acl
|
|
* patch 10: 0xC0006AA0--->0xC0006AC8
|
|
* patch 11: 0xC0006AD0--->0xC0006AEC
|
|
* patch 12: 0xC0006AF0--->0xC0006B04
|
|
* patch 13: 0xC0006B08--->0xC0006B18
|
|
* patch 14: in use
|
|
* patch 15: 0xC0006B74--->0xC0006B80
|
|
* patch 16: in used :check afh mismatch 1
|
|
* patch 17: in used :check afh mismatch 2
|
|
* patch 18: 0xC0006B88--->0xC006C14 fix acl interval in sco
|
|
* patch 19: in used
|
|
* patch 20: in used
|
|
* patch 21: 0xC0006C78--->0xC0006C88
|
|
* patch 22: 0xC0006810--->0xC0006878
|
|
* patch 23: 0xC0006880--->0xC0006890
|
|
* patch 24: 0xC0006C90--->0xC000689C
|
|
* patch 25: in used:ld_acl_start t_poll
|
|
* patch 26: 0xC0006CA0--->0xC0006CC8: unused
|
|
* patch 27: in used: ld_sniffer_update_status: SNIFFER_EVT_SCO_CONNECTED
|
|
* patch 28: in used: 0xC0006CF8--->0xC0006D0C
|
|
* patch 29: in used: 0xC0006D14--->0xC0006D30
|
|
****************************************************************************/
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch0 = {
|
|
0, BTDRV_PATCH_ACT, 0, 0x00025ef4, 0xbf00bf00, 0,
|
|
NULL}; /// remove the memset of ldenv
|
|
|
|
const uint32_t bes2300p_t1_patch_0a_ins_data[] = {
|
|
/*6810*/ 0x681b4b0e,
|
|
/*6814*/ 0x4b0eb1ab,
|
|
/*6818*/ 0x31cbf893,
|
|
/*681c*/ 0x4a0d011b,
|
|
/*6820*/ 0xf3c35a9b,
|
|
/*6824*/ 0x4a0c2340,
|
|
/*6828*/ 0x2a025c12,
|
|
/*682c*/ 0x4a0ad103,
|
|
/*6830*/ 0x20005413,
|
|
/*6834*/ 0x42934770,
|
|
/*6838*/ 0x4a07d005,
|
|
/*683c*/ 0x20005413,
|
|
/*6840*/ 0x20004770,
|
|
/*6844*/ 0x20014770,
|
|
/*6848*/ 0xbf004770,
|
|
/*684c*/ 0xc000685c,
|
|
/*6850*/ 0xc0005d34,
|
|
/*6854*/ 0xd02115f2,
|
|
/*6858*/ 0xc0006860,
|
|
/*685c*/ 0x00000001, // sw_seqn_filter_en
|
|
/*6860*/ 0x00020202, // link_id_seq
|
|
/*6864*/ 0x9805bf00,
|
|
/*6868*/ 0xffd2f7ff, // call a0206810
|
|
/*686c*/ 0x2019b910,
|
|
/*6870*/ 0xbd62f628, // jump a002f338
|
|
/*6874*/ 0x22802107,
|
|
/*6878*/ 0xbe22f628, // jump a002f4c0
|
|
}; // ld_acl_rx ld_sw_seqn_filter
|
|
|
|
const uint32_t bes2300p_t1_patch_0b_ins_data[] = {
|
|
/*6880*/ 0x328af885,
|
|
/*6884*/ 0x22024b02,
|
|
/*6888*/ 0xbf00559a,
|
|
/*688c*/ 0xbe90f614, // jump a001b5b0
|
|
/*6890*/ 0xc0006860, // link_id_seq
|
|
}; // lc_rsw_end_ind link_id_seq[link_id]=2
|
|
|
|
const uint32_t bes2300p_t1_patch_1_ins_data[] = {
|
|
0x2c021b64, 0x2009d101, 0x3402e002, 0xbc4af63c, 0xbca6f63c,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch1 = {
|
|
1,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_1_ins_data),
|
|
0x000431a0,
|
|
0xbbaef1c3,
|
|
0xc0006900,
|
|
(uint8_t *)bes2300p_t1_patch_1_ins_data}; // for ble and sco:
|
|
// OVERLAP_RESERVE2 in
|
|
// lld_check_conflict_with_ble
|
|
|
|
const uint32_t bes2300p_t1_patch_2_ins_data[] = {
|
|
0x781b4b05, 0xd1032b09, 0x4b032200, 0x2704701a, 0x60eb1be3, 0xb8ecf627,
|
|
0xc000693c, ////prev_conflict_type_record
|
|
0x00000000,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch2 = {
|
|
2,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_2_ins_data),
|
|
0x0002db0c,
|
|
0xbf08f1d8,
|
|
0xc0006920,
|
|
(uint8_t *)bes2300p_t1_patch_2_ins_data}; // for ble and sco:
|
|
// prev_conflict_type_record in
|
|
// ld_sco_avoid_ble_connect
|
|
|
|
const uint32_t bes2300p_t1_patch_3_ins_data[] = {
|
|
0xd1084298, 0x3047f894, 0x92004a0e, 0x22024631, 0xfd42f61f, 0x4b0ce014,
|
|
0xb143781b, 0x3047f894, 0x92004a08, 0x22024631, 0xfd36f61f, 0xf894e008,
|
|
0x4a043047, 0x46319200, 0xbf002204, 0xfd2cf61f, 0xbaa2f62b, 0xa002fce5,
|
|
0xc000699c, /// ble_sco_need_move_flag
|
|
0x00000000,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch3 = {
|
|
3,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_3_ins_data),
|
|
0x00031ec4,
|
|
0xbd44f1d4,
|
|
0xc0006950,
|
|
(uint8_t *)bes2300p_t1_patch_3_ins_data}; // for ble and sco:
|
|
// ld_fm_prog_push
|
|
// LD_FRAME_TYPE_ESCO when
|
|
// ble_sco_need_move_flag in
|
|
// ld_sco_evt_start_cbk
|
|
|
|
const uint32_t bes2300p_t1_patch_4_ins_data[] = {
|
|
0x781b4b18, 0x2200b113, 0x701a4b16, 0x781b4b18, 0xd0232b00,
|
|
0x4b162201, 0xbf00701a, 0xb1e84680, 0x781b4b11, 0xd1192b00,
|
|
0x0304f1a8, 0x2b01b2db, 0xf1b8d903, 0xd1130f09, 0x2201e00c,
|
|
0x701a4b09, 0x0f09f1b8, 0x2209d103, 0x701a4b08, 0x68eb2704,
|
|
0xb8a6f627, 0x4b032201, 0xe7f4701a, 0xb8c2f627, 0xb8aff627,
|
|
0xc000699c, /// ble_sco_need_move_flag
|
|
0xc000099f,
|
|
0xc000693c, /// prev_conflict_type_record
|
|
0xc0006a18, /// sco_find_sync_flag
|
|
0x00000000,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch4 = {
|
|
4,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_4_ins_data),
|
|
0x0002db30,
|
|
0xbf38f1d8,
|
|
0xc00069a4,
|
|
(uint8_t *)bes2300p_t1_patch_4_ins_data}; // for ble and sco:
|
|
// ble_sco_need_move_flag =
|
|
// 1,need_move=4 in
|
|
// ld_sco_avoid_ble_connect
|
|
|
|
const uint32_t bes2300p_t1_patch_5_ins_data[] = {
|
|
0xfbb24a02,
|
|
0xf5f9f3f3,
|
|
0xbf00bec6,
|
|
0x9af8da00,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch5 = {
|
|
5,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_5_ins_data),
|
|
0x00000650,
|
|
0xb936f206,
|
|
0xc00068c0,
|
|
(uint8_t *)bes2300p_t1_patch_5_ins_data}; // lpclk
|
|
|
|
const uint32_t bes2300p_t1_patch_6_ins_data[] = {
|
|
0xd00d2b00, 0xf8384b07, 0xf4133003, 0xd0024f00, 0x4b052201,
|
|
0xf899701a, 0x2b0130b3, 0xba5af629, 0xbaccf629, 0xd02111f8,
|
|
0xc0006a18, ////sco_find_sync_flag
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch6 = {
|
|
6,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_6_ins_data),
|
|
0x0002feec,
|
|
0xbd98f1d6,
|
|
0xc0006a20,
|
|
(uint8_t *)bes2300p_t1_patch_6_ins_data}; /// for ble and sco:
|
|
/// sco_find_sync_flag = 1 in
|
|
/// ld_sco_frm_isr
|
|
|
|
const uint32_t bes2300p_t1_patch_7_ins_data[] = {
|
|
0xd10f2f03, 0xfd16f642, 0x4008f8d8, 0x46216940, 0xf6242220, 0xb128fff5,
|
|
0x0320f104, 0x4378f023, 0x3008f8c8, 0xbf002000, 0xbc7df625,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch7 = {
|
|
7,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_7_ins_data),
|
|
0x0002c32c,
|
|
0xbb90f1da,
|
|
0xc0006A50,
|
|
(uint8_t *)bes2300p_t1_patch_7_ins_data}; // ble avoid role switch
|
|
|
|
const uint32_t bes2300p_t1_patch_8_ins_data[] = {
|
|
0xf855b2e6,
|
|
0xb1091b04,
|
|
0xbc71f610,
|
|
0xbc78f610,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch8 = {
|
|
8,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_8_ins_data),
|
|
0x00017378,
|
|
0xbb8af1ef,
|
|
0xc0006A90,
|
|
(uint8_t *)bes2300p_t1_patch_8_ins_data}; // lc_check_bt_device_conected
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch9 = {
|
|
9, BTDRV_PATCH_ACT, 0, 0x00043238, 0xbf342c09, 0,
|
|
NULL}; // check conflict 8 slot 1
|
|
|
|
const uint32_t bes2300p_t1_patch_10_ins_data[] = {
|
|
0xf8934b07, 0x98053078, 0xd1074298, 0xd0052b03, 0x681b4b04, 0x2201b913,
|
|
0x601a4b02, 0xbc3ff628, 0xc0006358, 0xc0006AC8, 0x00000000,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch10 = {
|
|
10,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_10_ins_data),
|
|
0x0002f338,
|
|
0xbbb2f1d7,
|
|
0xc0006AA0,
|
|
(uint8_t *)bes2300p_t1_patch_10_ins_data}; // ibrt snoop success
|
|
|
|
const uint32_t bes2300p_t1_patch_11_ins_data[] = {
|
|
0xb149d208, 0x681b4b05, 0x2200b133, 0x601a4b03,
|
|
0xbce4f632, 0xbcf2f632, 0xbcfff632, 0xc0006AC8,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch11 = {
|
|
11,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_11_ins_data),
|
|
0x000394a8,
|
|
0xbb12f1cd,
|
|
0xc0006AD0,
|
|
(uint8_t *)bes2300p_t1_patch_11_ins_data}; // ibrt snoop success 2
|
|
|
|
const uint32_t bes2300p_t1_patch_12_ins_data[] = {
|
|
0x46032102, 0xf9b4f633, 0xbf004618, 0x22012105, 0xfa28f61d, 0xba4ff633,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch12 = {
|
|
12,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_12_ins_data),
|
|
0x00039fa0,
|
|
0xbda6f1cc,
|
|
0xc0006AF0,
|
|
(uint8_t *)bes2300p_t1_patch_12_ins_data}; // hack tws switch tx seqn error
|
|
|
|
const uint32_t bes2300p_t1_patch_13_ins_data[] = {
|
|
0xfc6ef631, 0xfcbaf631, 0xbf004620, 0xfcc2f631, 0xbfb2f62a,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch13 = {
|
|
13,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_13_ins_data),
|
|
0x00031a7c,
|
|
0xb844f1d5,
|
|
0xc0006B08,
|
|
(uint8_t *)bes2300p_t1_patch_13_ins_data}; // lmp filter enable
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch14 = {
|
|
14, BTDRV_PATCH_ACT, 0, 0x000388a8, 0xbf00e001, 0, NULL}; // open afh update
|
|
|
|
const uint32_t bes2300p_t1_patch_15_ins_data[] = {
|
|
0xfbd0f631,
|
|
0x20004601,
|
|
0xfbb8f633,
|
|
0xba9ef618,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch15 = {
|
|
15,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_15_ins_data),
|
|
0x0001f0bc,
|
|
0xbd5af1e7,
|
|
0xc0006B74,
|
|
(uint8_t *)bes2300p_t1_patch_15_ins_data}; // ibrt slave stop sco
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch16 = {
|
|
16,
|
|
#if defined(IBRT)
|
|
BTDRV_PATCH_ACT,
|
|
#else
|
|
BTDRV_PATCH_INACT,
|
|
#endif
|
|
0,
|
|
0x00038a78,
|
|
0x7a22d206,
|
|
0,
|
|
NULL,
|
|
}; // check afh mismatch 1
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch17 = {
|
|
17,
|
|
#if defined(IBRT)
|
|
BTDRV_PATCH_ACT,
|
|
#else
|
|
BTDRV_PATCH_INACT,
|
|
#endif
|
|
0,
|
|
0x00038a88,
|
|
0xbf00e00e,
|
|
0,
|
|
NULL,
|
|
}; // check afh mismatch 2
|
|
|
|
const uint32_t bes2300p_t1_patch_18_ins_data[] = {
|
|
0x4606b570, 0x7e8d460c, 0xf5f5fb92, 0x2114b2e8, 0x68e175b1, 0xf023440b,
|
|
0x7ee14378, 0x6381ea83, 0x1a5b7e61, 0xfbb37ea1, 0xb2dbf3f1, 0xf1f0fbb3,
|
|
0x3311fb00, 0xb2c31ac0, 0xd8042a3c, 0x622ef640, 0x22048272, 0xf640e003,
|
|
0x8272124c, 0x7ea02206, 0xfb0068e1, 0x44101003, 0x4078f020, 0x210060b0,
|
|
0xfab4f63c, 0xd9072806, 0xb2ed7ea3, 0xfb0568b2, 0xf0252503, 0x60b54578,
|
|
0xbf00bd70, 0x46514620, 0x2042f8b8, 0x3088f8d3, 0xffbaf7ff, 0xbfcbf624,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch18 = {
|
|
18,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_18_ins_data),
|
|
0x0002bad8,
|
|
0xb894f1db, // jump a002bad8 -> A0206C04
|
|
0xc0006B88,
|
|
(uint8_t *)bes2300p_t1_patch_18_ins_data};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch19 = {
|
|
19, BTDRV_PATCH_ACT, 0, 0x00039d78, 0xd13b2902, 0, NULL}; // ibrt switch op
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch20 = {
|
|
20, BTDRV_PATCH_ACT, 0, 0x00030240, 0xe0022000, 0, NULL}; // acl end assert
|
|
|
|
const uint32_t bes2300p_t1_patch_21_ins_data[] = {
|
|
0x781b4b03, 0xd1012b01, 0xbc5cf633, 0xbc63f633, 0xc0006358,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch21 = {
|
|
21,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_21_ins_data),
|
|
0x0003a528,
|
|
0xbba6f1cc,
|
|
0xc0006C78,
|
|
(uint8_t *)bes2300p_t1_patch_21_ins_data}; // snoop disconnect
|
|
|
|
// __SW_SEQ_FILTER__ - add software seqn filter to protect recive identical
|
|
// repeating packages
|
|
#if defined(IBRT)
|
|
#define __SW_SEQ_FILTER__
|
|
#endif
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch22 = {
|
|
22,
|
|
#ifdef __SW_SEQ_FILTER__
|
|
BTDRV_PATCH_INACT,
|
|
#else
|
|
BTDRV_PATCH_INACT,
|
|
#endif
|
|
sizeof(bes2300p_t1_patch_0a_ins_data),
|
|
0x0002f334,
|
|
0xba96f1d7, // jump a002f334 -> a0206864
|
|
0xc0006810,
|
|
(uint8_t *)bes2300p_t1_patch_0a_ins_data};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch23 = {
|
|
23,
|
|
#ifdef __SW_SEQ_FILTER__
|
|
BTDRV_PATCH_INACT,
|
|
#else
|
|
BTDRV_PATCH_INACT,
|
|
#endif
|
|
sizeof(bes2300p_t1_patch_0b_ins_data),
|
|
0x0001b5ac,
|
|
0xb968f1eb, // jump a001b5ac -> a0206880
|
|
0xc0006880,
|
|
(uint8_t *)
|
|
bes2300p_t1_patch_0b_ins_data}; // lc_rsw_end_ind link_id_seq[link_id]=2
|
|
|
|
const uint32_t bes2300p_t1_patch_24_ins_data[] = {
|
|
0x0f01f1b8,
|
|
0x380ebf0c,
|
|
0xb280301c,
|
|
0xbb30f632,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch24 = {
|
|
24,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_24_ins_data),
|
|
0x000392d8,
|
|
0xbcdaf1cd,
|
|
0xc0006c90,
|
|
(uint8_t *)bes2300p_t1_patch_24_ins_data}; // start snoop using bitoff
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch25 = {
|
|
25,
|
|
#if defined(IBRT)
|
|
BTDRV_PATCH_ACT,
|
|
#else
|
|
BTDRV_PATCH_INACT,
|
|
#endif
|
|
0,
|
|
0x0002e09c,
|
|
0xf8a6230a,
|
|
0,
|
|
NULL,
|
|
}; // ld_acl_start t_poll
|
|
|
|
const uint32_t bes2300p_t1_patch_26_ins_data[] = {
|
|
0x5040f898, 0xd80d2d14, 0xfbecf642, 0x690068a6, 0xb2ea4631, 0xfeccf624,
|
|
0xf106b120, 0xf0230364, 0x60a34378, 0xfbdef642, 0xbfb2f624,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch26 = {
|
|
26,
|
|
BTDRV_PATCH_INACT,
|
|
sizeof(bes2300p_t1_patch_26_ins_data),
|
|
0x0002bc2c,
|
|
0xb838f1db,
|
|
0xc0006CA0,
|
|
(uint8_t *)bes2300p_t1_patch_26_ins_data}; // mobile link avoid tws link
|
|
// when send profile
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch27 = {
|
|
27, BTDRV_PATCH_ACT, 0, 0x0003890c, 0xbf00e008, 0, NULL,
|
|
}; // ld_sniffer_update_status: SNIFFER_EVT_SCO_CONNECTED
|
|
|
|
const uint32_t bes2300p_t1_patch_28_ins_data[] = {
|
|
0xfa58f63f, 0x4b034a02, 0xbf00601a, 0xbb66f63f, 0xffff0009, 0xd03300f0,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch28 = {
|
|
28,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_28_ins_data),
|
|
0x000463d0,
|
|
0xbc92f1c0,
|
|
0xc0006CF8,
|
|
(uint8_t *)bes2300p_t1_patch_28_ins_data}; // lld_evt_end_isr:SYS 2M
|
|
|
|
const uint32_t bes2300p_t1_patch_29_ins_data[] = {
|
|
0x681b4b0a, 0x0301f033, 0xbf00d106, 0x4b044a03, 0x4a04601a, 0x601a4b04,
|
|
0xbc96f63d, 0x04007107, 0xD0220000, 0xffff0008, 0xd03300f0, 0xd0220054,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch29 = {
|
|
29,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_29_ins_data),
|
|
0x00044658,
|
|
0xbb5cf1c2,
|
|
0xc0006d14,
|
|
(uint8_t *)bes2300p_t1_patch_29_ins_data}; // lld_evt_schedule:SYS 1M
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch30 = {
|
|
30, BTDRV_PATCH_ACT, 0, 0x00029e70, 0xbf8c7fb9, 0, NULL,
|
|
}; // ld_acl_rx_sync2
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch31 = {
|
|
31, BTDRV_PATCH_ACT, 0, 0x0002a068, 0xbf947fb9, 0, NULL,
|
|
}; // ld_acl_rx_no_sync
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch32 = {
|
|
32, BTDRV_PATCH_ACT, 0, 0x0002a1b0, 0x7fb9f5b3, 0, NULL,
|
|
}; // ld_acl_rx_sync
|
|
|
|
const uint32_t bes2300p_t1_patch_33_ins_data[] = {
|
|
0xfdf6f624, 0x4638b920, 0xf63c2100, 0xb108fa01, 0xbf2bf628, 0xbf3df628,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch33 = {
|
|
33,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_patch_33_ins_data),
|
|
0x0002fba8,
|
|
0xb8ccf1d7,
|
|
0xc0006d44,
|
|
(uint8_t *)bes2300p_t1_patch_33_ins_data}; // protect ble 8 slot
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch34 = {
|
|
34, BTDRV_PATCH_ACT, 0, 0x00043248, 0xbf8c2c08, 0, NULL,
|
|
}; // check conflict 8 slot 2
|
|
|
|
const uint32_t bes2300p_t1_patch_35_ins_data[] = {
|
|
/*6d54*/ 0xf8534b02,
|
|
/*6d58*/ 0xb11b3020,
|
|
/*6d5c*/ 0xbafdf610,
|
|
/*6d60*/ 0xc0005c70,
|
|
/*6d64*/ 0x47702000,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch35 = {
|
|
35,
|
|
BTDRV_PATCH_INACT,
|
|
sizeof(bes2300p_t1_patch_35_ins_data),
|
|
0x00017354,
|
|
0xbcfef1ef,
|
|
0xc0006d54,
|
|
(uint8_t *)bes2300p_t1_patch_35_ins_data}; // is_in_sniff_mode use NULL ptr
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch36 = {
|
|
36, BTDRV_PATCH_INACT, 0, 0x00039b58, 0xf2002802, 0, NULL,
|
|
}; // ld_sniffer_start_monitored_link(link_id >= MAX_NB_ACTIVE_ACL)
|
|
|
|
/////2300p t1 patch
|
|
static const uint32_t best2300p_t1_ins_patch_config[] = {
|
|
37,
|
|
(uint32_t)&bes2300p_t1_ins_patch0,
|
|
(uint32_t)&bes2300p_t1_ins_patch1,
|
|
(uint32_t)&bes2300p_t1_ins_patch2,
|
|
(uint32_t)&bes2300p_t1_ins_patch3,
|
|
(uint32_t)&bes2300p_t1_ins_patch4,
|
|
(uint32_t)&bes2300p_t1_ins_patch5,
|
|
(uint32_t)&bes2300p_t1_ins_patch6,
|
|
(uint32_t)&bes2300p_t1_ins_patch7,
|
|
(uint32_t)&bes2300p_t1_ins_patch8,
|
|
(uint32_t)&bes2300p_t1_ins_patch9,
|
|
(uint32_t)&bes2300p_t1_ins_patch10,
|
|
(uint32_t)&bes2300p_t1_ins_patch11,
|
|
(uint32_t)&bes2300p_t1_ins_patch12,
|
|
(uint32_t)&bes2300p_t1_ins_patch13,
|
|
(uint32_t)&bes2300p_t1_ins_patch14,
|
|
(uint32_t)&bes2300p_t1_ins_patch15,
|
|
(uint32_t)&bes2300p_t1_ins_patch16,
|
|
(uint32_t)&bes2300p_t1_ins_patch17,
|
|
(uint32_t)&bes2300p_t1_ins_patch18,
|
|
(uint32_t)&bes2300p_t1_ins_patch19,
|
|
(uint32_t)&bes2300p_t1_ins_patch20,
|
|
(uint32_t)&bes2300p_t1_ins_patch21,
|
|
(uint32_t)&bes2300p_t1_ins_patch22,
|
|
(uint32_t)&bes2300p_t1_ins_patch23,
|
|
(uint32_t)&bes2300p_t1_ins_patch24,
|
|
(uint32_t)&bes2300p_t1_ins_patch25,
|
|
(uint32_t)&bes2300p_t1_ins_patch26,
|
|
(uint32_t)&bes2300p_t1_ins_patch27,
|
|
(uint32_t)&bes2300p_t1_ins_patch28,
|
|
(uint32_t)&bes2300p_t1_ins_patch29,
|
|
(uint32_t)&bes2300p_t1_ins_patch30,
|
|
(uint32_t)&bes2300p_t1_ins_patch31,
|
|
(uint32_t)&bes2300p_t1_ins_patch32,
|
|
(uint32_t)&bes2300p_t1_ins_patch33,
|
|
(uint32_t)&bes2300p_t1_ins_patch34,
|
|
(uint32_t)&bes2300p_t1_ins_patch35,
|
|
(uint32_t)&bes2300p_t1_ins_patch36,
|
|
};
|
|
|
|
void btdrv_ins_patch_write(BTDRV_PATCH_STRUCT *ins_patch_p) {
|
|
uint32_t remap_addr;
|
|
/// uint8_t i=0;
|
|
remap_addr = ins_patch_p->patch_remap_address | 1;
|
|
btdrv_write_memory(
|
|
_32_Bit,
|
|
(BTDRV_PATCH_INS_REMAP_ADDR_START + ins_patch_p->patch_index * 4),
|
|
(uint8_t *)&ins_patch_p->patch_remap_value, 4);
|
|
if (ins_patch_p->patch_length != 0) // have ram patch data
|
|
{
|
|
btdrv_memory_copy((uint32_t *)ins_patch_p->patch_start_address,
|
|
(uint32_t *)ins_patch_p->patch_data,
|
|
ins_patch_p->patch_length);
|
|
}
|
|
|
|
btdrv_write_memory(
|
|
_32_Bit, (BTDRV_PATCH_INS_COMP_ADDR_START + ins_patch_p->patch_index * 4),
|
|
(uint8_t *)&remap_addr, 4);
|
|
}
|
|
|
|
void btdrv_ins_patch_init(void) {
|
|
const BTDRV_PATCH_STRUCT *ins_patch_p;
|
|
if (hal_get_chip_metal_id() == HAL_CHIP_METAL_ID_0) {
|
|
for (uint8_t i = 0; i < best2300p_t1_ins_patch_config[0]; i++) {
|
|
ins_patch_p = (BTDRV_PATCH_STRUCT *)best2300p_t1_ins_patch_config[i + 1];
|
|
if (ins_patch_p->patch_state == BTDRV_PATCH_ACT)
|
|
btdrv_ins_patch_write(
|
|
(BTDRV_PATCH_STRUCT *)best2300p_t1_ins_patch_config[i + 1]);
|
|
}
|
|
} else if (hal_get_chip_metal_id() == HAL_CHIP_METAL_ID_1) {
|
|
#ifndef IBRT
|
|
for (uint8_t i = 0; i < best2300p_t2_ins_patch_config[0]; i++) {
|
|
ins_patch_p = (BTDRV_PATCH_STRUCT *)best2300p_t2_ins_patch_config[i + 1];
|
|
if (ins_patch_p->patch_state == BTDRV_PATCH_ACT)
|
|
btdrv_ins_patch_write(
|
|
(BTDRV_PATCH_STRUCT *)best2300p_t2_ins_patch_config[i + 1]);
|
|
}
|
|
#else
|
|
for (uint8_t i = 0; i < best2300p_t2_ibrt_ins_patch_config[0]; i++) {
|
|
ins_patch_p =
|
|
(BTDRV_PATCH_STRUCT *)best2300p_t2_ibrt_ins_patch_config[i + 1];
|
|
if (ins_patch_p->patch_state == BTDRV_PATCH_ACT)
|
|
btdrv_ins_patch_write(
|
|
(BTDRV_PATCH_STRUCT *)best2300p_t2_ibrt_ins_patch_config[i + 1]);
|
|
}
|
|
#endif
|
|
} else if (hal_get_chip_metal_id() == HAL_CHIP_METAL_ID_2) {
|
|
#ifdef IBRT
|
|
for (uint8_t i = 0; i < best2300p_t3_ibrt_ins_patch_config[0]; i++) {
|
|
ins_patch_p =
|
|
(BTDRV_PATCH_STRUCT *)best2300p_t3_ibrt_ins_patch_config[i + 1];
|
|
if (ins_patch_p->patch_state == BTDRV_PATCH_ACT)
|
|
btdrv_ins_patch_write(
|
|
(BTDRV_PATCH_STRUCT *)best2300p_t3_ibrt_ins_patch_config[i + 1]);
|
|
}
|
|
#else
|
|
for (uint8_t i = 0; i < best2300p_t3_ins_patch_config[0]; i++) {
|
|
ins_patch_p = (BTDRV_PATCH_STRUCT *)best2300p_t3_ins_patch_config[i + 1];
|
|
if (ins_patch_p->patch_state == BTDRV_PATCH_ACT)
|
|
btdrv_ins_patch_write(
|
|
(BTDRV_PATCH_STRUCT *)best2300p_t3_ins_patch_config[i + 1]);
|
|
}
|
|
#endif
|
|
} else {
|
|
ASSERT(0, "%s:error chip id=%d", __func__, hal_get_chip_metal_id());
|
|
}
|
|
}
|
|
|
|
///////////////////data patch ..////////////////////////////////////
|
|
|
|
static const POSSIBLY_UNUSED uint32_t best2300p_t2_data_patch_config[] = {};
|
|
|
|
void btdrv_data_patch_write(const BTDRV_PATCH_STRUCT *d_patch_p) {
|
|
|
|
uint32_t remap_addr;
|
|
uint8_t i = 0;
|
|
|
|
remap_addr = d_patch_p->patch_remap_address | 1;
|
|
btdrv_write_memory(
|
|
_32_Bit, (BTDRV_PATCH_DATA_COMP_ADDR_START + d_patch_p->patch_index * 4),
|
|
(uint8_t *)&remap_addr, 4);
|
|
btdrv_write_memory(
|
|
_32_Bit, (BTDRV_PATCH_DATA_REMAP_ADDR_START + d_patch_p->patch_index * 4),
|
|
(uint8_t *)&d_patch_p->patch_remap_value, 4);
|
|
|
|
if (d_patch_p->patch_length != 0) // have ram patch data
|
|
{
|
|
for (; i < (d_patch_p->patch_length - 1) / 128; i++) {
|
|
btdrv_write_memory(_32_Bit, d_patch_p->patch_start_address + i * 128,
|
|
(d_patch_p->patch_data + i * 128), 128);
|
|
}
|
|
|
|
btdrv_write_memory(_32_Bit, d_patch_p->patch_start_address + i * 128,
|
|
d_patch_p->patch_data + i * 128,
|
|
d_patch_p->patch_length % 128);
|
|
}
|
|
}
|
|
|
|
void btdrv_ins_patch_disable(uint8_t index) {
|
|
uint32_t addr = 0;
|
|
btdrv_write_memory(_32_Bit, (BTDRV_PATCH_INS_COMP_ADDR_START + index * 4),
|
|
(uint8_t *)&addr, 4);
|
|
}
|
|
|
|
void btdrv_data_patch_init(void) {
|
|
#if 0
|
|
const BTDRV_PATCH_STRUCT *data_patch_p;
|
|
if(hal_get_chip_metal_id() >= HAL_CHIP_METAL_ID_1)
|
|
{
|
|
for(uint8_t i=0; i<best2300p_t2_data_patch_config[0]; i++)
|
|
{
|
|
data_patch_p = (BTDRV_PATCH_STRUCT *)best2300p_t2_data_patch_config[i+1];
|
|
if(data_patch_p->patch_state == BTDRV_PATCH_ACT)
|
|
btdrv_data_patch_write((BTDRV_PATCH_STRUCT *)best2300p_t2_data_patch_config[i+1]);
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
|
|
//////////////////////////////patch enable////////////////////////
|
|
|
|
void btdrv_patch_en(uint8_t en) {
|
|
uint32_t value[2];
|
|
|
|
// set patch enable
|
|
value[0] = 0x2f02 | en;
|
|
// set patch remap address to 0xc0000100
|
|
value[1] = 0x20000100;
|
|
btdrv_write_memory(_32_Bit, BTDRV_PATCH_EN_REG, (uint8_t *)&value, 8);
|
|
}
|
|
|
|
/////////////2300p t3 test mode patch///////////////////////
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch_testmode_0 = {
|
|
0, BTDRV_PATCH_ACT, 0, 0x0002ceb4, 0xe00b0f0f, 0,
|
|
NULL}; // ld_acl_rx() average rssi
|
|
|
|
const uint32_t bes2300p_t3_ins_patch_data_testmode_1[] = {
|
|
/*6a98*/ 0x99049803,
|
|
/*6a9c*/ 0x4b12b470,
|
|
/*6aa0*/ 0x010e5c5a,
|
|
/*6aa4*/ 0x19734d11,
|
|
/*6aa8*/ 0x78244c11,
|
|
/*6aac*/ 0xd20342a2,
|
|
/*6ab0*/ 0x32015498,
|
|
/*6ab4*/ 0xe001b2d2,
|
|
/*6ab8*/ 0x22015570,
|
|
/*6abc*/ 0x5442480a,
|
|
/*6ac0*/ 0x461ab14c,
|
|
/*6ac4*/ 0x23001919,
|
|
/*6ac8*/ 0x0b01f912,
|
|
/*6acc*/ 0xbf004403,
|
|
/*6ad0*/ 0xd1f9428a,
|
|
/*6ad4*/ 0x2300e000,
|
|
/*6ad8*/ 0xf0f4fb93,
|
|
/*6adc*/ 0xbc70b240,
|
|
/*6ae0*/ 0x22019904,
|
|
/*6ae4*/ 0xba00f626, // jump a0206ae4 -> a002cee8
|
|
/*6ae8*/ 0xc0006af8, // addr of rssi_idx_for_agc
|
|
/*6aec*/ 0xc0006afc, // addr of rssi_set_for_agc
|
|
/*6af0*/ 0xc0006af4, // addr of N
|
|
/*6af4*/ 0x00000005, // N : 1 ~ 16
|
|
/*6af8*/ 0x00000000, // rssi_idx_for_agc[3]
|
|
/*6afc*/ 0xbabababa, // rssi_set_for_agc[3*16]
|
|
/*6b00*/ 0xbabababa,
|
|
/*6b04*/ 0xbabababa,
|
|
/*6b08*/ 0xbabababa,
|
|
/*6b0c*/ 0xbabababa,
|
|
/*6b10*/ 0xbabababa,
|
|
/*6b14*/ 0xbabababa,
|
|
/*6b18*/ 0xbabababa,
|
|
/*6b1c*/ 0xbabababa,
|
|
/*6b20*/ 0xbabababa,
|
|
/*6b24*/ 0xbabababa,
|
|
/*6b28*/ 0xbabababa,
|
|
/*6b2c*/ 0xbabababa,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch_testmode_1 = {
|
|
1,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t3_ins_patch_data_testmode_1),
|
|
0x0002cee4,
|
|
0xbdd8f1d9, // jump a002cee4 -> a0206a98
|
|
0xc0006a98,
|
|
(uint8_t *)
|
|
bes2300p_t3_ins_patch_data_testmode_1}; // ld_acl_rx() average rssi
|
|
|
|
const uint32_t bes2300p_t3_ins_patch_data_testmode_2[] = {
|
|
0x2028f843, /*6b3c*/
|
|
0xf8434b08, 0x4b052028, 0x4b0e701a, 0x2201701a, 0xf8434b08,
|
|
0xbf002028, 0xba32f624, 0xc0006b60, 0x00000000, 0xc0006b68,
|
|
0x00000000, 0x00000000, 0x00000000, 0xc0006b78, 0x00000001,
|
|
0x00000001, 0x00000001, 0xc0006b88, 0x00000000, /*6b88*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch_testmode_2 = {
|
|
2,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t3_ins_patch_data_testmode_2),
|
|
0x0002afbc,
|
|
0xbdbef1db,
|
|
0xc0006b3c,
|
|
(uint8_t *)bes2300p_t3_ins_patch_data_testmode_2}; // sync clear count
|
|
|
|
const uint32_t bes2300p_t3_ins_patch_data_testmode_3[] = {
|
|
0x47f0e92d, /*7050*/
|
|
0x4b97b082, 0x236e5c1e, 0xf300fb03, 0x5a9b4a95, 0x4f00f413, 0x8120f040,
|
|
0x46044689, 0x1800ea4f, 0xeb084f91, 0x4b910507, 0xa020f853, 0xf8524a90,
|
|
0x33013020, 0x3020f842, 0xf860f635, 0x42a04601, 0x8088f040, 0xf8534b8a,
|
|
0x4b8a2024, 0x429a681b, 0xf8dad817, 0xebc22084, 0xf0230309, 0xf1b34378,
|
|
0xd9046f80, 0x0302ebc9, 0x4378f023, 0x4a82425b, 0x0024f852, 0x68124a81,
|
|
0xf200fb02, 0xf2404293, 0x4b7f80eb, 0x3000f993, 0x4b7eb9c3, 0xc000f893,
|
|
0x0f00f1bc, 0x462ad00a, 0x0e0ceb05, 0xf9122300, 0x44030b01, 0xd1fa4572,
|
|
0xe0014662, 0x46132200, 0xfcfcfb93, 0xf8804872, 0xe001c000, 0x46132200,
|
|
0xf890486f, 0x4870e000, 0x9000f890, 0xf890486f, 0xfa4fc000, 0xebc9f08e,
|
|
0xfa4f0000, 0x4550fa8c, 0xebc9dd05, 0x48660e0e, 0xe000f880, 0x4864e002,
|
|
0xc000f880, 0x0e00f04f, 0xf840485d, 0xf8dfe024, 0xf85ee178, 0x30010024,
|
|
0x0024f84e, 0x7800485d, 0xd2054286, 0x783f4f5a, 0x360155af, 0xe004b2f6,
|
|
0x78364e57, 0x6007f808, 0x4f4d2601, 0x4282553e, 0x442ada06, 0xf9124405,
|
|
0x44234b01, 0xd1fa42aa, 0xfb934a53, 0x9200f0f0, 0xb2406a14, 0x23002201,
|
|
0xe08147a0, 0xf8534b46, 0x4b4e2024, 0x429a681b, 0xf8dad816, 0xebc22084,
|
|
0xf0230309, 0xf1b34378, 0xd9046f80, 0x0302ebc9, 0x4378f023, 0x4a3e425b,
|
|
0x1024f852, 0x68124a44, 0xf201fb02, 0xd9634293, 0xf9934b42, 0xb9c33000,
|
|
0xf8934b3a, 0xf1bee000, 0xd00a0f00, 0xeb05462a, 0x2300000e, 0x1b01f912,
|
|
0x4282440b, 0x4672d1fa, 0x2200e001, 0xfb934613, 0x4936fefe, 0xe000f881,
|
|
0x2200e001, 0x49334613, 0x49337808, 0xc000f891, 0xf8914932, 0xb241e000,
|
|
0x0101ebcc, 0xf98efa4f, 0xdd044549, 0x0000ebcc, 0x7008492a, 0x4929e002,
|
|
0xe000f881, 0x491c2000, 0x0024f841, 0xf850481c, 0x31011024, 0x1024f840,
|
|
0x7808491c, 0xd2054286, 0x78094920, 0x360155a9, 0xe004b2f6, 0x7809491d,
|
|
0x1007f808, 0x490c2601, 0x4282550e, 0x442ada06, 0xf9124405, 0x440b1b01,
|
|
0xd1fa42aa, 0xfb934a12, 0x9200f0f0, 0xb2406a15, 0x22014621, 0x47a82300,
|
|
0xe8bdb002, 0xbf0087f0,
|
|
0xc0006af8, // rssi_idx_for_agc[link_id] shenxin
|
|
0xd02111f8, // EM_BT_RD(EM_BT_RXBIT_ADDR
|
|
0xc0006afc, // rssi_set_for_agc shenxin
|
|
0xc00009d4, // ld_acl_env[link_id]
|
|
0xc0006b68, // link_no_sync_count[link_id]
|
|
0xc00072fc, // link_agc_thd_tws
|
|
0xc0006b78, // link_no_sync_count_time[link_id]
|
|
0xc0007300, // link_agc_thd_tws_time
|
|
0xc0006b60, // rssi_store_tws
|
|
0xc0006af4, // n shenxin
|
|
0xc0007304, // rssi_tws_step
|
|
0xc0007308, // rssi_min_value_tws
|
|
0xc0004268, // rwip_rf.rxgain_cntl
|
|
0xc000730c, // link_agc_thd_mobile
|
|
0xc0007310, // link_agc_thd_mobile_time
|
|
0xc0006b88, // rssi_store_mobile
|
|
0xc0007314, // rssi_mobile_step
|
|
0xc0007318, // rssi_min_value_mobile
|
|
0xffffffff, // link_agc_thd_tws
|
|
0x00000030, // link_agc_thd_tws_time
|
|
0x00000014, // rssi_tws_step
|
|
0x0000009c, // rssi_min_value_tws
|
|
0xffffffff, // link_agc_thd_mobile
|
|
0x00000030, // link_agc_thd_mobile_time
|
|
0x00000014, // rssi_mobile_step
|
|
0x000000a1, // rssi_min_value_mobile
|
|
0x99029804, 0xfe96f7ff, 0xfc48f632, 0xb898f626, /*7328*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch_testmode_3 = {
|
|
3,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t3_ins_patch_data_testmode_3),
|
|
0x0002d458,
|
|
0xbf60f1d9,
|
|
0xc0007050,
|
|
(uint8_t *)bes2300p_t3_ins_patch_data_testmode_3}; // swagc no sync
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch_testmode_4 = {
|
|
4, BTDRV_PATCH_ACT, 0, 0x0000e47a, 0xe0027b20, 0,
|
|
NULL}; // lm_inq_res_ind_handler() rssi
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch_testmode_5 = {
|
|
5, BTDRV_PATCH_INACT, 0, 0x0002ad78, 0xbf00e009, 0,
|
|
NULL}; // ld_acl_rx_no_sync() rssi
|
|
|
|
const uint32_t bes2300p_t3_ins_patch_data_testmode_6[] = {
|
|
0xf8802300, 0xf8803024, 0xbf003025, 0x30b3f894, 0xbc18f62d,
|
|
}; /* 6b90-6ba0 */
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch_testmode_6 = {
|
|
6,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t3_ins_patch_data_testmode_6),
|
|
0x000343d0,
|
|
0xbbdef1d2,
|
|
0xc0006b90,
|
|
(uint8_t *)
|
|
bes2300p_t3_ins_patch_data_testmode_6}; // nosig test pattern problem
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t3_ins_patch_testmode_7 = {
|
|
7, BTDRV_PATCH_ACT, 0, 0x00000880, 0x26004c0e, 0, NULL,
|
|
}; // rwip_env.sleep_enable=false after hci reset
|
|
|
|
static const uint32_t ins_patch_2300p_t3_config_testmode[] = {
|
|
8,
|
|
(uint32_t)&bes2300p_t3_ins_patch_testmode_0,
|
|
(uint32_t)&bes2300p_t3_ins_patch_testmode_1,
|
|
(uint32_t)&bes2300p_t3_ins_patch_testmode_2,
|
|
(uint32_t)&bes2300p_t3_ins_patch_testmode_3,
|
|
(uint32_t)&bes2300p_t3_ins_patch_testmode_4,
|
|
(uint32_t)&bes2300p_t3_ins_patch_testmode_5,
|
|
(uint32_t)&bes2300p_t3_ins_patch_testmode_6,
|
|
(uint32_t)&bes2300p_t3_ins_patch_testmode_7,
|
|
};
|
|
/////////////2300p t2 test mode patch///////////////////////
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch_testmode_0 = {
|
|
0, BTDRV_PATCH_ACT, 0, 0x00000874, 0x26004c0e, 0, NULL,
|
|
}; ////rwip_env.sleep_enable=false after hci reset
|
|
|
|
const uint32_t bes2300p_t2_ins_patch_data_testmode_1[] = {
|
|
0x4681b083, /*6b30*/
|
|
0x4b022200, 0x2020f843, 0xbddcf623, 0xc0006b44,
|
|
0x00000000, 0x00000000, 0x00000000, /*6b4c*/
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch_testmode_1 = {
|
|
1,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t2_ins_patch_data_testmode_1),
|
|
0x0002a6f4,
|
|
0xba1cf1dc,
|
|
0xc0006b30,
|
|
(uint8_t *)bes2300p_t2_ins_patch_data_testmode_1}; // sync clear count
|
|
|
|
const uint32_t bes2300p_t2_ins_patch_data_testmode_2[] = {
|
|
0x6020f853, 0xf8524a0d, 0x33013020, 0x3020f842, 0x68124a0b,
|
|
0xd90f4293, 0x4a082300, 0x3020f842, 0xb082b402, 0x92004a08,
|
|
0xf06f6a14, 0x46290059, 0x47a02201, 0xbc02b002, 0xbce4f623,
|
|
0xc0006b44, 0xc0006b94, 0x00000010, 0xc00041b4,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch_testmode_2 = {
|
|
2,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t2_ins_patch_data_testmode_2),
|
|
0x0002a550,
|
|
0xbafef1dc,
|
|
0xc0006b50,
|
|
(uint8_t *)bes2300p_t2_ins_patch_data_testmode_2};
|
|
|
|
const uint32_t bes2300p_t2_ins_patch_data_testmode_3[] = {
|
|
/*6f90*/ 0xbf009904,
|
|
/*6f94*/ 0x4b12b470,
|
|
/*6f98*/ 0x010e5c5a,
|
|
/*6f9c*/ 0x19734d11,
|
|
/*6fa0*/ 0x78244c11,
|
|
/*6fa4*/ 0xd20342a2,
|
|
/*6fa8*/ 0x32015498,
|
|
/*6fac*/ 0xe001b2d2,
|
|
/*6fb0*/ 0x22015570,
|
|
/*6fb4*/ 0x5442480a,
|
|
/*6fb8*/ 0x461ab14c,
|
|
/*6fbc*/ 0x23001919,
|
|
/*6fc0*/ 0x0b01f912,
|
|
/*6fc4*/ 0xbf004403,
|
|
/*6fc8*/ 0xd1f9428a,
|
|
/*6fcc*/ 0x2300e000,
|
|
/*6fd0*/ 0xf0f4fb93,
|
|
/*6fd4*/ 0xbc70b240,
|
|
/*6fd8*/ 0x22019904,
|
|
/*6fdc*/ 0xbb8cf628, // jump a002f6f8
|
|
/*6fe0*/ 0xc0006ff0, // addr of rssi_idx_for_agc
|
|
/*6fe4*/ 0xc0006ff4, // addr of rssi_set_for_agc
|
|
/*6fe8*/ 0xc0006fec, // addr of N
|
|
/*6fec*/ 0x00000005, // N : 1 ~ 16
|
|
/*6ff0*/ 0x00000000, // rssi_idx_for_agc[3]
|
|
/*6ff4*/ 0xbabababa, // rssi_set_for_agc[3*16]
|
|
/*6ff8*/ 0xbabababa,
|
|
/*6ffc*/ 0xbabababa,
|
|
/*7000*/ 0xbabababa,
|
|
/*7004*/ 0xbabababa,
|
|
/*7008*/ 0xbabababa,
|
|
/*700c*/ 0xbabababa,
|
|
/*7010*/ 0xbabababa,
|
|
/*7014*/ 0xbabababa,
|
|
/*7018*/ 0xbabababa,
|
|
/*701c*/ 0xbabababa,
|
|
/*7020*/ 0xbabababa,
|
|
/*7024*/ 0xbabababa,
|
|
/*7028*/ 0xbabababa,
|
|
/*702c*/ 0xbabababa,
|
|
}; // 0xc0006f90--->0xc0007074
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch_testmode_3 = {
|
|
3,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t2_ins_patch_data_testmode_3),
|
|
0x0002f6f4,
|
|
0xbc4cf1d7, // jump a002f6f4 -> a0206f90
|
|
0xc0006f90,
|
|
(uint8_t *)
|
|
bes2300p_t2_ins_patch_data_testmode_3}; // ld_acl_rx() average rssi
|
|
|
|
const uint32_t bes2300p_t2_ins_patch_data_testmode_4[] = {
|
|
0x4620461d,
|
|
0x463a4629,
|
|
0xf5f94633,
|
|
0xbdf8fc2b,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch_testmode_4 = {
|
|
4,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t2_ins_patch_data_testmode_4),
|
|
0x000070ec,
|
|
0xbe08f1ff,
|
|
0xc0006d00,
|
|
(uint8_t *)bes2300p_t2_ins_patch_data_testmode_4}; // assert warn
|
|
|
|
const uint32_t bes2300p_t2_ins_patch_data_testmode_5[] = {
|
|
0x4630461f,
|
|
0x462a4639,
|
|
0xf5f94623,
|
|
0xbdf8fc21,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch_testmode_5 = {
|
|
5,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t2_ins_patch_data_testmode_5),
|
|
0x00007070,
|
|
0xbe50f1ff,
|
|
0xc0006d14,
|
|
(uint8_t *)bes2300p_t2_ins_patch_data_testmode_5}; // assert param
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch_testmode_6 = {
|
|
6, BTDRV_PATCH_ACT, 0, 0x0003bbe0, 0xf7c52100, 0, NULL,
|
|
}; /// ble tx test mode switch freq channel problem
|
|
|
|
const uint32_t bes2300p_t2_ins_patch_data_testmode_7[] = {
|
|
0xf8802300, 0xf8803024, 0xbf003025, 0x30b3f894, 0xbe0ef62c,
|
|
}; /* 6d30-6d40 */
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t2_ins_patch_testmode_7 = {
|
|
7,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t2_ins_patch_data_testmode_7),
|
|
0x0003395c,
|
|
0xb9e8f1d3,
|
|
0xc0006d30,
|
|
(uint8_t *)
|
|
bes2300p_t2_ins_patch_data_testmode_7}; // nosig test pattern problem
|
|
|
|
static const uint32_t ins_patch_2300p_t2_config_testmode[] = {
|
|
8,
|
|
(uint32_t)&bes2300p_t2_ins_patch_testmode_0,
|
|
(uint32_t)&bes2300p_t2_ins_patch_testmode_1,
|
|
(uint32_t)&bes2300p_t2_ins_patch_testmode_2,
|
|
(uint32_t)&bes2300p_t2_ins_patch_testmode_3,
|
|
(uint32_t)&bes2300p_t2_ins_patch_testmode_4,
|
|
(uint32_t)&bes2300p_t2_ins_patch_testmode_5,
|
|
(uint32_t)&bes2300p_t2_ins_patch_testmode_6,
|
|
(uint32_t)&bes2300p_t2_ins_patch_testmode_7,
|
|
};
|
|
|
|
/////////////2300p t1 test mode patch///////////////////////
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch_testmode_0 = {
|
|
0, BTDRV_PATCH_ACT, 0, 0x0002f440, 0x789abf00, 0,
|
|
NULL}; /// test mode: remove rxllid's judging condition in ld_acl_rx
|
|
|
|
const uint32_t bes2300p_t1_ins_patch_data_testmode_1[] = {
|
|
0x20fcf8d5, 0xf8928811, 0xf0088007, 0xb909080f, 0x88194b11, 0x0484eb04,
|
|
0x3014f837, 0xf423b29b, 0x4a0f7300, 0xea438812, 0xb29b2342, 0x3014f827,
|
|
0x3014f837, 0xf023b29b, 0xea430378, 0xf82708c8, 0x4b068014, 0xf043781b,
|
|
0xea430304, 0xb28b01c1, 0x3014f82a, 0xbe8ef627,
|
|
0xc000099c, ////loopback_length
|
|
0xc000097d, ////loopback_llid
|
|
0xc0006964, ////rxseq_flag
|
|
0x00000000,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch_testmode_1 = {
|
|
1,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_ins_patch_data_testmode_1),
|
|
0x0002e60c,
|
|
0xb978f1d8,
|
|
0xc0006900,
|
|
(uint8_t *)
|
|
bes2300p_t1_ins_patch_data_testmode_1}; /// test mode: ld_acl_tx_prog
|
|
|
|
const uint32_t bes2300p_t1_ins_patch_data_testmode_2[] = {
|
|
0xfbdcf5fc, 0x3060f890, 0xd01f2b00, 0x30fcf8db, 0xd01b2b00, 0x0f03f1b9,
|
|
0xf1b9d018, 0xd0150f08, 0xf8934b0b, 0x011b31cb, 0x5a9b4a0a, 0x7f80f413,
|
|
0x4b09d10a, 0x4b0a781a, 0x4b08601a, 0x4b09881a, 0x2201601a, 0x601a4b08,
|
|
0xbc32f628, 0xbc2ef628, 0xc0005d34, 0xd02115f2,
|
|
0xc000097d, ////loopback_llid
|
|
0xc000099c, ////loopback_length
|
|
0xc0006a8c, ////rxllid_flag
|
|
0xc0006a90, ////rxlength_flag
|
|
0xc0006a94, ////unack_seqerr_flag
|
|
0x00000000, 0x00000000, 0x00000000,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch_testmode_2 = {
|
|
2,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_ins_patch_data_testmode_2),
|
|
0x0002f2c8,
|
|
0xbbaaf1d7,
|
|
0xc0006a20,
|
|
(uint8_t *)bes2300p_t1_ins_patch_data_testmode_2}; /// test mode: skip rx
|
|
/// seq err in ld_acl_rx
|
|
|
|
#if 0
|
|
const uint32_t bes2300p_t1_ins_patch_data_testmode_3[] =
|
|
{
|
|
0xf015d002,
|
|
0xd0010f24,
|
|
0xbc1af628,
|
|
0xbcfcf628,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch_testmode_3 =
|
|
{
|
|
3,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_ins_patch_data_testmode_3),
|
|
0x0002f2d4,
|
|
0xbbe0f1d7,
|
|
0xc0006a98,
|
|
(uint8_t*)bes2300p_t1_ins_patch_data_testmode_3
|
|
};///test mode: skip crc err in ld_acl_rx
|
|
#else
|
|
const uint32_t bes2300p_t1_ins_patch_data_testmode_3[] = {
|
|
0xf015d006, 0xd0050f24, 0x0f03f1b9, 0xbf00d002, 0xbc16f628, 0xbcf8f628,
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch_testmode_3 = {
|
|
3,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_ins_patch_data_testmode_3),
|
|
0x0002f2d4,
|
|
0xbbe0f1d7,
|
|
0xc0006a98,
|
|
(uint8_t *)bes2300p_t1_ins_patch_data_testmode_3}; /// test mode: skip crc
|
|
/// err in ld_acl_rx
|
|
|
|
#endif
|
|
|
|
const uint32_t bes2300p_t1_ins_patch_data_testmode_4[] = {
|
|
0x700d4914, 0xf891490c, 0x010911cb, 0x5a8a4a0b, 0x2240f3c2, 0x6002480a,
|
|
0x6800480a, 0x2100b150, 0x60014808, 0x68014808, 0x80014808, 0x68014808,
|
|
0x70014808, 0xbcbaf628, 0xc0005d34, 0xd02115f2,
|
|
0xc0006964, ////rxseq_flag
|
|
0xc0006a94, ////unack_seqerr_flag
|
|
0xc0006a90, ////rxlength_flag
|
|
0xc000099c, ////loopback_length
|
|
0xc0006a8c, ////rxllid_flag
|
|
0xc000097d, ////loopback_llid
|
|
};
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch_testmode_4 = {
|
|
4,
|
|
BTDRV_PATCH_ACT,
|
|
sizeof(bes2300p_t1_ins_patch_data_testmode_4),
|
|
0x0002f464,
|
|
0xbb2af1d7,
|
|
0xc0006abc,
|
|
(uint8_t *)bes2300p_t1_ins_patch_data_testmode_4}; /// test mode: ld_acl_rx
|
|
|
|
const BTDRV_PATCH_STRUCT bes2300p_t1_ins_patch_testmode_5 = {
|
|
5, BTDRV_PATCH_ACT, 0, 0x00000100, 0x20004b15, 0, NULL,
|
|
}; ////rwip_env.sleep_enable=false after hci reset
|
|
|
|
static const uint32_t ins_patch_2300p_t1_config_testmode[] = {
|
|
6,
|
|
(uint32_t)&bes2300p_t1_ins_patch_testmode_0,
|
|
(uint32_t)&bes2300p_t1_ins_patch_testmode_1,
|
|
(uint32_t)&bes2300p_t1_ins_patch_testmode_2,
|
|
(uint32_t)&bes2300p_t1_ins_patch_testmode_3,
|
|
(uint32_t)&bes2300p_t1_ins_patch_testmode_4,
|
|
(uint32_t)&bes2300p_t1_ins_patch_testmode_5,
|
|
};
|
|
|
|
void btdrv_ins_patch_test_init(void) {
|
|
const BTDRV_PATCH_STRUCT *ins_patch_p;
|
|
|
|
btdrv_patch_en(0);
|
|
|
|
for (uint8_t i = 0; i < 56; i++) {
|
|
btdrv_ins_patch_disable(i);
|
|
}
|
|
bt_drv_reg_op_for_test_mode_disable();
|
|
|
|
if (hal_get_chip_metal_id() == HAL_CHIP_METAL_ID_0) {
|
|
for (uint8_t i = 0; i < ins_patch_2300p_t1_config_testmode[0]; i++) {
|
|
ins_patch_p =
|
|
(BTDRV_PATCH_STRUCT *)ins_patch_2300p_t1_config_testmode[i + 1];
|
|
if (ins_patch_p->patch_state == BTDRV_PATCH_ACT)
|
|
btdrv_ins_patch_write(
|
|
(BTDRV_PATCH_STRUCT *)ins_patch_2300p_t1_config_testmode[i + 1]);
|
|
}
|
|
} else if (hal_get_chip_metal_id() == HAL_CHIP_METAL_ID_1) {
|
|
for (uint8_t i = 0; i < ins_patch_2300p_t2_config_testmode[0]; i++) {
|
|
ins_patch_p =
|
|
(BTDRV_PATCH_STRUCT *)ins_patch_2300p_t2_config_testmode[i + 1];
|
|
if (ins_patch_p->patch_state == BTDRV_PATCH_ACT)
|
|
btdrv_ins_patch_write(
|
|
(BTDRV_PATCH_STRUCT *)ins_patch_2300p_t2_config_testmode[i + 1]);
|
|
}
|
|
|
|
} else if (hal_get_chip_metal_id() == HAL_CHIP_METAL_ID_2) {
|
|
for (uint8_t i = 0; i < ins_patch_2300p_t3_config_testmode[0]; i++) {
|
|
ins_patch_p =
|
|
(BTDRV_PATCH_STRUCT *)ins_patch_2300p_t3_config_testmode[i + 1];
|
|
if (ins_patch_p->patch_state == BTDRV_PATCH_ACT)
|
|
btdrv_ins_patch_write(
|
|
(BTDRV_PATCH_STRUCT *)ins_patch_2300p_t3_config_testmode[i + 1]);
|
|
}
|
|
bt_drv_reg_op_disable_swagc_nosync_count();
|
|
} else {
|
|
ASSERT(0, "%s:error chip id=%d", __func__, hal_get_chip_metal_id());
|
|
}
|
|
|
|
btdrv_patch_en(1);
|
|
}
|