diff --git a/firmwares/.gitignore b/firmwares/.gitignore index 7afc584a5..4abb6503c 100644 --- a/firmwares/.gitignore +++ b/firmwares/.gitignore @@ -12,3 +12,5 @@ rom.bin clm.bin d11ucode_*.bin sr_source_code_*.bin +rtecdc_dongle.bin +rtecdc_pageable.bin diff --git a/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/Makefile b/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/Makefile new file mode 100644 index 000000000..d319e5d84 --- /dev/null +++ b/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/Makefile @@ -0,0 +1,31 @@ +include definitions.mk + +all: d11ucodex_btcxmu132_2.bin d11ucode_btcxmu132_2.bin d11ucodex_mu132_2.bin d11ucode_mu132_2.bin $(DONGLE_FW_FILE) $(HOST_FW_FILE) + +d11ucodex_btcxmu132_2.bin: $(FW_FILE) definitions.mk + @printf "\033[0;31m EXTRACTING FIRST UCODE\033[0m\n" + $(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET)+$(UCODE0START)-$(DONGLE_RAMSTART))) count=$$(($(UCODE0SIZE))) 2>/dev/null + +d11ucode_btcxmu132_2.bin: $(FW_FILE) definitions.mk + @printf "\033[0;31m EXTRACTING SECOND UCODE\033[0m\n" + $(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET)+$(UCODE1START)-$(DONGLE_RAMSTART))) count=$$(($(UCODE1SIZE))) 2>/dev/null + +d11ucodex_mu132_2.bin: $(FW_FILE) definitions.mk + @printf "\033[0;31m EXTRACTING THIRD UCODE\033[0m\n" + $(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET)+$(UCODE2START)-$(DONGLE_RAMSTART))) count=$$(($(UCODE2SIZE))) 2>/dev/null + +d11ucode_mu132_2.bin: $(FW_FILE) definitions.mk + @printf "\033[0;31m EXTRACTING FORTH UCODE\033[0m\n" + $(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET)+$(UCODE3START)-$(DONGLE_RAMSTART))) count=$$(($(UCODE3SIZE))) 2>/dev/null + +$(DONGLE_FW_FILE): $(FW_FILE) definitions.mk + @printf "\033[0;31m EXTRACTING DONGLE FIRMWARE IMAGE\033[0m\n" + $(Q)dd if=$< of=$@ bs=1 skip=$$(($(DONGLE_FW_OFFSET))) count=$$(($(DONGLE_FW_SIZE))) 2>/dev/null + +$(HOST_FW_FILE): $(FW_FILE) definitions.mk + @printf "\033[0;31m EXTRACTING HOST FIRMWARE IMAGE\033[0m\n" + $(Q)dd if=$< of=$@ bs=1 skip=$$(($(HOST_FW_OFFSET))) count=$$(($(HOST_FW_SIZE))) 2>/dev/null + +clean: + @printf "\033[0;31m CLEANING\033[0m\n" + $(Q)rm -f d11ucodex_btcxmu132_2.bin d11ucode_btcxmu132_2.bin d11ucodex_mu132_2.bin d11ucode_mu132_2.bin $(DONGLE_FW_FILE) $(HOST_FW_FILE) diff --git a/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/definitions.mk b/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/definitions.mk new file mode 100644 index 000000000..83919fdee --- /dev/null +++ b/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/definitions.mk @@ -0,0 +1,61 @@ +NEXMON_CHIP=CHIP_VER_BCM6715b0 +NEXMON_CHIP_NUM=`$(NEXMON_ROOT)/buildtools/scripts/getdefine.sh $(NEXMON_CHIP)` +NEXMON_FW_VERSION=FW_VER_17_10_188_6401_r808804_ax86upro +NEXMON_FW_VERSION_NUM=`$(NEXMON_ROOT)/buildtools/scripts/getdefine.sh $(NEXMON_FW_VERSION)` + +NEXMON_ARCH=armv7-a + +FW_FILE=rtecdc.bin +DONGLE_FW_OFFSET=0xC +DONGLE_FW_SIZE=0x1AD804 +HOST_FW_OFFSET=0x1AD818 +HOST_FW_SIZE=0xF6000 + +DONGLE_FW_FILE=rtecdc_dongle.bin +DONGLE_RAMSTART=0x0 +DONGLE_RAMSIZE=0x380000 + +HOST_FW_FILE=rtecdc_pageable.bin +HOST_RAMSTART=0x800000 +HOST_RAMSIZE=0xF6000 + +# ucodes +UCODE0START=0x12CF6C +UCODE0SIZE=0xC788 +UCODE0START_PTR=0x12CF54 +UCODE0SIZE_PTR=0x12CF58 + +UCODE1START=0x1396F4 +UCODE1SIZE=0x110E8 +UCODE1START_PTR=0x12CF50 +UCODE1SIZE_PTR=0x12CF4C + +UCODE2START=0x14A7E4 +UCODE2SIZE=0xC898 +UCODE2START_PTR=0x12CF64 +UCODE2SIZE_PTR=0x12CF68 + +UCODE3START=0x157080 +UCODE3SIZE=0x10330 +UCODE3START_PTR=0x12CF60 +UCODE3SIZE_PTR=0x12CF5C + +WLC_BMAC_PROCESS_UCODE_SR_BL_HOOK_ADDR=0x102BBE + +WLC_UCODE_WRITE_BL_HOOK_0_ADDR=0x12CEE8 +WLC_UCODE_WRITE_BL_HOOK_1_ADDR=0x12CEFC +WLC_UCODEX_WRITE_BL_HOOK_ADDR=0x12CF08 + +# patch area +RECLAIM_3_END_PTR=0xE1A0 +RECLAIM_3_ORIG_END=0x168000 + +PATCHSIZE=0x1000 +PATCHSTART=$$(($(RECLAIM_3_ORIG_END) - $(PATCHSIZE))) + +VERSION_PTR_1=0x21064 +VERSION_PTR_2=0xE9574 +VERSION_PTR_3=0x100120 +VERSION_PTR_4=0xE81EC +DATE_PTR=0x21070 +TIME_PTR=0x21060 diff --git a/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/rtecdc.bin b/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/rtecdc.bin new file mode 100644 index 000000000..1459c263a Binary files /dev/null and b/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/rtecdc.bin differ diff --git a/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/structs.h b/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/structs.h new file mode 100644 index 000000000..14cfcfd02 --- /dev/null +++ b/firmwares/bcm6715b0/17_10_188_6401_r808804_ax86upro/structs.h @@ -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 . * + * * + **************************************************************************/ + +#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 */ diff --git a/firmwares/bcm6715b0/Makefile b/firmwares/bcm6715b0/Makefile new file mode 100644 index 000000000..a8b2e248c --- /dev/null +++ b/firmwares/bcm6715b0/Makefile @@ -0,0 +1,11 @@ +SUBDIRS = $(dir $(wildcard */definitions.mk)) + +all: $(SUBDIRS) + +$(SUBDIRS): FORCE +ifndef (,$(wildcard $(addprefix $@, Makefile))) + @printf "\033[0;31m EXECUTING MAKE FOR FIRMWARE VERSION\033[0m %s\n" $@ + $(Q)make -C $@ +endif + +FORCE: diff --git a/firmwares/bcm6715b0/structs.common.h b/firmwares/bcm6715b0/structs.common.h new file mode 100644 index 000000000..7b16f4d7f --- /dev/null +++ b/firmwares/bcm6715b0/structs.common.h @@ -0,0 +1,1108 @@ +/*************************************************************************** + * * + * ########### ########### ########## ########## * + * ############ ############ ############ ############ * + * ## ## ## ## ## ## ## * + * ## ## ## ## ## ## ## * + * ########### #### ###### ## ## ## ## ###### * + * ########### #### # ## ## ## ## # # * + * ## ## ###### ## ## ## ## # # * + * ## ## # ## ## ## ## # # * + * ############ ##### ###### ## ## ## ##### ###### * + * ########### ########### ## ## ## ########## * + * * + * 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) 2023 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 . * + * * + **************************************************************************/ + +#ifndef STRUCTS_COMMON_H +#define STRUCTS_COMMON_H + +#include + +struct sk_buf { +}; +typedef struct sk_buff sk_buff; +typedef struct sk_buff lbuf; + +struct wlc_info { + uint32 PAD; /* 0x000 */ + uint32 PAD; /* 0x004 */ + uint32 PAD; /* 0x008 */ + uint32 PAD; /* 0x00c */ + uint32 PAD; /* 0x010 */ + uint32 PAD; /* 0x014 */ + uint32 PAD; /* 0x018 */ + uint32 PAD; /* 0x01c */ + uint32 PAD; /* 0x020 */ + uint32 PAD; /* 0x024 */ + uint32 PAD; /* 0x028 */ + uint32 PAD; /* 0x02c */ + uint32 PAD; /* 0x030 */ + uint32 PAD; /* 0x034 */ + uint32 PAD; /* 0x038 */ + uint32 PAD; /* 0x03c */ + uint32 PAD; /* 0x040 */ + uint32 PAD; /* 0x044 */ + uint32 PAD; /* 0x048 */ + uint32 PAD; /* 0x04c */ + uint32 PAD; /* 0x050 */ + uint32 PAD; /* 0x054 */ + uint32 PAD; /* 0x058 */ + uint32 PAD; /* 0x05c */ + uint32 PAD; /* 0x060 */ + uint32 PAD; /* 0x064 */ + uint32 PAD; /* 0x068 */ + uint32 PAD; /* 0x06c */ + uint32 PAD; /* 0x070 */ + uint32 PAD; /* 0x074 */ + uint32 PAD; /* 0x078 */ + uint32 PAD; /* 0x07c */ + uint32 PAD; /* 0x080 */ + uint32 PAD; /* 0x084 */ + uint32 PAD; /* 0x088 */ + uint32 PAD; /* 0x08c */ + uint32 PAD; /* 0x090 */ + uint32 PAD; /* 0x094 */ + uint32 PAD; /* 0x098 */ + uint32 PAD; /* 0x09c */ + uint32 PAD; /* 0x0a0 */ + uint32 PAD; /* 0x0a4 */ + uint32 PAD; /* 0x0a8 */ + uint32 PAD; /* 0x0ac */ + uint32 PAD; /* 0x0b0 */ + uint32 PAD; /* 0x0b4 */ + uint32 PAD; /* 0x0b8 */ + uint32 PAD; /* 0x0bc */ + uint32 PAD; /* 0x0c0 */ + uint32 PAD; /* 0x0c4 */ + uint32 PAD; /* 0x0c8 */ + uint32 PAD; /* 0x0cc */ + uint32 PAD; /* 0x0d0 */ + uint32 PAD; /* 0x0d4 */ + uint32 PAD; /* 0x0d8 */ + uint32 PAD; /* 0x0dc */ + uint32 PAD; /* 0x0e0 */ + uint32 PAD; /* 0x0e4 */ + uint32 PAD; /* 0x0e8 */ + uint32 PAD; /* 0x0ec */ + uint32 PAD; /* 0x0f0 */ + uint32 PAD; /* 0x0f4 */ + uint32 PAD; /* 0x0f8 */ + uint32 PAD; /* 0x0fc */ + uint32 PAD; /* 0x100 */ + uint32 PAD; /* 0x104 */ + uint32 PAD; /* 0x108 */ + uint32 PAD; /* 0x10c */ + uint32 PAD; /* 0x110 */ + uint32 PAD; /* 0x114 */ + uint32 PAD; /* 0x118 */ + uint32 PAD; /* 0x11c */ + uint32 PAD; /* 0x120 */ + uint32 PAD; /* 0x124 */ + uint32 PAD; /* 0x128 */ + uint32 PAD; /* 0x12c */ + uint32 PAD; /* 0x130 */ + uint32 PAD; /* 0x134 */ + uint32 PAD; /* 0x138 */ + uint32 PAD; /* 0x13c */ + uint32 PAD; /* 0x140 */ + uint32 PAD; /* 0x144 */ + uint32 PAD; /* 0x148 */ + uint32 PAD; /* 0x14c */ + uint32 PAD; /* 0x150 */ + uint32 PAD; /* 0x154 */ + uint32 PAD; /* 0x158 */ + uint32 PAD; /* 0x15c */ + uint32 PAD; /* 0x160 */ + uint32 PAD; /* 0x164 */ + uint32 PAD; /* 0x168 */ + uint32 PAD; /* 0x16c */ + uint32 PAD; /* 0x170 */ + uint32 PAD; /* 0x174 */ + uint32 PAD; /* 0x178 */ + uint32 PAD; /* 0x17c */ + uint32 PAD; /* 0x180 */ + uint32 PAD; /* 0x184 */ + uint32 PAD; /* 0x188 */ + uint32 PAD; /* 0x18c */ + uint32 PAD; /* 0x190 */ + uint32 PAD; /* 0x194 */ + uint32 PAD; /* 0x198 */ + uint32 PAD; /* 0x19c */ + uint32 PAD; /* 0x1a0 */ + uint32 PAD; /* 0x1a4 */ + uint32 PAD; /* 0x1a8 */ + uint32 PAD; /* 0x1ac */ + uint32 PAD; /* 0x1b0 */ + uint32 PAD; /* 0x1b4 */ + uint32 PAD; /* 0x1b8 */ + uint32 PAD; /* 0x1bc */ + uint32 PAD; /* 0x1c0 */ + uint32 PAD; /* 0x1c4 */ + uint32 PAD; /* 0x1c8 */ + uint32 PAD; /* 0x1cc */ + uint32 PAD; /* 0x1d0 */ + uint32 PAD; /* 0x1d4 */ + uint32 PAD; /* 0x1d8 */ + uint32 PAD; /* 0x1dc */ + uint32 PAD; /* 0x1e0 */ + uint32 PAD; /* 0x1e4 */ + uint32 PAD; /* 0x1e8 */ + uint32 PAD; /* 0x1ec */ + uint32 PAD; /* 0x1f0 */ + uint32 PAD; /* 0x1f4 */ + uint32 PAD; /* 0x1f8 */ + uint32 PAD; /* 0x1fc */ + uint32 PAD; /* 0x200 */ + uint32 PAD; /* 0x204 */ + uint32 PAD; /* 0x208 */ + uint32 PAD; /* 0x20c */ + uint32 PAD; /* 0x210 */ + uint32 PAD; /* 0x214 */ + uint32 PAD; /* 0x218 */ + uint32 PAD; /* 0x21c */ + uint32 PAD; /* 0x220 */ + uint32 PAD; /* 0x224 */ + uint32 PAD; /* 0x228 */ + uint32 PAD; /* 0x22c */ + uint32 PAD; /* 0x230 */ + uint32 PAD; /* 0x234 */ + uint32 PAD; /* 0x238 */ + uint32 PAD; /* 0x23c */ + uint32 PAD; /* 0x240 */ + uint32 PAD; /* 0x244 */ + uint32 PAD; /* 0x248 */ + uint32 PAD; /* 0x24c */ + uint32 PAD; /* 0x250 */ + uint32 PAD; /* 0x254 */ + uint32 PAD; /* 0x258 */ + uint32 PAD; /* 0x25c */ + uint32 PAD; /* 0x260 */ + uint32 PAD; /* 0x264 */ + uint32 PAD; /* 0x268 */ + uint32 PAD; /* 0x26c */ + uint32 PAD; /* 0x270 */ + uint32 PAD; /* 0x274 */ + uint32 PAD; /* 0x278 */ + uint32 PAD; /* 0x27c */ + uint32 PAD; /* 0x280 */ + uint32 PAD; /* 0x284 */ + uint32 PAD; /* 0x288 */ + uint32 PAD; /* 0x28c */ + uint32 PAD; /* 0x290 */ + uint32 PAD; /* 0x294 */ + uint32 PAD; /* 0x298 */ + uint32 PAD; /* 0x29c */ + uint32 PAD; /* 0x2a0 */ + uint32 PAD; /* 0x2a4 */ + uint32 PAD; /* 0x2a8 */ + uint32 PAD; /* 0x2ac */ + uint32 PAD; /* 0x2b0 */ + uint32 PAD; /* 0x2b4 */ + uint32 PAD; /* 0x2b8 */ + uint32 PAD; /* 0x2bc */ + uint32 PAD; /* 0x2c0 */ + uint32 PAD; /* 0x2c4 */ + uint32 PAD; /* 0x2c8 */ + uint32 PAD; /* 0x2cc */ + uint32 PAD; /* 0x2d0 */ + uint32 PAD; /* 0x2d4 */ + uint32 PAD; /* 0x2d8 */ + uint32 PAD; /* 0x2dc */ + uint32 PAD; /* 0x2e0 */ + uint32 PAD; /* 0x2e4 */ + uint32 PAD; /* 0x2e8 */ + uint32 PAD; /* 0x2ec */ + uint32 PAD; /* 0x2f0 */ + uint32 PAD; /* 0x2f4 */ + uint32 PAD; /* 0x2f8 */ + uint32 PAD; /* 0x2fc */ + uint32 PAD; /* 0x300 */ + uint32 PAD; /* 0x304 */ + uint32 PAD; /* 0x308 */ + uint32 PAD; /* 0x30c */ + uint32 PAD; /* 0x310 */ + uint32 PAD; /* 0x314 */ + uint32 PAD; /* 0x318 */ + uint32 PAD; /* 0x31c */ + uint32 PAD; /* 0x320 */ + uint32 PAD; /* 0x324 */ + uint32 PAD; /* 0x328 */ + uint32 PAD; /* 0x32c */ + uint32 PAD; /* 0x330 */ + uint32 PAD; /* 0x334 */ + uint32 PAD; /* 0x338 */ + uint32 PAD; /* 0x33c */ + uint32 PAD; /* 0x340 */ + uint32 PAD; /* 0x344 */ + uint32 PAD; /* 0x348 */ + uint32 PAD; /* 0x34c */ + uint32 PAD; /* 0x350 */ + uint32 PAD; /* 0x354 */ + uint32 PAD; /* 0x358 */ + uint32 PAD; /* 0x35c */ + uint32 PAD; /* 0x360 */ + uint32 PAD; /* 0x364 */ + uint32 PAD; /* 0x368 */ + uint32 PAD; /* 0x36c */ + uint32 PAD; /* 0x370 */ + uint32 PAD; /* 0x374 */ + uint32 PAD; /* 0x378 */ + uint32 PAD; /* 0x37c */ + uint32 PAD; /* 0x380 */ + uint32 PAD; /* 0x384 */ + uint32 PAD; /* 0x388 */ + uint32 PAD; /* 0x38c */ + uint32 PAD; /* 0x390 */ + uint32 PAD; /* 0x394 */ + uint32 PAD; /* 0x398 */ + uint32 PAD; /* 0x39c */ + uint32 PAD; /* 0x3a0 */ + uint32 PAD; /* 0x3a4 */ + uint32 PAD; /* 0x3a8 */ + uint32 PAD; /* 0x3ac */ + uint32 PAD; /* 0x3b0 */ + uint32 PAD; /* 0x3b4 */ + uint32 PAD; /* 0x3b8 */ + uint32 PAD; /* 0x3bc */ + uint32 PAD; /* 0x3c0 */ + uint32 PAD; /* 0x3c4 */ + uint32 PAD; /* 0x3c8 */ + uint32 PAD; /* 0x3cc */ + uint32 PAD; /* 0x3d0 */ + uint32 PAD; /* 0x3d4 */ + uint32 PAD; /* 0x3d8 */ + uint32 PAD; /* 0x3dc */ + uint32 PAD; /* 0x3e0 */ + uint32 PAD; /* 0x3e4 */ + uint32 PAD; /* 0x3e8 */ + uint32 PAD; /* 0x3ec */ + uint32 PAD; /* 0x3f0 */ + uint32 PAD; /* 0x3f4 */ + uint32 PAD; /* 0x3f8 */ + uint32 PAD; /* 0x3fc */ + uint32 PAD; /* 0x400 */ + uint32 PAD; /* 0x404 */ + uint32 PAD; /* 0x408 */ + uint32 PAD; /* 0x40c */ + uint32 PAD; /* 0x410 */ + uint32 PAD; /* 0x414 */ + uint32 PAD; /* 0x418 */ + uint32 PAD; /* 0x41c */ + uint32 PAD; /* 0x420 */ + uint32 PAD; /* 0x424 */ + uint32 PAD; /* 0x428 */ + uint32 PAD; /* 0x42c */ + uint32 PAD; /* 0x430 */ + uint32 PAD; /* 0x434 */ + uint32 PAD; /* 0x438 */ + uint32 PAD; /* 0x43c */ + uint32 PAD; /* 0x440 */ + uint32 PAD; /* 0x444 */ + uint32 PAD; /* 0x448 */ + uint32 PAD; /* 0x44c */ + uint32 PAD; /* 0x450 */ + uint32 PAD; /* 0x454 */ + uint32 PAD; /* 0x458 */ + uint32 PAD; /* 0x45c */ + uint32 PAD; /* 0x460 */ + uint32 PAD; /* 0x464 */ + uint32 PAD; /* 0x468 */ + uint32 PAD; /* 0x46c */ + uint32 PAD; /* 0x470 */ + uint32 PAD; /* 0x474 */ + uint32 PAD; /* 0x478 */ + uint32 PAD; /* 0x47c */ + uint32 PAD; /* 0x480 */ + uint32 PAD; /* 0x484 */ + uint32 PAD; /* 0x488 */ + uint32 PAD; /* 0x48c */ + uint32 PAD; /* 0x490 */ + uint32 PAD; /* 0x494 */ + uint32 PAD; /* 0x498 */ + uint32 PAD; /* 0x49c */ + uint32 PAD; /* 0x4a0 */ + uint32 PAD; /* 0x4a4 */ + uint32 PAD; /* 0x4a8 */ + uint32 PAD; /* 0x4ac */ + uint32 PAD; /* 0x4b0 */ + uint32 PAD; /* 0x4b4 */ + uint32 PAD; /* 0x4b8 */ + uint32 PAD; /* 0x4bc */ + uint32 PAD; /* 0x4c0 */ + uint32 PAD; /* 0x4c4 */ + uint32 PAD; /* 0x4c8 */ + uint32 PAD; /* 0x4cc */ + uint32 PAD; /* 0x4d0 */ + uint32 PAD; /* 0x4d4 */ + uint32 PAD; /* 0x4d8 */ + uint32 PAD; /* 0x4dc */ + uint32 PAD; /* 0x4e0 */ + uint32 PAD; /* 0x4e4 */ + uint32 PAD; /* 0x4e8 */ + uint32 PAD; /* 0x4ec */ + uint32 PAD; /* 0x4f0 */ + uint32 PAD; /* 0x4f4 */ + uint32 PAD; /* 0x4f8 */ + uint32 PAD; /* 0x4fc */ + uint32 PAD; /* 0x500 */ + uint32 PAD; /* 0x504 */ + uint32 PAD; /* 0x508 */ + uint32 PAD; /* 0x50c */ + uint32 PAD; /* 0x510 */ + uint32 PAD; /* 0x514 */ + uint32 PAD; /* 0x518 */ + uint32 PAD; /* 0x51c */ + uint32 PAD; /* 0x520 */ + uint32 PAD; /* 0x524 */ + uint32 PAD; /* 0x528 */ + uint32 PAD; /* 0x52c */ + uint32 PAD; /* 0x530 */ + uint32 PAD; /* 0x534 */ + uint32 PAD; /* 0x538 */ + uint32 PAD; /* 0x53c */ + uint32 PAD; /* 0x540 */ + uint32 PAD; /* 0x544 */ + uint32 PAD; /* 0x548 */ + uint32 PAD; /* 0x54c */ + uint32 PAD; /* 0x550 */ + uint32 PAD; /* 0x554 */ + uint32 PAD; /* 0x558 */ + uint32 PAD; /* 0x55c */ + uint32 PAD; /* 0x560 */ + uint32 PAD; /* 0x564 */ + uint32 PAD; /* 0x568 */ + uint32 PAD; /* 0x56c */ + uint32 PAD; /* 0x570 */ + uint32 PAD; /* 0x574 */ + uint32 PAD; /* 0x578 */ + uint32 PAD; /* 0x57c */ + uint32 PAD; /* 0x580 */ + uint32 PAD; /* 0x584 */ + uint32 PAD; /* 0x588 */ + uint32 PAD; /* 0x58c */ + uint32 PAD; /* 0x590 */ + uint32 PAD; /* 0x594 */ + uint32 PAD; /* 0x598 */ + uint32 PAD; /* 0x59c */ + uint32 PAD; /* 0x5a0 */ + uint32 PAD; /* 0x5a4 */ + uint32 PAD; /* 0x5a8 */ + uint32 PAD; /* 0x5ac */ + uint32 PAD; /* 0x5b0 */ + uint32 PAD; /* 0x5b4 */ + uint32 PAD; /* 0x5b8 */ + uint32 PAD; /* 0x5bc */ + uint32 PAD; /* 0x5c0 */ + uint32 PAD; /* 0x5c4 */ + uint32 PAD; /* 0x5c8 */ + uint32 PAD; /* 0x5cc */ + uint32 PAD; /* 0x5d0 */ + uint32 PAD; /* 0x5d4 */ + uint32 PAD; /* 0x5d8 */ + uint32 PAD; /* 0x5dc */ + uint32 PAD; /* 0x5e0 */ + uint32 PAD; /* 0x5e4 */ + uint32 PAD; /* 0x5e8 */ + uint32 PAD; /* 0x5ec */ + uint32 PAD; /* 0x5f0 */ + uint32 PAD; /* 0x5f4 */ + uint32 PAD; /* 0x5f8 */ + uint32 PAD; /* 0x5fc */ + uint32 PAD; /* 0x600 */ + uint32 PAD; /* 0x604 */ + uint32 PAD; /* 0x608 */ + uint32 PAD; /* 0x60c */ + uint32 PAD; /* 0x610 */ + uint32 PAD; /* 0x614 */ + uint32 PAD; /* 0x618 */ + uint32 PAD; /* 0x61c */ + uint32 PAD; /* 0x620 */ + uint32 PAD; /* 0x624 */ + uint32 PAD; /* 0x628 */ + uint32 PAD; /* 0x62c */ + uint32 PAD; /* 0x630 */ + uint32 PAD; /* 0x634 */ + uint32 PAD; /* 0x638 */ + uint32 PAD; /* 0x63c */ + uint32 PAD; /* 0x640 */ + uint32 PAD; /* 0x644 */ + uint32 PAD; /* 0x648 */ + uint32 PAD; /* 0x64c */ + uint32 PAD; /* 0x650 */ + uint32 PAD; /* 0x654 */ + uint32 PAD; /* 0x658 */ + uint32 PAD; /* 0x65c */ + uint32 PAD; /* 0x660 */ + uint32 PAD; /* 0x664 */ + uint32 PAD; /* 0x668 */ + uint32 PAD; /* 0x66c */ + uint32 PAD; /* 0x670 */ + uint32 PAD; /* 0x674 */ + uint32 PAD; /* 0x678 */ + uint32 PAD; /* 0x67c */ + uint32 PAD; /* 0x680 */ + uint32 PAD; /* 0x684 */ + uint32 PAD; /* 0x688 */ + uint32 PAD; /* 0x68c */ + uint32 PAD; /* 0x690 */ + uint32 PAD; /* 0x694 */ + uint32 PAD; /* 0x698 */ + uint32 PAD; /* 0x69c */ + uint32 PAD; /* 0x6a0 */ + uint32 PAD; /* 0x6a4 */ + uint32 PAD; /* 0x6a8 */ + uint32 PAD; /* 0x6ac */ + uint32 PAD; /* 0x6b0 */ + uint32 PAD; /* 0x6b4 */ + uint32 PAD; /* 0x6b8 */ + uint32 PAD; /* 0x6bc */ + uint32 PAD; /* 0x6c0 */ + uint32 PAD; /* 0x6c4 */ + uint32 PAD; /* 0x6c8 */ + uint32 PAD; /* 0x6cc */ + uint32 PAD; /* 0x6d0 */ + uint32 PAD; /* 0x6d4 */ + uint32 PAD; /* 0x6d8 */ + uint32 PAD; /* 0x6dc */ + uint32 PAD; /* 0x6e0 */ + uint32 PAD; /* 0x6e4 */ + uint32 PAD; /* 0x6e8 */ + uint32 PAD; /* 0x6ec */ + uint32 PAD; /* 0x6f0 */ + uint32 PAD; /* 0x6f4 */ + uint32 PAD; /* 0x6f8 */ + uint32 PAD; /* 0x6fc */ + uint32 PAD; /* 0x700 */ + uint32 PAD; /* 0x704 */ + uint32 PAD; /* 0x708 */ + uint32 PAD; /* 0x70c */ + uint32 PAD; /* 0x710 */ + uint32 PAD; /* 0x714 */ + uint32 PAD; /* 0x718 */ + uint32 PAD; /* 0x71c */ + uint32 PAD; /* 0x720 */ + uint32 PAD; /* 0x724 */ + uint32 PAD; /* 0x728 */ + uint32 PAD; /* 0x72c */ + uint32 PAD; /* 0x730 */ + uint32 PAD; /* 0x734 */ + uint32 PAD; /* 0x738 */ + uint32 PAD; /* 0x73c */ + uint32 PAD; /* 0x740 */ + uint32 PAD; /* 0x744 */ + uint32 PAD; /* 0x748 */ + uint32 PAD; /* 0x74c */ + uint32 PAD; /* 0x750 */ + uint32 PAD; /* 0x754 */ + uint32 PAD; /* 0x758 */ + uint32 PAD; /* 0x75c */ + uint32 PAD; /* 0x760 */ + uint32 PAD; /* 0x764 */ + uint32 PAD; /* 0x768 */ + uint32 PAD; /* 0x76c */ + uint32 PAD; /* 0x770 */ + uint32 PAD; /* 0x774 */ + uint32 PAD; /* 0x778 */ + uint32 PAD; /* 0x77c */ + uint32 PAD; /* 0x780 */ + uint32 PAD; /* 0x784 */ + uint32 PAD; /* 0x788 */ + uint32 PAD; /* 0x78c */ + uint32 PAD; /* 0x790 */ + uint32 PAD; /* 0x794 */ + uint32 PAD; /* 0x798 */ + uint32 PAD; /* 0x79c */ + uint32 PAD; /* 0x7a0 */ + uint32 PAD; /* 0x7a4 */ + uint32 PAD; /* 0x7a8 */ + uint32 PAD; /* 0x7ac */ + uint32 PAD; /* 0x7b0 */ + uint32 PAD; /* 0x7b4 */ + uint32 PAD; /* 0x7b8 */ + uint32 PAD; /* 0x7bc */ + uint32 PAD; /* 0x7c0 */ + uint32 PAD; /* 0x7c4 */ + uint32 PAD; /* 0x7c8 */ + uint32 PAD; /* 0x7cc */ + uint32 PAD; /* 0x7d0 */ + uint32 PAD; /* 0x7d4 */ + uint32 PAD; /* 0x7d8 */ + uint32 PAD; /* 0x7dc */ + uint32 PAD; /* 0x7e0 */ + uint32 PAD; /* 0x7e4 */ + uint32 PAD; /* 0x7e8 */ + uint32 PAD; /* 0x7ec */ + uint32 PAD; /* 0x7f0 */ + uint32 PAD; /* 0x7f4 */ + uint32 PAD; /* 0x7f8 */ + uint32 PAD; /* 0x7fc */ + uint32 PAD; /* 0x800 */ + uint32 PAD; /* 0x804 */ + uint32 PAD; /* 0x808 */ + uint32 PAD; /* 0x80c */ + uint32 PAD; /* 0x810 */ + uint32 PAD; /* 0x814 */ + uint32 PAD; /* 0x818 */ + uint32 PAD; /* 0x81c */ + uint32 PAD; /* 0x820 */ + uint32 PAD; /* 0x824 */ + uint32 PAD; /* 0x828 */ + uint32 PAD; /* 0x82c */ + uint32 PAD; /* 0x830 */ + uint32 PAD; /* 0x834 */ + uint32 PAD; /* 0x838 */ + uint32 PAD; /* 0x83c */ + uint32 PAD; /* 0x840 */ + uint32 PAD; /* 0x844 */ + uint32 PAD; /* 0x848 */ + uint32 PAD; /* 0x84c */ + uint32 PAD; /* 0x850 */ + uint32 PAD; /* 0x854 */ + uint32 PAD; /* 0x858 */ + uint32 PAD; /* 0x85c */ + uint32 PAD; /* 0x860 */ + uint32 PAD; /* 0x864 */ + uint32 PAD; /* 0x868 */ + uint32 PAD; /* 0x86c */ + uint32 PAD; /* 0x870 */ + uint32 PAD; /* 0x874 */ + uint32 PAD; /* 0x878 */ + uint32 PAD; /* 0x87c */ + uint32 PAD; /* 0x880 */ + uint32 PAD; /* 0x884 */ + uint32 PAD; /* 0x888 */ + uint32 PAD; /* 0x88c */ + uint32 PAD; /* 0x890 */ + uint32 PAD; /* 0x894 */ + uint32 PAD; /* 0x898 */ + uint32 PAD; /* 0x89c */ + uint32 PAD; /* 0x8a0 */ + uint32 PAD; /* 0x8a4 */ + uint32 PAD; /* 0x8a8 */ + uint32 PAD; /* 0x8ac */ + uint32 PAD; /* 0x8b0 */ + uint32 PAD; /* 0x8b4 */ + uint32 PAD; /* 0x8b8 */ + uint32 PAD; /* 0x8bc */ + uint32 PAD; /* 0x8c0 */ + uint32 PAD; /* 0x8c4 */ + uint32 PAD; /* 0x8c8 */ + uint32 PAD; /* 0x8cc */ + uint32 PAD; /* 0x8d0 */ + uint32 PAD; /* 0x8d4 */ + uint32 PAD; /* 0x8d8 */ + uint32 PAD; /* 0x8dc */ + uint32 PAD; /* 0x8e0 */ + uint32 PAD; /* 0x8e4 */ + uint32 PAD; /* 0x8e8 */ + uint32 PAD; /* 0x8ec */ + uint32 PAD; /* 0x8f0 */ + uint32 PAD; /* 0x8f4 */ + uint32 PAD; /* 0x8f8 */ + uint32 PAD; /* 0x8fc */ + uint32 PAD; /* 0x900 */ + uint32 PAD; /* 0x904 */ + uint32 PAD; /* 0x908 */ + uint32 PAD; /* 0x90c */ + uint32 PAD; /* 0x910 */ + uint32 PAD; /* 0x914 */ + uint32 PAD; /* 0x918 */ + uint32 PAD; /* 0x91c */ +} __attribute__((packed)); + +struct wlc_hw_info { + struct wlc_info *wlc; /* 0x000 */ + uint32 PAD; /* 0x004 */ + uint32 PAD; /* 0x008 */ + uint32 PAD; /* 0x00c */ + uint32 PAD; /* 0x010 */ + uint32 PAD; /* 0x014 */ + uint32 PAD; /* 0x018 */ + uint32 PAD; /* 0x01c */ + uint32 PAD; /* 0x020 */ + uint32 PAD; /* 0x024 */ + uint32 PAD; /* 0x028 */ + uint32 PAD; /* 0x02c */ + uint32 PAD; /* 0x030 */ + uint32 PAD; /* 0x034 */ + uint32 PAD; /* 0x038 */ + uint32 PAD; /* 0x03c */ + uint32 PAD; /* 0x040 */ + uint32 PAD; /* 0x044 */ + uint32 PAD; /* 0x048 */ + uint32 PAD; /* 0x04c */ + uint32 PAD; /* 0x050 */ + uint32 PAD; /* 0x054 */ + uint32 PAD; /* 0x058 */ + uint32 PAD; /* 0x05c */ + uint32 PAD; /* 0x060 */ + uint32 PAD; /* 0x064 */ + uint32 PAD; /* 0x068 */ + uint32 PAD; /* 0x06c */ + uint32 PAD; /* 0x070 */ + uint32 PAD; /* 0x074 */ + uint32 PAD; /* 0x078 */ + uint32 PAD; /* 0x07c */ + uint32 PAD; /* 0x080 */ + uint32 PAD; /* 0x084 */ + uint32 PAD; /* 0x088 */ + uint32 PAD; /* 0x08c */ + uint32 PAD; /* 0x090 */ + uint32 PAD; /* 0x094 */ + uint32 PAD; /* 0x098 */ + uint32 PAD; /* 0x09c */ + uint32 PAD; /* 0x0a0 */ + uint32 PAD; /* 0x0a4 */ + uint32 PAD; /* 0x0a8 */ + uint32 PAD; /* 0x0ac */ + uint32 PAD; /* 0x0b0 */ + uint32 PAD; /* 0x0b4 */ + uint32 PAD; /* 0x0b8 */ + uint32 PAD; /* 0x0bc */ + uint32 PAD; /* 0x0c0 */ + uint32 PAD; /* 0x0c4 */ + uint32 PAD; /* 0x0c8 */ + uint32 PAD; /* 0x0cc */ + uint32 PAD; /* 0x0d0 */ + uint32 PAD; /* 0x0d4 */ + uint32 PAD; /* 0x0d8 */ + uint32 PAD; /* 0x0dc */ + uint32 PAD; /* 0x0e0 */ + uint32 PAD; /* 0x0e4 */ + uint32 PAD; /* 0x0e8 */ + uint32 PAD; /* 0x0ec */ + uint32 PAD; /* 0x0f0 */ + uint32 PAD; /* 0x0f4 */ + uint32 PAD; /* 0x0f8 */ + uint32 PAD; /* 0x0fc */ + uint32 PAD; /* 0x100 */ + uint32 PAD; /* 0x104 */ + uint32 PAD; /* 0x108 */ + uint32 PAD; /* 0x10c */ + uint32 PAD; /* 0x110 */ + uint32 PAD; /* 0x114 */ + uint32 PAD; /* 0x118 */ + uint32 PAD; /* 0x11c */ + uint32 PAD; /* 0x120 */ + uint32 PAD; /* 0x124 */ + uint32 PAD; /* 0x128 */ + uint32 PAD; /* 0x12c */ + uint32 PAD; /* 0x130 */ + uint32 PAD; /* 0x134 */ + uint32 PAD; /* 0x138 */ + uint32 PAD; /* 0x13c */ + uint32 PAD; /* 0x140 */ + uint32 PAD; /* 0x144 */ + uint32 PAD; /* 0x148 */ + uint32 PAD; /* 0x14c */ + uint32 PAD; /* 0x150 */ + uint32 PAD; /* 0x154 */ + uint32 PAD; /* 0x158 */ + uint32 PAD; /* 0x15c */ + uint32 PAD; /* 0x160 */ + uint32 PAD; /* 0x164 */ + uint32 PAD; /* 0x168 */ + uint32 PAD; /* 0x16c */ + uint32 PAD; /* 0x170 */ + uint32 PAD; /* 0x174 */ + struct d11regs *regs; /* 0x178 */ + uint32 PAD; /* 0x17c */ + uint32 PAD; /* 0x180 */ + uint32 PAD; /* 0x184 */ + uint32 PAD; /* 0x188 */ + uint32 PAD; /* 0x18c */ + uint32 PAD; /* 0x190 */ + uint32 PAD; /* 0x194 */ + uint32 PAD; /* 0x198 */ + uint32 PAD; /* 0x19c */ + uint32 PAD; /* 0x1a0 */ + uint32 PAD; /* 0x1a4 */ + uint32 PAD; /* 0x1a8 */ + uint32 PAD; /* 0x1ac */ + uint32 PAD; /* 0x1b0 */ + uint32 PAD; /* 0x1b4 */ + uint32 PAD; /* 0x1b8 */ + uint32 PAD; /* 0x1bc */ + uint32 PAD; /* 0x1c0 */ + uint32 PAD; /* 0x1c4 */ + uint32 PAD; /* 0x1c8 */ + uint32 PAD; /* 0x1cc */ + uint32 PAD; /* 0x1d0 */ + uint32 PAD; /* 0x1d4 */ + uint32 PAD; /* 0x1d8 */ + uint32 PAD; /* 0x1dc */ + uint32 PAD; /* 0x1e0 */ + uint32 PAD; /* 0x1e4 */ + uint32 PAD; /* 0x1e8 */ + uint32 PAD; /* 0x1ec */ + uint32 PAD; /* 0x1f0 */ + uint32 PAD; /* 0x1f4 */ + uint32 PAD; /* 0x1f8 */ + uint32 PAD; /* 0x1fc */ + uint32 PAD; /* 0x200 */ + uint32 PAD; /* 0x204 */ + uint32 PAD; /* 0x208 */ + uint32 PAD; /* 0x20c */ + uint32 PAD; /* 0x210 */ + uint32 PAD; /* 0x214 */ + uint32 PAD; /* 0x218 */ + uint32 PAD; /* 0x21c */ + uint32 PAD; /* 0x220 */ + uint32 PAD; /* 0x224 */ + uint32 PAD; /* 0x228 */ + uint32 PAD; /* 0x22c */ + uint32 PAD; /* 0x230 */ + uint32 PAD; /* 0x234 */ + uint32 PAD; /* 0x238 */ + uint32 PAD; /* 0x23c */ + uint32 PAD; /* 0x240 */ + uint32 PAD; /* 0x244 */ + uint32 PAD; /* 0x248 */ + uint32 PAD; /* 0x24c */ + uint32 PAD; /* 0x250 */ + uint32 PAD; /* 0x254 */ + uint32 PAD; /* 0x258 */ + uint32 PAD; /* 0x25c */ + uint32 PAD; /* 0x260 */ + uint32 PAD; /* 0x264 */ + uint32 PAD; /* 0x268 */ + uint32 PAD; /* 0x26c */ + uint32 PAD; /* 0x270 */ + uint32 PAD; /* 0x274 */ + uint32 PAD; /* 0x278 */ + uint32 PAD; /* 0x27c */ + uint32 PAD; /* 0x280 */ + uint32 PAD; /* 0x284 */ + uint32 PAD; /* 0x288 */ + uint32 PAD; /* 0x28c */ + uint32 PAD; /* 0x290 */ + uint32 PAD; /* 0x294 */ + uint32 PAD; /* 0x298 */ + uint32 PAD; /* 0x29c */ + uint32 PAD; /* 0x2a0 */ + uint32 PAD; /* 0x2a4 */ + uint32 PAD; /* 0x2a8 */ + uint32 PAD; /* 0x2ac */ + uint32 PAD; /* 0x2b0 */ + uint32 PAD; /* 0x2b4 */ + uint32 PAD; /* 0x2b8 */ + uint32 PAD; /* 0x2bc */ + uint32 PAD; /* 0x2c0 */ + uint32 PAD; /* 0x2c4 */ + uint32 PAD; /* 0x2c8 */ + uint32 PAD; /* 0x2cc */ + uint32 PAD; /* 0x2d0 */ + uint32 PAD; /* 0x2d4 */ + uint32 PAD; /* 0x2d8 */ + uint32 PAD; /* 0x2dc */ + uint32 PAD; /* 0x2e0 */ + uint32 PAD; /* 0x2e4 */ + uint32 PAD; /* 0x2e8 */ + uint32 PAD; /* 0x2ec */ + uint32 PAD; /* 0x2f0 */ + uint32 PAD; /* 0x2f4 */ + uint32 PAD; /* 0x2f8 */ + uint32 PAD; /* 0x2fc */ + uint32 PAD; /* 0x300 */ + uint32 PAD; /* 0x304 */ + uint32 PAD; /* 0x308 */ + uint32 PAD; /* 0x30c */ + uint32 PAD; /* 0x310 */ + uint32 PAD; /* 0x314 */ + uint32 PAD; /* 0x318 */ + uint32 PAD; /* 0x31c */ + uint32 PAD; /* 0x320 */ + uint32 PAD; /* 0x324 */ + uint32 PAD; /* 0x328 */ + uint32 PAD; /* 0x32c */ + uint32 PAD; /* 0x330 */ + uint32 PAD; /* 0x334 */ + uint32 PAD; /* 0x338 */ + uint32 PAD; /* 0x33c */ + uint32 PAD; /* 0x340 */ + uint32 PAD; /* 0x344 */ + uint32 PAD; /* 0x348 */ + uint32 PAD; /* 0x34c */ + uint32 PAD; /* 0x350 */ + uint32 PAD; /* 0x354 */ + uint32 PAD; /* 0x358 */ + uint32 PAD; /* 0x35c */ + uint32 PAD; /* 0x360 */ + uint32 PAD; /* 0x364 */ + uint32 PAD; /* 0x368 */ + uint32 PAD; /* 0x36c */ + uint32 PAD; /* 0x370 */ + uint32 PAD; /* 0x374 */ + uint32 PAD; /* 0x378 */ + uint32 PAD; /* 0x37c */ + uint32 PAD; /* 0x380 */ + uint32 PAD; /* 0x384 */ + uint32 PAD; /* 0x388 */ + uint32 PAD; /* 0x38c */ + uint32 PAD; /* 0x390 */ + uint32 PAD; /* 0x394 */ + uint32 PAD; /* 0x398 */ + uint32 PAD; /* 0x39c */ + uint32 PAD; /* 0x3a0 */ + uint32 PAD; /* 0x3a4 */ + uint32 PAD; /* 0x3a8 */ + uint32 PAD; /* 0x3ac */ + uint32 PAD; /* 0x3b0 */ + uint32 PAD; /* 0x3b4 */ + uint32 PAD; /* 0x3b8 */ + uint32 PAD; /* 0x3bc */ + uint32 PAD; /* 0x3c0 */ + uint32 PAD; /* 0x3c4 */ + uint32 PAD; /* 0x3c8 */ + uint32 PAD; /* 0x3cc */ + uint32 PAD; /* 0x3d0 */ + uint32 PAD; /* 0x3d4 */ + uint32 PAD; /* 0x3d8 */ + uint32 PAD; /* 0x3dc */ + uint32 PAD; /* 0x3e0 */ + uint32 PAD; /* 0x3e4 */ + uint32 PAD; /* 0x3e8 */ + uint32 PAD; /* 0x3ec */ + uint32 PAD; /* 0x3f0 */ + uint32 PAD; /* 0x3f4 */ + uint32 PAD; /* 0x3f8 */ + uint32 PAD; /* 0x3fc */ + uint32 PAD; /* 0x400 */ + uint32 PAD; /* 0x404 */ + uint32 PAD; /* 0x408 */ + uint32 PAD; /* 0x40c */ + uint32 PAD; /* 0x410 */ + uint32 PAD; /* 0x414 */ + uint32 PAD; /* 0x418 */ + uint32 PAD; /* 0x41c */ + uint32 PAD; /* 0x420 */ + uint32 PAD; /* 0x424 */ + uint32 PAD; /* 0x428 */ + uint32 PAD; /* 0x42c */ + uint32 PAD; /* 0x430 */ + uint32 PAD; /* 0x434 */ + uint32 PAD; /* 0x438 */ + uint32 PAD; /* 0x43c */ + uint32 PAD; /* 0x440 */ + uint32 PAD; /* 0x444 */ + uint32 PAD; /* 0x448 */ + uint32 PAD; /* 0x44c */ + uint32 PAD; /* 0x450 */ + uint32 PAD; /* 0x454 */ + uint32 PAD; /* 0x458 */ + uint32 PAD; /* 0x45c */ + uint32 PAD; /* 0x460 */ + uint32 PAD; /* 0x464 */ + uint32 PAD; /* 0x468 */ + uint32 PAD; /* 0x46c */ + uint32 PAD; /* 0x470 */ + uint32 PAD; /* 0x474 */ + uint32 PAD; /* 0x478 */ + uint32 PAD; /* 0x47c */ + uint32 PAD; /* 0x480 */ + uint32 PAD; /* 0x484 */ + uint32 PAD; /* 0x488 */ + uint32 PAD; /* 0x48c */ + uint32 PAD; /* 0x490 */ + uint32 PAD; /* 0x494 */ + uint32 PAD; /* 0x498 */ + uint32 PAD; /* 0x49c */ + uint32 PAD; /* 0x4a0 */ + uint32 PAD; /* 0x4a4 */ + uint32 PAD; /* 0x4a8 */ + uint32 PAD; /* 0x4ac */ + uint32 PAD; /* 0x4b0 */ + uint32 PAD; /* 0x4b4 */ + uint32 PAD; /* 0x4b8 */ + uint32 PAD; /* 0x4bc */ + uint32 PAD; /* 0x4c0 */ + uint32 PAD; /* 0x4c4 */ + uint32 PAD; /* 0x4c8 */ + uint32 PAD; /* 0x4cc */ + uint32 PAD; /* 0x4d0 */ + uint32 PAD; /* 0x4d4 */ + uint32 PAD; /* 0x4d8 */ + uint32 PAD; /* 0x4dc */ + uint32 PAD; /* 0x4e0 */ + uint32 PAD; /* 0x4e4 */ + uint32 PAD; /* 0x4e8 */ + uint32 PAD; /* 0x4ec */ +} __attribute__((packed)); + +struct d11regs { + uint32 PAD; /* 0x000 */ + uint32 PAD; /* 0x004 */ + uint32 PAD; /* 0x008 */ + uint32 PAD; /* 0x00c */ + uint32 PAD; /* 0x010 */ + uint32 PAD; /* 0x014 */ + uint32 PAD; /* 0x018 */ + uint32 PAD; /* 0x01c */ + uint32 PAD; /* 0x020 */ + uint32 PAD; /* 0x024 */ + uint32 PAD; /* 0x028 */ + uint32 PAD; /* 0x02c */ + uint32 PAD; /* 0x030 */ + uint32 PAD; /* 0x034 */ + uint32 PAD; /* 0x038 */ + uint32 PAD; /* 0x03c */ + uint32 PAD; /* 0x040 */ + uint32 PAD; /* 0x044 */ + uint32 PAD; /* 0x048 */ + uint32 PAD; /* 0x04c */ + uint32 PAD; /* 0x050 */ + uint32 PAD; /* 0x054 */ + uint32 PAD; /* 0x058 */ + uint32 PAD; /* 0x05c */ + uint32 PAD; /* 0x060 */ + uint32 PAD; /* 0x064 */ + uint32 PAD; /* 0x068 */ + uint32 PAD; /* 0x06c */ + uint32 PAD; /* 0x070 */ + uint32 PAD; /* 0x074 */ + uint32 PAD; /* 0x078 */ + uint32 PAD; /* 0x07c */ + uint32 PAD; /* 0x080 */ + uint32 PAD; /* 0x084 */ + uint32 PAD; /* 0x088 */ + uint32 PAD; /* 0x08c */ + uint32 PAD; /* 0x090 */ + uint32 PAD; /* 0x094 */ + uint32 PAD; /* 0x098 */ + uint32 PAD; /* 0x09c */ + uint32 PAD; /* 0x0a0 */ + uint32 PAD; /* 0x0a4 */ + uint32 PAD; /* 0x0a8 */ + uint32 PAD; /* 0x0ac */ + uint32 PAD; /* 0x0b0 */ + uint32 PAD; /* 0x0b4 */ + uint32 PAD; /* 0x0b8 */ + uint32 PAD; /* 0x0bc */ + uint32 PAD; /* 0x0c0 */ + uint32 PAD; /* 0x0c4 */ + uint32 PAD; /* 0x0c8 */ + uint32 PAD; /* 0x0cc */ + uint32 PAD; /* 0x0d0 */ + uint32 PAD; /* 0x0d4 */ + uint32 PAD; /* 0x0d8 */ + uint32 PAD; /* 0x0dc */ + uint32 PAD; /* 0x0e0 */ + uint32 PAD; /* 0x0e4 */ + uint32 PAD; /* 0x0e8 */ + uint32 PAD; /* 0x0ec */ + uint32 PAD; /* 0x0f0 */ + uint32 PAD; /* 0x0f4 */ + uint32 PAD; /* 0x0f8 */ + uint32 PAD; /* 0x0fc */ + uint32 PAD; /* 0x100 */ + uint32 PAD; /* 0x104 */ + uint32 PAD; /* 0x108 */ + uint32 PAD; /* 0x10c */ + uint32 PAD; /* 0x110 */ + uint32 PAD; /* 0x114 */ + uint32 PAD; /* 0x118 */ + uint32 PAD; /* 0x11c */ + uint32 PAD; /* 0x120 */ + uint32 PAD; /* 0x124 */ + uint32 PAD; /* 0x128 */ + uint32 PAD; /* 0x12c */ + uint32 PAD; /* 0x130 */ + uint32 PAD; /* 0x134 */ + uint32 PAD; /* 0x138 */ + uint32 PAD; /* 0x13c */ + uint32 PAD; /* 0x140 */ + uint32 PAD; /* 0x144 */ + uint32 PAD; /* 0x148 */ + uint32 PAD; /* 0x14c */ + uint32 PAD; /* 0x150 */ + uint32 PAD; /* 0x154 */ + uint32 PAD; /* 0x158 */ + uint32 PAD; /* 0x15c */ + uint32 objaddr; /* 0x160 */ + uint32 objdata; /* 0x164 */ + /* ... */ +} __attribute__((packed)); + +struct ethernet_header { + uint8 dst[6]; + uint8 src[6]; + uint16 type; +} __attribute__((packed)); + +struct ipv6_header { + uint32 version_traffic_class_flow_label; + uint16 payload_length; + uint8 next_header; + uint8 hop_limit; + uint8 src_ip[16]; + uint8 dst_ip[16]; +} __attribute__((packed)); + +struct ip_header { + uint8 version_ihl; + uint8 dscp_ecn; + uint16 total_length; + uint16 identification; + uint16 flags_fragment_offset; + uint8 ttl; + uint8 protocol; + uint16 header_checksum; + union { + uint32 integer; + uint8 array[4]; + } src_ip; + union { + uint32 integer; + uint8 array[4]; + } dst_ip; +} __attribute__((packed)); + +struct udp_header { + uint16 src_port; + uint16 dst_port; + union { + uint16 length; /* UDP: length of UDP header and payload */ + uint16 checksum_coverage; /* UDPLITE: checksum_coverage */ + } len_chk_cov; + uint16 checksum; +} __attribute__((packed)); + +struct ethernet_ip_udp_header { + struct ethernet_header ethernet; + struct ip_header ip; + struct udp_header udp; +} __attribute__((packed)); + +struct ethernet_ipv6_udp_header { + struct ethernet_header ethernet; + struct ipv6_header ipv6; + struct udp_header udp; + uint8 payload[1]; +} __attribute__((packed)); + +struct nexmon_header { + uint32 hooked_fct; + uint32 args[3]; + uint8 payload[1]; +} __attribute__((packed)); + +#endif /*STRUCTS_COMMON_H */ diff --git a/patches/include/firmware_version.h b/patches/include/firmware_version.h index 55dc6158e..6ba0cd6f0 100644 --- a/patches/include/firmware_version.h +++ b/patches/include/firmware_version.h @@ -56,6 +56,7 @@ #define CHIP_VER_BCM4389c1 108 #define CHIP_VER_BCM43439a0 109 #define CHIP_VER_BCM4398d0 1001 +#define CHIP_VER_BCM6715b0 1002 #define FW_VER_ALL 0 @@ -139,4 +140,7 @@ // for CHIP_VER_BCM4398d0 #define FW_VER_24_671_6_9_r1031525 1010 +// define CHIP_VER_BCM6715b0 +#define FW_VER_17_10_188_6401_r808804_ax86upro 1020 + #endif /*FIRMWARE_VERSION_H*/