It is possible to have a platform specific firmware files released by Broadcom to support specific partner modules or added features.


In order to accommodate specific firmware files for WLAN and BT/BLE, the common firmware files could be replaced in ./resources/firmware/<WLAN_CHIP>/ for WLAN and ./libraries/drivers/bluetooth/firmware/<BT_CHIP><BT_CHIP_REVISION>/ for BT/BLE. Replacing these firmware files will effect all other platforms because they share the same firmware files.




Instead of replacing the WLAN firmware file in common ./resources/firmware/<WLAN_CHIP>/ directory, the platform specific WLAN firmware could be placed in the platform directory. Such as, ./platforms/<platform>/firmware/ directory could be created and the platform specific WLAN firmware could be placed in there.


In order for makefiles to pick up the correct firmware, below lines need to be added in the platform makefile, ./platforms/<platform>/<platform>.mk:


$(NAME)_RESOURCES += ../platforms/$(PLATFORM)/firmware/PlatformSpecificFW.bin





Append the BT_CHIP_REVISION located in the ./platforms/<platform>/<platform>.mk makefile with your specific platform name.



BT_CHIP_REVISION      := B0_PlatformSpecificHCD


Create a directory in the ./libraries/drivers/bluetooth/firmware and name it as <BT_CHIP><BT_CHIP_REVISION> defined in the platform makefile.

Place the platform specific BT/BLE firmware file in this directory.


For example:

If the BCM943341WCD1 platform has a specific firmware, the following modifications could be made in the platform makefile.


BT_CHIP           := 43341
BT_CHIP_REVISION  := B0_PlatformSpecificHCD


The ./libraries/drivers/bluetooth/firmware/43341B0_PlatformSpecificHCD specific directory is created based on above changes. The platform specific BT/BLE firmware file bt_firmware_image.c file is placed in this new directory.


If needed, a platform specific firmware for 40MHz operations could be placed in the ./libraries/drivers/bluetooth/firmware/43341B0_PlatformSpecificHCD/40MHz directory as well.