From afb334b4a1bbf42e7e7e9f306493bcb4c82f7f06 Mon Sep 17 00:00:00 2001 From: vipako <31728686+vipako@users.noreply.github.com> Date: Tue, 1 Jun 2021 09:29:17 +0200 Subject: [PATCH] Code applicable to arm_CR4 is applied also for ARM_CM4 (address == 0) and optimization: eliminate write to reset_instr, when is not needed --- WiFi_Host_Driver/src/bus_protocols/whd_bus_common.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/WiFi_Host_Driver/src/bus_protocols/whd_bus_common.c b/WiFi_Host_Driver/src/bus_protocols/whd_bus_common.c index 67cd8c4..c6e9df6 100644 --- a/WiFi_Host_Driver/src/bus_protocols/whd_bus_common.c +++ b/WiFi_Host_Driver/src/bus_protocols/whd_bus_common.c @@ -121,7 +121,8 @@ static whd_result_t whd_bus_common_download_resource(whd_driver_t whd_driver, wh uint32_t i; uint32_t size_out; uint32_t reset_instr = 0; - + uint32_t write_addr= address; + result = whd_resource_size(whd_driver, resource, &image_size); if (result != WHD_SUCCESS) @@ -150,18 +151,18 @@ static whd_result_t whd_bus_common_download_resource(whd_driver_t whd_driver, wh for (i = 0; i < blocks_count; i++) { CHECK_RETURN(whd_get_resource_block(whd_driver, resource, i, (const uint8_t **)&image, &size_out) ); - if ( (resource == WHD_RESOURCE_WLAN_FIRMWARE) && (reset_instr == 0) ) + if ( (address != 0) && (resource == WHD_RESOURCE_WLAN_FIRMWARE) && (reset_instr == 0) ) { /* Copy the starting address of the firmware into a global variable */ reset_instr = *( (uint32_t *)(&image[0]) ); } - result = whd_bus_transfer_backplane_bytes(whd_driver, BUS_WRITE, address, size_out, &image[0]); + result = whd_bus_transfer_backplane_bytes(whd_driver, BUS_WRITE, write_addr, size_out, &image[0]); if (result != WHD_SUCCESS) { WPRINT_WHD_ERROR( ("%s: Failed to write firmware image\n", __FUNCTION__) ); goto exit; } - address += size_out; + write_addr += size_out; } /* Below part of the code is applicable to arm_CR4 type chips only