Skip to content
Permalink
Browse files

bcm43455c0: added new firmware version 7.45.189 from Cypress Linux Wi…

…Fi Driver Release (FMAC) [2019-05-08] (https://community.cypress.com/docs/DOC-17441).
  • Loading branch information...
matthiasseemoo committed Jul 4, 2019
1 parent fd4c249 commit b5b8ba6d1aed2d365ad6485fe75ea16c526e0202
@@ -0,0 +1,29 @@
include definitions.mk

all: ucode.bin flashpatches.c

ucode.bin: $(RAM_FILE) definitions.mk
@printf "\033[0;31m EXTRACTING UCODE\033[0m\n"
$(Q)dd if=$< of=$@ bs=1 skip=$$(($(UCODESTART)-$(RAMSTART))) count=$$(($(UCODESIZE))) 2>/dev/null

templateram.bin: $(RAM_FILE) definitions.mk
@printf "\033[0;31m EXTRACTING TEMPLATERAM\033[0m\n"
$(Q)dd if=$< of=$@ bs=1 skip=$$(($(TEMPLATERAMSTART)-$(RAMSTART))) count=$$(($(TEMPLATERAMSIZE))) 2>/dev/null

flashpatches.c: $(RAM_FILE) definitions.mk
@printf "\033[0;31m EXTRACTING FLASHPATCHES\033[0m\n"
$(Q)printf "#include <patcher.h>\n\n" > flashpatches.c
$(Q)$(NEXMON_ROOT)/buildtools/flash_patch_extractor/fpext -r $< -s $(RAMSTART) -b $(FP_CONFIG_ORIGBASE) -e $(FP_CONFIG_ORIGEND) >> $@

rom.bin: ../rom.bin
@printf "\033[0;31m APPLYING FLASHPATCHES TO CLEAN ROM\033[0m\n"
$(Q)$(NEXMON_ROOT)/buildtools/flash_patch_extractor/fpext -r $(RAM_FILE) -s $(RAMSTART) -b $(FP_CONFIG_ORIGBASE) -e $(FP_CONFIG_ORIGEND) -i $< -o $@ -t $(ROMSTART) > /dev/null

complete.bin: $(RAM_FILE) rom.bin
@printf "\033[0;31m MERGING %s and rom.bin into %s\033[0m\n" $< $@
$(Q)dd if=rom.bin of=$@ bs=1 seek=$$(($(ROMSTART))) conv=notrunc 2>/dev/null
$(Q)dd if=$< of=$@ bs=1 seek=$$(($(RAMSTART))) conv=notrunc 2>/dev/null

clean:
@printf "\033[0;31m CLEANING\033[0m\n"
$(Q)rm -f ucode.bin templateram.bin flashpatches.c rom.bin
Binary file not shown.
@@ -0,0 +1,41 @@
NEXMON_CHIP=CHIP_VER_BCM43455c0
NEXMON_CHIP_NUM=`$(NEXMON_ROOT)/buildtools/scripts/getdefine.sh $(NEXMON_CHIP)`
NEXMON_FW_VERSION=FW_VER_7_45_189
NEXMON_FW_VERSION_NUM=`$(NEXMON_ROOT)/buildtools/scripts/getdefine.sh $(NEXMON_FW_VERSION)`

NEXMON_ARCH=armv7-r

RAM_FILE=brcmfmac43455-sdio.bin
RAMSTART=0x198000
RAMSIZE=0xC8000

ROM_FILE=rom.bin
ROMSTART=0x0
ROMSIZE=0xB0000

WLC_UCODE_WRITE_BL_HOOK_ADDR = 0x2103E4
HNDRTE_RECLAIM_0_END_PTR = 0x19A2F8
HNDRTE_RECLAIM_0_END = 0x22E95C
TEMPLATERAMSTART_PTR = 0x0

PATCHSIZE=0x4000
PATCHSTART=$$(($(HNDRTE_RECLAIM_0_END) - $(PATCHSIZE)))

# original ucode start and size
UCODESTART=0x2207A4
UCODESIZE=0xD8D8

# original template ram start and size
TEMPLATERAMSTART=0x0
TEMPLATERAMSIZE=0x0

FP_DATA_END_PTR=0x201C80
FP_CONFIG_BASE_PTR_1 = 0x2041A4
FP_CONFIG_END_PTR_1 = 0x2041A0
FP_CONFIG_BASE_PTR_2 = 0x204428
FP_CONFIG_END_PTR_2 = 0x204424
FP_CONFIG_SIZE=0xc00
FP_CONFIG_BASE=$$(($(PATCHSTART) - $(FP_CONFIG_SIZE)))
FP_DATA_BASE=0x198800
FP_CONFIG_ORIGBASE=0x199000
FP_CONFIG_ORIGEND=0x199B1C
@@ -0,0 +1,52 @@
/***************************************************************************
* *
* ########### ########### ########## ########## *
* ############ ############ ############ ############ *
* ## ## ## ## ## ## ## *
* ## ## ## ## ## ## ## *
* ########### #### ###### ## ## ## ## ###### *
* ########### #### # ## ## ## ## # # *
* ## ## ###### ## ## ## ## # # *
* ## ## # ## ## ## ## # # *
* ############ ##### ###### ## ## ## ##### ###### *
* ########### ########### ## ## ## ########## *
* *
* S E C U R E M O B I L E N E T W O R K I N G *
* *
* This file is part of NexMon. *
* *
* Copyright (c) 2016 NexMon Team *
* *
* NexMon is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* NexMon is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with NexMon. If not, see <http://www.gnu.org/licenses/>. *
* *
**************************************************************************/

#ifndef STRUCTS_H
#define STRUCTS_H

/* band types */
#define WLC_BAND_AUTO 0 /* auto-select */
#define WLC_BAND_5G 1 /* 5 Ghz */
#define WLC_BAND_2G 2 /* 2.4 Ghz */
#define WLC_BAND_ALL 3 /* all bands */

#ifndef PAD
#define _PADLINE(line) pad ## line
#define _XSTR(line) _PADLINE(line)
#define PAD _XSTR(__LINE__)
#endif

#include "../structs.common.h"

#endif /*STRUCTS_H */
@@ -160,6 +160,7 @@ AT(CHIP_VER_BCM4358, FW_VER_ALL, 0x8290)
AT(CHIP_VER_BCM4356, FW_VER_ALL, 0x80A4)
AT(CHIP_VER_BCM4335b0, FW_VER_ALL, 0x17EA8)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x19A4B4)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x19A480)
void *
hndrte_add_timer(void *t, int ms, int periodic)
RETURN_DUMMY
@@ -220,6 +221,7 @@ AT(CHIP_VER_BCM43455, FW_VER_7_45_77_0, 0x19ED78)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x182238)
AT(CHIP_VER_BCM43455, FW_VER_7_45_77_0_23_8_2017, 0x19ED88)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x19A17C)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x19A0FC)
void *
malloc(unsigned int size, char alignment)
RETURN_DUMMY
@@ -243,6 +245,7 @@ AT(CHIP_VER_BCM43455, FW_VER_7_45_77_0, 0x19A0E8)
AT(CHIP_VER_BCM43455, FW_VER_7_120_5_1_sta_C0, 0x19A0F8)
AT(CHIP_VER_BCM43455, FW_VER_7_45_77_0_23_8_2017, 0x19A0F8)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x19a098)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x19A018)
AT(CHIP_VER_BCM43909b0, FW_VER_ALL, 0x64588)
AT(CHIP_VER_BCM4361b0, FW_VER_ALL, 0x116D6C)
int
@@ -305,6 +308,7 @@ AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_40_r581243, 0x1C3D48)
AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_43_r639704, 0x1C3F94)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1d1860)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1D9C62)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1DF5BE)
void *
phy_reg_write(void *pi, int addr, int val)
RETURN_DUMMY
@@ -361,6 +365,7 @@ AT(CHIP_VER_BCM43596a0, FW_VER_9_96_4_sta_c0, 0x162BB8)
AT(CHIP_VER_BCM43451b1, FW_VER_ALL, 0x2504)
AT(CHIP_VER_BCM43455, FW_VER_ALL, 0x3834)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x3834)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x3834)
int
printf(const char *format, ...)
RETURN_DUMMY
@@ -750,6 +755,7 @@ AT(CHIP_VER_BCM43430a1, FW_VER_7_45_41_26_r640327, 0x7ef8)
AT(CHIP_VER_BCM43430a1, FW_VER_7_45_41_46, 0x7fe4)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x199b64)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1A1D00)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1A6A84)
int
wl_send(void *src, void *dev, void *p)
RETURN_DUMMY
@@ -762,13 +768,15 @@ AT(CHIP_VER_BCM4358, FW_VER_7_112_201_3, 0x199866)
AT(CHIP_VER_BCM4356, FW_VER_ALL, 0x8AABC)
AT(CHIP_VER_BCM4330, FW_VER_ALL, 0x8182F8)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1a2438)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1A71BC)
AT(CHIP_VER_BCM4361b0, FW_VER_13_38_55_1_sta, 0x177994)
int
wl_sendup(void *wl, void *wlif, void *p)
RETURN_DUMMY

AT(CHIP_VER_BCM43596a0, FW_VER_9_96_4_sta_c0, 0x1624AC)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1a2438)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1A71BC)
void
wl_sendup_newdrv(void *wl, void *wlif, void *p, int numpkt)
VOID_DUMMY
@@ -783,6 +791,7 @@ AT(CHIP_VER_BCM4335b0, FW_VER_ALL, 0x29BB8)
AT(CHIP_VER_BCM43596a0, FW_VER_ALL, 0x369B8)
AT(CHIP_VER_BCM43455, FW_VER_ALL, 0x1ED5C)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1A270C)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1A7490)
void
wl_monitor(void *wl, void *sts, void *p)
VOID_DUMMY
@@ -1251,6 +1260,7 @@ AT(CHIP_VER_BCM4358, FW_VER_7_112_201_3, 0x1D169E)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1D2742)
AT(CHIP_VER_BCM4356, FW_VER_7_35_101_5_sta, 0x1D9D96)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1DBDD6)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1E1AC6)
void
wlc_phyreg_enter(void *pi)
VOID_DUMMY
@@ -1262,6 +1272,7 @@ AT(CHIP_VER_BCM4358, FW_VER_7_112_201_3, 0x1D16B8)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1D275C)
AT(CHIP_VER_BCM4356, FW_VER_7_35_101_5_sta, 0x1D9DB0)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1DBE06)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1E1AF6)
void
wlc_phyreg_exit(void *pi)
VOID_DUMMY
@@ -1291,6 +1302,7 @@ AT(CHIP_VER_BCM43455, FW_VER_7_45_77_0, 0x1D0DFC)
AT(CHIP_VER_BCM43455, FW_VER_7_120_5_1_sta_C0, 0x1CF9A0)
AT(CHIP_VER_BCM43455, FW_VER_7_45_77_0_23_8_2017, 0x1D13C8)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1C9FA4)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1CF494)
int
wlc_phy_chan2freq_acphy(void *pi, int chanspec, int *freq, void **chan_info_ptr)
RETURN_DUMMY
@@ -1323,6 +1335,7 @@ AT(CHIP_VER_BCM43430a1, FW_VER_7_45_41_26_r640327, 0x23F3C)
AT(CHIP_VER_BCM43430a1, FW_VER_7_45_41_46, 0x24368)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1d3f54)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1DE6B8)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1E44DC)
void
wlc_phy_cordic(int theta, void *val)
VOID_DUMMY
@@ -1341,6 +1354,7 @@ wlc_phy_loadsampletable_acphy(void *pi, void *tone_buf, unsigned short num_samps
VOID_DUMMY

AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1CD7F4)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1D2D2C)
void
wlc_phy_loadsampletable_acphy_new(void *pi, void *tone_buf, uint16 num_samps, uint8 alloc, uint8 conj)
VOID_DUMMY
@@ -1366,6 +1380,7 @@ AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_40_r581243, 0x1BE6BC)
AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_43_r639704, 0x1BE908)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1c7e68)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1D2C8C)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1D81C0)
void
wlc_phy_runsamples_acphy(void *pi, unsigned short num_samps, unsigned short loops, unsigned short wait, unsigned char iqmode, unsigned char mac_based)
VOID_DUMMY
@@ -1377,13 +1392,15 @@ VOID_DUMMY

AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_43_r639704, 0x1B9904)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1CDEA0)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1D33D8)
void
wlc_phy_set_tx_bbmult_acphy(void *pi, unsigned short *bb_mult, unsigned short core)
VOID_DUMMY

AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_43_r639704, 0x1BB502)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1c472c)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1CF462)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1D499A)
void
wlc_phy_get_txgain_settings_by_index_acphy(void *pi, void *txgain_settings, int8 txpwrindex)
VOID_DUMMY
@@ -1395,6 +1412,7 @@ AT(CHIP_VER_BCM4358, FW_VER_7_112_201_3, 0x1C69C4)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1c7a68)
AT(CHIP_VER_BCM4356, FW_VER_7_35_101_5_sta, 0x1CF5F4)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1D2A04)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1D7F38)
void
wlc_phy_stay_in_carriersearch_acphy(void *pi, int enable)
VOID_DUMMY
@@ -1403,6 +1421,7 @@ AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_40_r581243, 0x1BE562)
AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_43_r639704, 0x1BE7AE)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1c79a8)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1D2964)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1D7E98)
void
wlc_phy_stopplayback_acphy(void *pi)
VOID_DUMMY
@@ -1434,6 +1453,7 @@ RETURN_DUMMY
AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_43_r639704, 0x1B998C)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1c3344)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1CDF2C)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1D3464)
void
wlc_phy_txcal_txgain_cleanup_acphy(void *pi, void *orig_txgain)
VOID_DUMMY
@@ -1461,6 +1481,7 @@ VOID_DUMMY
AT(CHIP_VER_BCM4339, FW_VER_6_37_32_RC23_34_43_r639704, 0x1C01B4)
AT(CHIP_VER_BCM4358, FW_VER_7_112_300_14, 0x1cb57c)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_154, 0x1D3AF8)
AT(CHIP_VER_BCM43455c0, FW_VER_7_45_189, 0x1D902C)
void
wlc_phy_txpwrctrl_enable_acphy(void *pi, unsigned char ctrl_type)
VOID_DUMMY
@@ -93,6 +93,7 @@

// for CHIP_VER_BCM43455c0
#define FW_VER_7_45_154 110
#define FW_VER_7_45_189 111

// for CHIP_VER_BCM43909b0
#define FW_VER_7_15_168_108 210

0 comments on commit b5b8ba6

Please sign in to comment.
You can’t perform that action at this time.