mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-06 03:40:16 +00:00
chipset/nxp: select firmware based on chip id for v3 bootloader
This commit is contained in:
parent
9277963bcf
commit
f2b175aa13
@ -65,6 +65,11 @@
|
|||||||
#define NXP_CHIP_ID_IW416 0x7201
|
#define NXP_CHIP_ID_IW416 0x7201
|
||||||
#define NXP_CHIP_ID_IW612 0x7601
|
#define NXP_CHIP_ID_IW612 0x7601
|
||||||
|
|
||||||
|
// firmwares
|
||||||
|
#define NXP_FIRMWARE_W9098 "uartuart9098_bt_v1.bin"
|
||||||
|
#define NXP_FIRMWARE_IW416 "uartiw416_bt_v0.bin"
|
||||||
|
#define NXP_FIRMWARE_IW612 "uartspi_n61x_v1.bin.se"
|
||||||
|
|
||||||
#define NXP_MAX_RESEND_COUNT 5
|
#define NXP_MAX_RESEND_COUNT 5
|
||||||
|
|
||||||
// prototypes
|
// prototypes
|
||||||
@ -80,6 +85,8 @@ static const btstack_uart_t * nxp_uart_driver;
|
|||||||
static btstack_timer_source_t nxp_timer;
|
static btstack_timer_source_t nxp_timer;
|
||||||
static bool nxp_have_firmware;
|
static bool nxp_have_firmware;
|
||||||
|
|
||||||
|
static uint16_t nxp_chip_id;
|
||||||
|
|
||||||
static const uint8_t * nxp_fw_data;
|
static const uint8_t * nxp_fw_data;
|
||||||
static uint32_t nxp_fw_size;
|
static uint32_t nxp_fw_size;
|
||||||
static uint32_t nxp_fw_offset;
|
static uint32_t nxp_fw_offset;
|
||||||
@ -95,6 +102,22 @@ static uint8_t nxp_output_buffer[2048 + 1];
|
|||||||
static char nxp_firmware_path[1000];
|
static char nxp_firmware_path[1000];
|
||||||
static FILE * nxp_firmware_file;
|
static FILE * nxp_firmware_file;
|
||||||
|
|
||||||
|
static char *nxp_fw_name_from_chipid(uint16_t chip_id)
|
||||||
|
{
|
||||||
|
switch (chip_id) {
|
||||||
|
case NXP_CHIP_ID_W9098:
|
||||||
|
return NXP_FIRMWARE_W9098;
|
||||||
|
break;
|
||||||
|
case NXP_CHIP_ID_IW416:
|
||||||
|
return NXP_FIRMWARE_IW416;
|
||||||
|
case NXP_CHIP_ID_IW612:
|
||||||
|
return NXP_FIRMWARE_IW612;
|
||||||
|
default:
|
||||||
|
log_error("Unknown chip id 0x%04x", chip_id);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void nxp_load_firmware(void) {
|
static void nxp_load_firmware(void) {
|
||||||
if (nxp_firmware_file == NULL){
|
if (nxp_firmware_file == NULL){
|
||||||
log_info("chipset-bcm: open file %s", nxp_firmware_path);
|
log_info("chipset-bcm: open file %s", nxp_firmware_path);
|
||||||
@ -209,7 +232,9 @@ static void nxp_w4_fw_req(void){
|
|||||||
nxp_send_ack_v1(nxp_dummy);
|
nxp_send_ack_v1(nxp_dummy);
|
||||||
break;
|
break;
|
||||||
case NXP_V3_CHIP_VER_PKT:
|
case NXP_V3_CHIP_VER_PKT:
|
||||||
printf("RECV: NXP_V3_CHIP_VER_PKT , id = 0x%04x, loader 0x%02x\n", little_endian_read_16(nxp_response_buffer, 1), nxp_response_buffer[3]);
|
nxp_chip_id = little_endian_read_16(nxp_response_buffer, 1);
|
||||||
|
btstack_strcpy(nxp_firmware_path, sizeof(nxp_firmware_path), nxp_fw_name_from_chipid(nxp_chip_id));
|
||||||
|
printf("RECV: NXP_V3_CHIP_VER_PKT, id = 0x%04x, loader 0x%02x -> firmware '%s'\n", nxp_chip_id, nxp_response_buffer[3], nxp_firmware_path);
|
||||||
nxp_send_ack_v3(nxp_dummy);
|
nxp_send_ack_v3(nxp_dummy);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user