Initial: BESser umbrella for BES2600 driver mainlining
Sets up the BES2600 mainlining work tree with: - README: project overview, hardware target, driver lineage (CW1200 -> Bestechnic -> arjan-vlek -> Mobian/danctnix), patch series status, repo map, build/deploy workflow. - patches/: c1 patch generated by git format-patch from marfrit/bes2600-dkms branch bes2600/factory-request-firmware (checkpatch.pl --no-tree --strict: 0 errors / 0 warnings / 0 checks). - scripts/: build-bes2600-on-ohm.sh, deploy-c1-to-ohm.sh, backup-ohm-kernel.sh - reproducible build + deploy + backup. - fw-analysis/: per-blob strings.txt + fnnames.txt extracted from the 4 firmware blobs pulled from ohm 2026-04-21. Source binaries NOT committed (Bestechnic-proprietary). - notes/: observed-bugs.md (4 known bug surfaces with file:line + patch-series cross-reference), source-map.md (every public driver source variant + their canonical role). Companion work tree: marfrit/bes2600-dkms (Mobian DKMS fork) at git.reauktion.de. Signed-off-by: Markus Fritsche <fritsche.markus@gmail.com>
This commit is contained in:
+11
@@ -0,0 +1,11 @@
|
|||||||
|
*.bin
|
||||||
|
*.ko
|
||||||
|
*.ko.zst
|
||||||
|
*.tar
|
||||||
|
*.tar.zst
|
||||||
|
*.tar.gz
|
||||||
|
.*.swp
|
||||||
|
*~
|
||||||
|
build/
|
||||||
|
firmware/
|
||||||
|
firmware-from-ohm/
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
# BESser — BES2600 driver mainlining for Pine64 PineTab2
|
||||||
|
|
||||||
|
Working tree for upstreaming the **Bestechnic BES2600WM WiFi/BT combo**
|
||||||
|
driver currently shipped out-of-tree by the danctnix kernel for the
|
||||||
|
Pine64 PineTab2.
|
||||||
|
|
||||||
|
## Why "BESser"
|
||||||
|
|
||||||
|
"BES" (the chip vendor) + German *besser* ("better"). Sibling to:
|
||||||
|
- **Bin** — u-boot upstreaming for the CoolPi GenBook (RK3588)
|
||||||
|
- **MegabitChip** — DDR init blob RE for the same SoC
|
||||||
|
- **SouthAfrica** — OpenPineBuds / 1MORE Fit SE BES2300 firmware RE (chip family relative)
|
||||||
|
- **RockHard** — RK3588 mainline kernel work
|
||||||
|
|
||||||
|
## Hardware target
|
||||||
|
|
||||||
|
| Item | Value |
|
||||||
|
|------|-------|
|
||||||
|
| Device | PineTab2 |
|
||||||
|
| Host name | `ohm` (`ohm.fritz.box`, `ohm.vpn = 10.170.16.14`) |
|
||||||
|
| SoC | Rockchip RK3566 (aarch64) |
|
||||||
|
| WiFi/BT | **Bestechnic BES2600WM** — WiFi 4 (11n dual-band 1x1) + BT 5.2/5.3 |
|
||||||
|
| WiFi interface | SDIO 3.0, vendor `0xBE57` device `0x2002` |
|
||||||
|
| BT interface | UART HCI (separate `bes2600_btuart` module) |
|
||||||
|
| OS | Arch Linux ARM, danctnix kernel `6.19.10-danctnix1-1-pinetab2` |
|
||||||
|
|
||||||
|
## Driver lineage
|
||||||
|
|
||||||
|
```
|
||||||
|
ST-Ericsson CW1200 (mainline drivers/net/wireless/st/cw1200/)
|
||||||
|
│ author: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
|
||||||
|
▼
|
||||||
|
Bestechnic BES2600 (closed fork ~2015–2023, same author)
|
||||||
|
│ adds: BT-over-UART, 5GHz, ePTA coexistence, SDIO ADMA, char-dev API
|
||||||
|
▼
|
||||||
|
Released for Chinese Android burner-phone vendor kernels (~2023)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
arjan-vlek/bes2600 (GitLab, 2023-07) → 26-commit checkpatch cleanup
|
||||||
|
│
|
||||||
|
├── TuxThePenguin0/bes2600 (preserves pre-removal Android source)
|
||||||
|
├── salsa.debian.org/Mobian-team/devices/bes2600-dkms (active, our PR target)
|
||||||
|
└── codeberg.org/DanctNIX/linux-pinetab2 (in-kernel at drivers/staging/bes2600/)
|
||||||
|
```
|
||||||
|
|
||||||
|
CW1200-ancestry markers in current source: same author Dmitry Tarnyagin,
|
||||||
|
`CONFIG_BES2600_USE_STE_EXTENSIONS` (STE = ST-Ericsson),
|
||||||
|
`CONFIG_BES2600_WSM_DEBUG` (WSM = CW1200's host↔FW protocol).
|
||||||
|
|
||||||
|
## Repos
|
||||||
|
|
||||||
|
| Role | Path |
|
||||||
|
|------|------|
|
||||||
|
| **This umbrella** | `git.reauktion.de/marfrit/besser` — patches/, scripts/, fw-analysis/, notes/ |
|
||||||
|
| **Mobian DKMS fork** (PR target) | `git.reauktion.de/marfrit/bes2600-dkms` — branches per patch; upstream = `salsa.debian.org/Mobian-team/devices/bes2600-dkms` |
|
||||||
|
|
||||||
|
## Patch series
|
||||||
|
|
||||||
|
| Patch | Status | Description |
|
||||||
|
|-------|--------|-------------|
|
||||||
|
| **c1** | ✅ MERGED-LOCAL, deployed on ohm | `bes2600: use request_firmware() for factory.txt read` — kills filp_open / kernel_read in the read path; fixes the `(NULL device *) read and check /lib/firmware/bes2600_factory.txt error` boot spam |
|
||||||
|
| **c2** | pending | PM handshake gate + retry — fixes `bes2600_pwr_enter_lp_mode wait pm ind timeout` recurring every 5–10s |
|
||||||
|
| **c3** | pending | bes_chardev removal + nl80211 testmode hookup — clears the second upstream blocker (custom char device); secondary effect on bug #3 |
|
||||||
|
| **c4** | pending | Enable `CONFIG_BES2600_TESTMODE=y` + route `patch_wifi_testMode` — exposes hidden firmware testmode features |
|
||||||
|
| **c5** | pending | Investigate `factory.txt parse fail` — uncovered by c1; original bug masked it; parser chokes on data request_firmware now successfully returns |
|
||||||
|
| c1.1 | pending follow-up | Drop `kernel_write` from factory.c + bes_chardev.c + bes_fw.c (`/lib/firmware/bes2002_fw_write.bin` debug file!) |
|
||||||
|
| c1.2 | pending follow-up | Thread `struct device *` through factory API → eliminates `(NULL device *)` log prefix |
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
1. Edit on Mobian fork (`bes2600-dkms`) — primary upstream PR target
|
||||||
|
2. Topic branch per patch: `bes2600/<short-name>`
|
||||||
|
3. `git commit --signoff` with full kernel-style message
|
||||||
|
4. checkpatch.pl --no-tree --strict before push (must be clean)
|
||||||
|
5. `git format-patch -1 -o ../besser/patches/` to canonicalize
|
||||||
|
6. Push branch to `origin` (Gitea), open MR upstream when ready
|
||||||
|
|
||||||
|
## Build + deploy
|
||||||
|
|
||||||
|
See `scripts/`:
|
||||||
|
- `build-bes2600-on-ohm.sh` — native aarch64 build on ohm (requires `linux-pinetab2-headers`)
|
||||||
|
- `deploy-c1-to-ohm.sh` — install patched modules to `/lib/modules/<ver>/extra/` + depmod
|
||||||
|
- `backup-ohm-kernel.sh` — timestamped tar.zst of /boot + /lib/modules + /lib/firmware/bes2600
|
||||||
|
|
||||||
|
## Firmware RE state (task d)
|
||||||
|
|
||||||
|
Firmware blobs (4 .bin + factory.txt) are **not** committed here (binary,
|
||||||
|
ships from Bestechnic). On `boltzmann:~/src/besser/firmware-from-ohm/` and
|
||||||
|
on `oppenheimer:/work/besser/` (Ghidra host).
|
||||||
|
|
||||||
|
What IS committed under `fw-analysis/`:
|
||||||
|
- `*.strings.txt` — full sorted-unique strings extraction per blob
|
||||||
|
- `*.fnnames.txt` — function-name pattern extraction (191 candidates from `best2002_fw_sdio.bin`)
|
||||||
|
|
||||||
|
Build provenance: Dec 26-27 2023 build from Bestechnic Jenkins
|
||||||
|
(`GCC-10-pipeline`), source git commit `8125e20be` (NOT public).
|
||||||
|
|
||||||
|
Hidden features in firmware (per task d): testmode patch (CONFIG_BES2600_TESTMODE
|
||||||
|
gates it), ePTA coexistence with bypass (`gEptaBypass: %d`), DPD per-channel
|
||||||
|
calibration, hal_trace_crash_dump_register, METAL_ID + patch_version
|
||||||
|
introspection, RF tone generation (nosignal variant), memory dump (nosignal
|
||||||
|
variant), DAC/IQ calibration v2, fast-PSM tuning hooks.
|
||||||
|
|
||||||
|
## Adjacent infrastructure
|
||||||
|
|
||||||
|
- **oppenheimer** (CT131 on data Proxmox): Ghidra 11.3.2 host. SSH via
|
||||||
|
`mfritsche@192.168.88.63`. Staging at `/work/besser/`.
|
||||||
|
- **boltzmann** (Rock 5 ITX+): primary build/dev, ARM64 native, hub-tools
|
||||||
|
preferred path.
|
||||||
|
- **ohm**: target hardware; UART-over-USB-C debug rig also available
|
||||||
|
(Tigard FT2232H Channel A @ 1.8V).
|
||||||
|
|
||||||
|
## Authors / contacts
|
||||||
|
|
||||||
|
- Markus Fritsche `<fritsche.markus@gmail.com>` (this fork)
|
||||||
|
- Driver upstream: Dmitry Tarnyagin `<dmitry.tarnyagin@stericsson.com>` (CW1200 / BES2600 base)
|
||||||
|
- BT companion: Dang Huynh `<dang.huynh@mainlining.org>` (`bes2600_btuart.c`, 2025)
|
||||||
|
- Mobian DKMS: Julian `<mail@julianfairfax.ch>` (current packaging maintainer)
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
close_usb_test
|
||||||
|
dpd_data_free
|
||||||
|
dpd_data_gen
|
||||||
|
dpd_write_table
|
||||||
|
hal_gpadc_adc2volt_calib
|
||||||
|
hal_iomux_cfg_wifi_switch
|
||||||
|
hal_iomux_set_sdio_voltage
|
||||||
|
hal_pm_notif_register
|
||||||
|
hal_sdio_device_irq_handler
|
||||||
|
hal_sdio_device_recv
|
||||||
|
iq_5g_cfg_rx_mem_dump
|
||||||
|
iq_cali_data_free_2g
|
||||||
|
iq_cali_data_free_5g
|
||||||
|
iq_cali_data_gen_2g
|
||||||
|
iq_cali_data_gen_5g
|
||||||
|
iq_cali_new_5g_v2
|
||||||
|
pmu_temperature_adc2temp_calib
|
||||||
|
power_compensate_by_temperature_2002
|
||||||
|
ramrun_test_main
|
||||||
|
rand_filt_gen
|
||||||
|
recover_wifi_cali_result
|
||||||
|
wifi_agc_config
|
||||||
|
wifi_cali
|
||||||
|
wifi_cali_dac_v2
|
||||||
|
wifi_cali_data_crc_check
|
||||||
|
wifi_cali_data_crc_update
|
||||||
|
wifi_cp_reset_skip_cali
|
||||||
|
wifi_deinit
|
||||||
|
wifi_dpd_boot_low_power_en
|
||||||
|
wifi_init
|
||||||
|
wifi_iomux_cfg_switch
|
||||||
|
wifi_iq_cali_2g_v2
|
||||||
|
wifi_recover_cali_data
|
||||||
|
wifi_rfpll_temperature_compensation
|
||||||
@@ -0,0 +1,672 @@
|
|||||||
|
------
|
||||||
|
0123456789abcdef
|
||||||
|
0123456789ABCDEF
|
||||||
|
0#2J%I
|
||||||
|
#0a2isa3isi
|
||||||
|
0c%eee
|
||||||
|
+0cIF@F
|
||||||
|
+0F9F
|
||||||
|
0`!F(F
|
||||||
|
0F*F!F
|
||||||
|
0HM\hHNEO
|
||||||
|
0iFKqi
|
||||||
|
0"IIKH
|
||||||
|
)#0JC 1I
|
||||||
|
`0K3J@F
|
||||||
|
;0; +N
|
||||||
|
%+16<AGLQUZ^bfjmpsuxz{}~~
|
||||||
|
1`bQK`
|
||||||
|
1@FYCIK
|
||||||
|
@@@@@@,1 SEQ_STATUS_IDLE
|
||||||
|
1YbZvYjA
|
||||||
|
2002, patch_wifi_testMode,cfg.test_rx_count:0x%08x
|
||||||
|
2002, patch_wifi_testMode,*rom_rx_signal_count:0x%08x
|
||||||
|
2F9F F
|
||||||
|
2F9F(F
|
||||||
|
2F;F0F9F
|
||||||
|
2F!F(F
|
||||||
|
2F)F F
|
||||||
|
#2FIF@F
|
||||||
|
2g freq_index:%d dpd_cali_num:%d find %d dB+-0.2db compression point success:%d
|
||||||
|
2?&+hAI
|
||||||
|
"2K F)F
|
||||||
|
@@@@@@,2 SEQ_STATUS_IDLE
|
||||||
|
30I0K1H
|
||||||
|
^36J7ID
|
||||||
|
3AJEID
|
||||||
|
3F:Fx!
|
||||||
|
3=JC AI
|
||||||
|
#3p F@K
|
||||||
|
3tKBFIF
|
||||||
|
3yMDqy
|
||||||
|
@40/R.
|
||||||
|
J5ID
|
||||||
|
5%behn
|
||||||
|
6 7!H(I):";#
|
||||||
|
6ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
|
||||||
|
7KAF
|
||||||
|
87 F%K
|
||||||
|
9*F#nMF
|
||||||
|
abandon=%d.
|
||||||
|
abort error:%x,%x
|
||||||
|
aciCa#z
|
||||||
|
A#C )J)I
|
||||||
|
ahFB"h
|
||||||
|
AJm H"
|
||||||
|
alloc wakeup_timer fail
|
||||||
|
AOLOMPO
|
||||||
|
, APSR=%c%c%c%c%c
|
||||||
|
### ASSERT @ 0x%08X ###
|
||||||
|
assertion "%s" failed: file "%s", line %d%s%s
|
||||||
|
aXdYcXaY`
|
||||||
|
aYaYi!
|
||||||
|
BAB_TxFrameComplete()
|
||||||
|
BAB_TxFrameComplete()- BAB_TASK__PROCESS_TX_ADDBA_REQ_FRAME
|
||||||
|
BAB_TxFrameComplete()- BAB_TASK__SEND_BAR_FRAME
|
||||||
|
Bad func=%d for IOMUX pin=%d
|
||||||
|
Bad GPIO pin %u (should < %u)
|
||||||
|
bB`BhB
|
||||||
|
BeaconWindow=%d BeaconWindowTime=%d BeaconWindowAdj=%d
|
||||||
|
(BFAR valid)
|
||||||
|
BFKFPFYF
|
||||||
|
BG test, os_time= %d , sleep= %d
|
||||||
|
b`"i"`
|
||||||
|
B@J@Z@
|
||||||
|
.bqb{csbr
|
||||||
|
BTC is power down. CTRL:0x%x
|
||||||
|
bt msg len error. %u
|
||||||
|
(BusFault)
|
||||||
|
(BusFault during floating-point lazy state preservation)
|
||||||
|
(BusFault on stacking for exception entry)
|
||||||
|
(BusFault on unstacking for a return from exception)
|
||||||
|
bycxbpbz
|
||||||
|
bzc{bsbybrbxcpbq
|
||||||
|
%c %08X: %08X
|
||||||
|
C`3`EA
|
||||||
|
#ca#ac`8
|
||||||
|
###### CalibCountSaved= %d,CalibCounterRegStartVal= %d
|
||||||
|
cali_temperature:%d, rf_version:%d
|
||||||
|
can not add (%f), but keep running (+0.5)!
|
||||||
|
cc`chZ
|
||||||
|
CF*cc'c
|
||||||
|
CF:F!j(F
|
||||||
|
``ch#a
|
||||||
|
checksum error. 0x%x 0x%x
|
||||||
|
#c`#i#`
|
||||||
|
#c`#j#
|
||||||
|
c@JAID
|
||||||
|
c<JC =I
|
||||||
|
C ~J~I
|
||||||
|
close_usb_test
|
||||||
|
CPU freq: %u
|
||||||
|
cs`shC
|
||||||
|
Cx0;KC
|
||||||
|
Cx"`I`H
|
||||||
|
%,CYMO
|
||||||
|
D9FXh|K
|
||||||
|
(Data access violation)
|
||||||
|
(Data Watchpoint Match)
|
||||||
|
DC CAL ERROR!!!![%s]LINE%d------freq_index=%d
|
||||||
|
DC_cali_new_2g
|
||||||
|
DC_cali_new_5g_v2
|
||||||
|
DebugEvent :
|
||||||
|
####DEBUG: FastPsmEnabled=%d, UapsdFlags=0x%x,bcn_schedule_count=%d
|
||||||
|
####DEBUG: PsmState=%d, MgmtMode=%d,TxOutstanding=%d
|
||||||
|
####DEBUG: RxInProgressFlags=%d, SwitchingChannel=%d,PowerBusyEvents:0x%08x
|
||||||
|
Dec 27 2023 11:55:58 8125e20be:best2002_fw_boot
|
||||||
|
DelInterfaceFromChannel. ChanNum:%d, iner:%d
|
||||||
|
d F"K!s
|
||||||
|
DFSR =%08X
|
||||||
|
DFWFLF
|
||||||
|
dig_band_switch, band: %d
|
||||||
|
(Divide by zero UsageFault)
|
||||||
|
DMA chan not enabled: inst=%u hwch=%u
|
||||||
|
DMA not configured on UART %d
|
||||||
|
DMA not supported on UART %d
|
||||||
|
dMeN+h2h
|
||||||
|
DO8F"F)F
|
||||||
|
DOK&D@F
|
||||||
|
dpd_2003_config_new_2G
|
||||||
|
dpd_2003_config_new_5G
|
||||||
|
dpd_2003_rx_dc_cali_5g ()<
|
||||||
|
dpd_2003_rx_dc_cali_5g ()>
|
||||||
|
dpd_cali done !
|
||||||
|
dpd_cali faild !
|
||||||
|
dpd_cali_num:%d find final 2.5dB compression point success:%d
|
||||||
|
dpd_cali start %d %d
|
||||||
|
dpd_data_free
|
||||||
|
dpd_data_gen
|
||||||
|
dpd_write_table
|
||||||
|
DP*I*L
|
||||||
|
dQk!@Qc
|
||||||
|
#D UJWI
|
||||||
|
`eak/`
|
||||||
|
##### EbmMonitorHandler tx=%d cnt=%d reset=%d
|
||||||
|
EBM WORKAROUND INVOKED!!
|
||||||
|
efgEFG
|
||||||
|
e*!*!***G*I*I***K*M*M***O*Q*Q***S*U*U***W*Y*Y****[*]*]***_*a*a***c
|
||||||
|
#{e+h9e
|
||||||
|
eJfIB
|
||||||
|
!E ]J]I
|
||||||
|
eMx"1FdHl
|
||||||
|
------ Enter %s ------
|
||||||
|
entery downlaod process, close DOWNLOAD_TRACE
|
||||||
|
Ep)h#hQ
|
||||||
|
, EPSR=%08X, IPSR=%03X
|
||||||
|
Epta_bt_config dur %d
|
||||||
|
ERROR29!!!!!
|
||||||
|
error, read battery timeout0
|
||||||
|
error, read battery timeout1
|
||||||
|
error, read temperature timeout0. ret:%d
|
||||||
|
error, read temperature timeout1
|
||||||
|
ERROR: st->gin_mini must eq to 1.0
|
||||||
|
(Escalation HardFault)
|
||||||
|
### EXCEPTION ###
|
||||||
|
, ExceptionNumber=D'%d
|
||||||
|
, EXC_RETURN=%08X
|
||||||
|
------ Exit %s ------
|
||||||
|
#`` F#
|
||||||
|
*# #@F
|
||||||
|
F($,N-K
|
||||||
|
+F0F9F
|
||||||
|
F0F9F
|
||||||
|
F0F9FS
|
||||||
|
F0F"F9F+F
|
||||||
|
#)F1H
|
||||||
|
! F1K
|
||||||
|
&#F2FC
|
||||||
|
!F3F*F
|
||||||
|
F3F]`i`
|
||||||
|
!(F3`#p
|
||||||
|
+"FAFO
|
||||||
|
Failed to get DMA channel
|
||||||
|
Failed to get dst periph: %d
|
||||||
|
Failed to get src periph: %d
|
||||||
|
Failed to open pmu
|
||||||
|
FaultCause :
|
||||||
|
FaultInfo :
|
||||||
|
FBFcaQ
|
||||||
|
FBFKFPFYF
|
||||||
|
FBFKFQ
|
||||||
|
!F*F0F
|
||||||
|
"F)F0F
|
||||||
|
#:F!F0F
|
||||||
|
*F!F0F
|
||||||
|
+*F!F8F
|
||||||
|
)F,Ff~
|
||||||
|
"F)F@F
|
||||||
|
#F"F!F
|
||||||
|
)F"F@F
|
||||||
|
;F F)F
|
||||||
|
@F*F!F
|
||||||
|
F F)F
|
||||||
|
[F"F)F0F
|
||||||
|
+F*F)F2H
|
||||||
|
#F"F!F9H
|
||||||
|
F F)FD
|
||||||
|
"F+F F)F
|
||||||
|
;"F+F F)F
|
||||||
|
"F+F@FIF
|
||||||
|
F F)FO
|
||||||
|
F F)FS
|
||||||
|
!F#F\H
|
||||||
|
;F@FIF
|
||||||
|
@F"FIF
|
||||||
|
F@FIF
|
||||||
|
F@FIFc
|
||||||
|
!F#FQH
|
||||||
|
.F hah
|
||||||
|
[F;IC
|
||||||
|
*FIF0F
|
||||||
|
#"FIF8F
|
||||||
|
final_pa_i_cali_wifi_0x34: 0x%x
|
||||||
|
F+J+IB
|
||||||
|
:(F+J+K
|
||||||
|
{F+`n`@#
|
||||||
|
FPFBFYFKF
|
||||||
|
FPF"FYF+F
|
||||||
|
FPFYF
|
||||||
|
FPFYFC
|
||||||
|
#FP!HCS
|
||||||
|
fpRead fail!
|
||||||
|
FRF[F0F9F
|
||||||
|
FRF[FPFYF
|
||||||
|
FRF[FQ
|
||||||
|
!FSF(F
|
||||||
|
&Fsx2x
|
||||||
|
[Func %d io %d] is unsupported by pin_func_map. Check it or use reg assignment like iomux_set_uart0.
|
||||||
|
, function:
|
||||||
|
(Function %d matched)
|
||||||
|
)Fx` F
|
||||||
|
)Fx` F
|
||||||
|
+FYO hah
|
||||||
|
:@:F<@Z
|
||||||
|
FzAF:F
|
||||||
|
fZf]f\f
|
||||||
|
!)@:F,@zj/@\G1@|
|
||||||
|
g0F9F
|
||||||
|
G0"LILH
|
||||||
|
G1K!F F
|
||||||
|
G3h 3ca
|
||||||
|
G9F(FvK
|
||||||
|
G@"AFMH
|
||||||
|
gain_am[400]= %d
|
||||||
|
gain_am_max= %d
|
||||||
|
g_dc_iq_rst_u32_5g[0][0]:0x%08x, [1][0]:0x%08x
|
||||||
|
g_dc_iq_rst_u32_5g[0][0]:0x%08x, [1][0]:0x%08x, data_addr:%p
|
||||||
|
gen_B1_data end
|
||||||
|
gen_B1_data start
|
||||||
|
GF#2F9F F
|
||||||
|
g F)F2F;F
|
||||||
|
gfff|
|
||||||
|
gfffh
|
||||||
|
G I!J h
|
||||||
|
GIJ(`II
|
||||||
|
G[J(`[I
|
||||||
|
G[J\I(`
|
||||||
|
G\J\I(`
|
||||||
|
G\J]I(`
|
||||||
|
G]J]I(`
|
||||||
|
G]J^I(`
|
||||||
|
G^J^I(`
|
||||||
|
G{J{I(`
|
||||||
|
G{J|I(`
|
||||||
|
G|J|I(`
|
||||||
|
G|J}I(`
|
||||||
|
G}J}I(`
|
||||||
|
G}J~I(`
|
||||||
|
G~J~I(`
|
||||||
|
GJJ(`JI
|
||||||
|
G#K[ 3
|
||||||
|
GKF!0F
|
||||||
|
GKJ(`KI
|
||||||
|
G~K~OS
|
||||||
|
GLJ(`LI
|
||||||
|
GLK!F F
|
||||||
|
GMJ(`MI
|
||||||
|
GNJ(`NI
|
||||||
|
GOJ(`OI
|
||||||
|
GPJ(`PI
|
||||||
|
GqJqI(`
|
||||||
|
GqJrI(`
|
||||||
|
GrJrI(`
|
||||||
|
GrJsI(`
|
||||||
|
GsJsI(`
|
||||||
|
GsJtI(`
|
||||||
|
GtJtI(`
|
||||||
|
GtJuI(`
|
||||||
|
GuJuI(`
|
||||||
|
GuJvI(`
|
||||||
|
GvJvI(`
|
||||||
|
GvJwI(`
|
||||||
|
GwJwI(`
|
||||||
|
GwJxI(`
|
||||||
|
GxJxI(`
|
||||||
|
GxJyI(`
|
||||||
|
GyJyI(`
|
||||||
|
GyJzI(`
|
||||||
|
GzJ{I(`
|
||||||
|
GzJzI(`
|
||||||
|
#h1F8F
|
||||||
|
hal_gpadc_adc2volt_calib
|
||||||
|
hal_iomux_cfg_wifi_switch
|
||||||
|
hal_iomux_set_sdio_voltage
|
||||||
|
hal_pm_notif_register
|
||||||
|
hal_sdio_device_irq_handler
|
||||||
|
hal_sdio_device_recv
|
||||||
|
(Halted)
|
||||||
|
(HardFault)
|
||||||
|
#h+D#`
|
||||||
|
HF9F N
|
||||||
|
H#F"F!F
|
||||||
|
H F%K
|
||||||
|
:h+FrC
|
||||||
|
h[h!DS`
|
||||||
|
h{iZ@O
|
||||||
|
hJd!ZH
|
||||||
|
hook_post_sys_init rom_hook_cfg->rom_run_flag=0x%08x
|
||||||
|
hook_wifidrv_rfpll_en(%d) pm=%d os_time=%d
|
||||||
|
:hVLVI
|
||||||
|
HWTIMER-ALLOC: Invalid state: %d
|
||||||
|
HWTIMER collapsed: irq occurred too early
|
||||||
|
HWTIMER collapsed: irq when active is null
|
||||||
|
HWTIMER irq occurred early: old active timer might be deleted? %u
|
||||||
|
HWTIMER irq when active is null: might be deleted? %u
|
||||||
|
HWTIMER-START collapsed: cur=%u active=%u
|
||||||
|
ICSR =%08X, AIRCR=%08X, SCR =%08X, CCR =%08X
|
||||||
|
I+FC "F
|
||||||
|
#i*FIF@F
|
||||||
|
IFxa@F
|
||||||
|
IFxa@F
|
||||||
|
init wakeup gpio:%x
|
||||||
|
(Instruction access violation)
|
||||||
|
(Instruction bus error)
|
||||||
|
Invalid AUDMA chan: %u
|
||||||
|
Invalid baud param: %d
|
||||||
|
Invalid data bits param: %d
|
||||||
|
Invalid DMA inst: %u
|
||||||
|
Invalid DMA periph: %d
|
||||||
|
Invalid DMA policy: %d
|
||||||
|
Invalid flow control param: %d
|
||||||
|
Invalid parity param: %d
|
||||||
|
(Invalid PC load by EXC_RETURN UsageFault)
|
||||||
|
Invalid SPI RX bits: %d
|
||||||
|
Invalid SPI RX FRAME bits: %d
|
||||||
|
Invalid SPI TX bits: %d
|
||||||
|
(Invalid state UsageFault)
|
||||||
|
Invalid stop bits param: %d
|
||||||
|
Invalid UART ID: %d
|
||||||
|
IPSR():0x%x, PRIMASK:0x%x, BASEPRI:0x%x
|
||||||
|
;iq_2g_cfg_rx_mem_dump
|
||||||
|
iq_5g_cfg_rx_mem_dump
|
||||||
|
IQ CAL ERROR!!!![%s]LINE%d------freq_index=%d
|
||||||
|
iq_cali_data_free_2g
|
||||||
|
iq_cali_data_free_5g
|
||||||
|
iq_cali_data_gen_2g
|
||||||
|
iq_cali_data_gen_5g
|
||||||
|
iq_cali_new_5g_v2
|
||||||
|
irq: gpio %d, val %d
|
||||||
|
ISPI: Bad bits cfg
|
||||||
|
ISPI: SPI cs bad: %d
|
||||||
|
IUUUUU
|
||||||
|
]##JC $I
|
||||||
|
JF!F(F
|
||||||
|
`^J_I(`
|
||||||
|
\J\IC $h
|
||||||
|
J! Sh#
|
||||||
|
{@K@C@
|
||||||
|
KcpG'(
|
||||||
|
KFJFIF
|
||||||
|
K]h,C\`8
|
||||||
|
KIZ`C ;FZF
|
||||||
|
K!J"H"I
|
||||||
|
>!+K+N
|
||||||
|
K`pG'(
|
||||||
|
KXh@BpG
|
||||||
|
?/lj,D
|
||||||
|
*LjF)F
|
||||||
|
%L%J%h
|
||||||
|
%"L#KT
|
||||||
|
LMC_BA_AddActionFrameToTaskList()
|
||||||
|
LQ.3.13
|
||||||
|
LR.3.2#
|
||||||
|
m32J3ID
|
||||||
|
malloc B0_im fail
|
||||||
|
malloc B0_re fail
|
||||||
|
malloc B1_imag fail
|
||||||
|
malloc B1_real fail
|
||||||
|
malloc I_tone_filt_imag fail
|
||||||
|
malloc I_tone_filt_real fail
|
||||||
|
malloc origin_imag fail
|
||||||
|
malloc origin_real fail
|
||||||
|
malloc tx2tones fail
|
||||||
|
malloc txsingletone fail
|
||||||
|
malloc xx fail
|
||||||
|
(MemFault)
|
||||||
|
(MemFault during floating-point lazy state preservation)
|
||||||
|
(MemFault on stacking for exception entry)
|
||||||
|
(MemFault on unstacking for a return from exception)
|
||||||
|
METAL_ID: %d
|
||||||
|
,M,I+h hd
|
||||||
|
MMFAR=%08X, BFAR =%08X
|
||||||
|
(MMFAR valid)
|
||||||
|
/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-338_20211018_1634516203/src/newlib/newlib/libc/stdlib/rand.c
|
||||||
|
../../mod_platform/int/wifi_patch.c
|
||||||
|
";M<O<I
|
||||||
|
(Monitor)
|
||||||
|
MSP =%08X, PSP =%08X
|
||||||
|
MSPLIM=%08X, PSPLIM=%08X
|
||||||
|
MYFeDO
|
||||||
|
NF F*F
|
||||||
|
NHOKOI
|
||||||
|
+N+M3h+H
|
||||||
|
(NMI)
|
||||||
|
(No coprocessor UsageFault)
|
||||||
|
(NoException)
|
||||||
|
(None)
|
||||||
|
non udp ping/pong, wake up host.
|
||||||
|
o3.JC /I
|
||||||
|
O(#kC0h
|
||||||
|
&O&M;h
|
||||||
|
p3p*FO
|
||||||
|
PAC_FiqHandler, AckFail, queue: %d
|
||||||
|
PAC_Fiq PAC_NTD_STATUS__RESP_RX_STORED
|
||||||
|
PAC_ProcessEbmIntContenAckFail()
|
||||||
|
pa_i_cali_wifi_0x34: 0x%x
|
||||||
|
PAS_GetEbmTxRequests(), pTxRequest->Flags: 0x%08x, pTxRequest->RateIndex: %d,TxBaAgreementNum=%d
|
||||||
|
PAS_GetEbmTxRequests(), SeqQueueIdleStatus: 0x%04x, sPasGlobal.AggrTxInProgress: %d
|
||||||
|
PAS_GetEbmTxRequests(), TxBaAgreementNum].State=%d,BATxTidMask=0x%x
|
||||||
|
PAS_SetTsfTimerOnStamp, %d, TSF=0x%08x
|
||||||
|
patch_config_dig_gain_table,index: %d, gain: %d,MaxPwrForChan: %d
|
||||||
|
patch_HI_DefaultMsgHandler(): (Id=0x%x, Len=%d)
|
||||||
|
patch_HI_Set_Coex_Params, hw_epta_enable:0x%x, new_run_flag:0x%x, gEptaBypass: %d
|
||||||
|
patch_LMAC_Req_PS_PowerMgmtMode() - Mode %x, PowerBusyEvents:0x%08x
|
||||||
|
patch_LMAC_Req_SYN_SetBssParams(), 0x%08x,0x%08x
|
||||||
|
patch_LMAC_Req_SYN_SetBssParams(), 0x%08x,0x%08x,0x%08x
|
||||||
|
patch_LMC_AddInterfaceToChannel. ChanNum:%d, iner:%d
|
||||||
|
patch_LPO_calib_IRQHandler, CalibCountSaved=%d, CalibCounterRegStartVal=%d
|
||||||
|
patch_PHY_RF_TX_TurnOffAuxAdc
|
||||||
|
&&& patch_PS_BeaconWindowTimerHandler(),BeaconLostCount=%d, rom_OS_Time=%u tsf:%u
|
||||||
|
@@@@ patch: switchchannel gPhyTemData.iChnlID: %d, eRadioBand_cfg: %d,current_band: %d
|
||||||
|
patch test mode, run_test_cmd= %d ,band= %d!
|
||||||
|
patch_TX_Generate_Backoff_Slots retry timeout. val0x%x
|
||||||
|
@@@@ patch: wifi_low_power_cfg_qfn_1p3v band:%d
|
||||||
|
@@@@ patch: wifi_low_power_cfg_qfn_1p8v band:%d
|
||||||
|
path_PHY_RF_TX_TurnOnAuxAdc
|
||||||
|
+pb)F F
|
||||||
|
+pb)F F
|
||||||
|
PC =%08X
|
||||||
|
pcS`pG
|
||||||
|
pcs`sh#
|
||||||
|
#pcYFPF
|
||||||
|
pG pG
|
||||||
|
pGpGpGp
|
||||||
|
pGY(O
|
||||||
|
p;hb|Yx
|
||||||
|
P HD*K
|
||||||
|
"pK F)F
|
||||||
|
pLpKqJqHrI
|
||||||
|
pmu_temperature_adc2temp_calib
|
||||||
|
Possible Backtrace:
|
||||||
|
power_compensate_by_temperature_2002
|
||||||
|
(Precise data bus error)
|
||||||
|
PRIMASK =%02X, FAULTMASK =%02X, BASEPRI =%02X, CONTROL =%02X
|
||||||
|
Q69!D@
|
||||||
|
QjAF:F
|
||||||
|
Qkkbal
|
||||||
|
R12=%08X, SP =%08X, LR =%08X
|
||||||
|
R%-2d=%08X, R%-2d=%08X, R%-2d=%08X, R%-2d=%08X
|
||||||
|
r5I(Da
|
||||||
|
ramrun_test_main
|
||||||
|
rand_filt_gen
|
||||||
|
RaNHD3h
|
||||||
|
receive a tcp ack
|
||||||
|
recover_wifi_cali_result
|
||||||
|
recv a normal tcp pkt1
|
||||||
|
recv a normal tcp pkt2
|
||||||
|
recv a tcp klv ack,rcv_time:%u ackno:%u seq:%u
|
||||||
|
recv a udp ping
|
||||||
|
recv pong, time %u.
|
||||||
|
REENT malloc succeeded
|
||||||
|
rELFOFN
|
||||||
|
@@@@@@@ retry 1, 0x%x
|
||||||
|
@@@@@@@ retry 2
|
||||||
|
@@@@@@@ retry 3, 0x%x
|
||||||
|
@@@@@@@ retry 4
|
||||||
|
RF[FPFYF
|
||||||
|
#RFIF8F
|
||||||
|
R!h$Hi
|
||||||
|
R!h0Hi
|
||||||
|
R/h+`2
|
||||||
|
R!h2Hi
|
||||||
|
R!h Hi
|
||||||
|
R!h"Hi
|
||||||
|
R!h&Hi
|
||||||
|
R!h(Hi
|
||||||
|
R!h*Hi
|
||||||
|
R!h,Hi
|
||||||
|
R!h.Hi
|
||||||
|
rx buf is NULL. buf:%p, len:%d
|
||||||
|
rx buf len %d > %d
|
||||||
|
RX/TX-DMA configured on SPI %d
|
||||||
|
%s ()<
|
||||||
|
%s ()>
|
||||||
|
s3fsh#
|
||||||
|
saJaIC MF
|
||||||
|
save_wifi_cali_result done, size:%d
|
||||||
|
%s %d band(0:2.4;1:5):%d tbl_idx(0:20;1:40):%d
|
||||||
|
%s:%d, error: rx length is 0
|
||||||
|
%s:%d, no rx buf
|
||||||
|
%s:%d, rx buf is NULL
|
||||||
|
%s:%d, rx buf len %d > %d
|
||||||
|
%s:%d, sdio_callback->hal_sdio_device_rxtx_start is NULL
|
||||||
|
(SecureFault)
|
||||||
|
%s efuse:%d/%d LV=%d, HV=%d, 1000*Slope=%d
|
||||||
|
%s efuse:%d/%d LV=%d, HV=%d, Slope:%d Intcpt:%d
|
||||||
|
%s: handler already registered: user=%d handler=%p existedUser=%d
|
||||||
|
%s: handler cannot be NULL: user=%d
|
||||||
|
%s: handler list full: user=%d handler=%p curCnt=%u
|
||||||
|
SHCSR=%08X, CFSR =%08X, HFSR =%08X, AFSR =%08X
|
||||||
|
%s L%d cali_temperature:%d
|
||||||
|
%s L%d rfpll temperature compensation error: timeout.
|
||||||
|
Sleep exit: schedule_evt%x pwr_busy_evt:%x
|
||||||
|
Sleep failed, event: 0x%08x pwr_busy:0x%08x
|
||||||
|
sleep terminate, transq:%d sleep_flag:%d
|
||||||
|
Sleep Timer:0x%08x callback:0x%08x
|
||||||
|
%s line%d ()<
|
||||||
|
%s line%d ()>
|
||||||
|
%s Line%d ()<
|
||||||
|
%s Line%d ()>
|
||||||
|
%s Line%d 0x5b:0x%04x, 0x5c:0x%04x
|
||||||
|
%s Line%d 2g dc CaliTime:%dms
|
||||||
|
%s Line%d 2g iq CaliTime:%dms
|
||||||
|
%s Line%d 2g iq data gen CaliTime:%dms
|
||||||
|
%s Line%d 5g dc CaliTime:%dms
|
||||||
|
%s Line%d 5g iq CaliTime:%dms
|
||||||
|
%s Line%d 5g iq data gen CaliTime:%dms
|
||||||
|
%s Line%d abs_centigrade:%d
|
||||||
|
%s Line%d band(0:2g,1:5g,2:dual):%d; mode(0:normal, 1:test):%d
|
||||||
|
%s Line%d cali_flag_one:0x%08x
|
||||||
|
%s Line%d cali_num:%d compression_dB:%d
|
||||||
|
%s Line%d can not add (%d), but keep running (+0.5)!
|
||||||
|
%s Line%d can not reduce (%d), but keep running (-0.5)!
|
||||||
|
%s Line%d can not reduce (%f), but keep running (-0.5)!
|
||||||
|
%s Line%d ch[%d, %d] 0x11d:0x%x
|
||||||
|
%s Line%d ch_id:%d, 0x11d:0x%04x
|
||||||
|
%s Line%d CpuFreq:%u, TotalCaliTime:%dms
|
||||||
|
%s Line%d dac CaliTime:%dms
|
||||||
|
%s Line%d dac:%d; dc:%d,%d; iq:%d,%d; dpd:%d,%d; rc:%d;
|
||||||
|
%s Line%d error: force continue!
|
||||||
|
%s Line%d error: recover cali data faild.
|
||||||
|
%s Line%d error:rx timeout
|
||||||
|
%s Line%d freq_index:%d, 2g dpd+dc+iq CaliTime:%dms
|
||||||
|
%s Line%d freq_index:%d, 5g dpd+dc+iq CaliTime:%dms
|
||||||
|
%s Line%d g_rf_sw_io_select:%d
|
||||||
|
%s Line%d g_rf_sw_io_select:%d, metal_id:%d
|
||||||
|
%s Line%d g_wf_cali_crc:%lu, crc:%lu
|
||||||
|
%s Line%d malloc tx2rand fail
|
||||||
|
%s Line%d malloc txsingletone fail
|
||||||
|
%s Line%d no need repeatable cali.
|
||||||
|
%s Line%d protect dpd table.
|
||||||
|
%s Line%d skip cali, freq_index:%d
|
||||||
|
%s Line%d skip wifi cali success.
|
||||||
|
%s Line%d temperature(%d, %d]
|
||||||
|
%s Line%d temperature(%d, %d] 0x11d:0x%x
|
||||||
|
%s Line%d WAFER_PACKAGE_2002_SELECT(0:wlcsp; 1:qfn; 3:fanout;):%d
|
||||||
|
%s Line%d warning: can not skip cali.
|
||||||
|
%s Line%d wifi reset
|
||||||
|
%s line%d WIFI_RF_SW_IO_SELECT:%d
|
||||||
|
%s: patch_2001_en_flag=0x%x relocation_marker=0x%x: %d
|
||||||
|
SPIPHY: Bad bits cfg
|
||||||
|
SPIPHY: SPI cs bad: %d
|
||||||
|
SPI rate too large: %u
|
||||||
|
SPI rate too small: %u
|
||||||
|
%s, recover wifi cali result
|
||||||
|
%s, rxbuf_cnt mismatch:%d, %d
|
||||||
|
sSDJEIC
|
||||||
|
%s: Set RT irq in hal_uart_dma_recv_mask... to avoid data lost
|
||||||
|
Stack:
|
||||||
|
(Stack overflow UsageFault)
|
||||||
|
*** stack smashing detected ***: terminated
|
||||||
|
%s temperature_25=%d
|
||||||
|
STE-P2P
|
||||||
|
%s, volt error. %u
|
||||||
|
#sv#z#
|
||||||
|
%s, wifi cali result crc error. addr:%p
|
||||||
|
sysfreq =%d,0x40000078= 0x%08x
|
||||||
|
SZBZA*`
|
||||||
|
T2YF F
|
||||||
|
@T.4'F
|
||||||
|
test_BG_timerHandler,PowerBusyEvents:0x%08x
|
||||||
|
The channel is not right,please check again
|
||||||
|
, ThreadMode
|
||||||
|
"tK F)F
|
||||||
|
tlC O H
|
||||||
|
tpEC;h+D
|
||||||
|
TRACE-%u: Wait memsc timeout
|
||||||
|
ts_C#h
|
||||||
|
TSF ProbeResponder = FALSE
|
||||||
|
TX-DMA configured on SPI %d
|
||||||
|
uCuJ}I
|
||||||
|
(Unaligned access UsageFault)
|
||||||
|
(Undefined instruction UsageFault)
|
||||||
|
(UsageFault)
|
||||||
|
usbphy open fail
|
||||||
|
?UUUUUU
|
||||||
|
V3&J+IC
|
||||||
|
=! V=a
|
||||||
|
vbat:reg 0x%x, vbat %d
|
||||||
|
V?LUUUUU
|
||||||
|
VUUU[F
|
||||||
|
wakeup host,reason=%d
|
||||||
|
wakeup_timer_handler. gpio:%u
|
||||||
|
wifi_agc_config
|
||||||
|
wifi_cali
|
||||||
|
wifi_cali_dac_v2
|
||||||
|
wifi_cali_data_crc_check
|
||||||
|
wifi_cali_data_crc_update
|
||||||
|
wifi cali result 0x%08x crc:0x%08x, len:%d.
|
||||||
|
wifi_cp_reset_skip_cali
|
||||||
|
wifi_deinit
|
||||||
|
wifi_dpd_boot_low_power_en
|
||||||
|
wifidrv_rf_init....
|
||||||
|
wifi_init
|
||||||
|
wifi_iomux_cfg_switch
|
||||||
|
wifi_iq_cali_2g_v2
|
||||||
|
wifi_recover_cali_data
|
||||||
|
wifi_rfpll_temperature_compensation
|
||||||
|
wifi_rf_switch_band(0:2g 1:5g),old: %d, new: %d
|
||||||
|
wifi_switch_freq, freq: %d
|
||||||
|
wifi_switch_freq, write cali_channel: %d, channel: %d
|
||||||
|
wifi_test patch start=0x%08x, __wifi_patch_code_end=0x%08x
|
||||||
|
wifi_test patch! wifi_sysHook->system_init=%p, patch_offset=%d
|
||||||
|
wrong udp length!
|
||||||
|
XBXApG
|
||||||
|
#`x#(H
|
||||||
|
x%hh`)pj
|
||||||
|
`]xh#kC
|
||||||
|
xJyIC
|
||||||
|
XJZIE
|
||||||
|
XPSR=%08X
|
||||||
|
XsC 2J3I
|
||||||
|
Y@1@K@a
|
||||||
|
YF8FdK
|
||||||
|
yF9K@"
|
||||||
|
YF F[K
|
||||||
|
yF!K@"
|
||||||
|
"YK F)F
|
||||||
|
y@Y@A@
|
||||||
|
+`!y`yj
|
||||||
|
z=7=7===N=P=P===R=T=T===V=X=X
|
||||||
|
@ZAF:F
|
||||||
|
zD 3J3I
|
||||||
|
zD iJnI
|
||||||
|
zE \J\I
|
||||||
|
ZFd!PF
|
||||||
|
'ZF)F0F
|
||||||
|
ZF)F0F
|
||||||
|
ZhC CFEI
|
||||||
|
zIF@F(
|
||||||
|
zJ{IB
|
||||||
|
=@zj?@L~@@\GA@l
|
||||||
|
~~}{zxuspmjfb^ZUQLGA<61+%
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
best2002_wifi_main
|
||||||
|
btdrv_bridge_send_data
|
||||||
|
btdrv_bt_modem_config
|
||||||
|
btdrv_clear_spi_trig_pos_enable
|
||||||
|
btdrv_config_init
|
||||||
|
btdrv_delay_cap_calib
|
||||||
|
btdrv_function_patch_init_common
|
||||||
|
bt_drv_reg_op_ble_rx_gain_thr_tbl_set
|
||||||
|
bt_drv_reg_op_bt_master_sleep_enable
|
||||||
|
btdrv_reg_op_config_coex_mode
|
||||||
|
bt_drv_reg_op_le_pwr_ctrl_feats_disable
|
||||||
|
bt_drv_reg_op_set_inquiry_scan_activity
|
||||||
|
btdrv_txpower_calib
|
||||||
|
bthci_lpm_init
|
||||||
|
bthci_lpm_thread
|
||||||
|
bthci_set_afh_host_channel_classification
|
||||||
|
bthci_state_record_init
|
||||||
|
bthci_uart_io_close
|
||||||
|
bthci_uart_io_init
|
||||||
|
bt_iqimb_dma_enable
|
||||||
|
bt_tx_pulling_write
|
||||||
|
bt_wifi_coex_thread
|
||||||
|
close_usb_test
|
||||||
|
coex_bt_state_notify
|
||||||
|
config_dpd
|
||||||
|
data_retransfer_thread
|
||||||
|
dpd_write_table
|
||||||
|
em_ble_rxclknsync1_clknrxsync1_getf
|
||||||
|
em_bt_rxclkn1_getf
|
||||||
|
em_bt_rx_hwagc_hwagc_idx_getf
|
||||||
|
factory_get_calib_data_from_efuse
|
||||||
|
factory_get_power_from_efuse
|
||||||
|
factory_get_section_from_efuse
|
||||||
|
factory_powerlevel_convert_to_index
|
||||||
|
factory_set_calib_data_to_efuse
|
||||||
|
factory_set_power_into_efuse
|
||||||
|
filter_list_mutex
|
||||||
|
get_bdr_pwr
|
||||||
|
get_btmac
|
||||||
|
get_btoui
|
||||||
|
get_edr_pwr
|
||||||
|
get_flags
|
||||||
|
get_mac
|
||||||
|
get_next_block
|
||||||
|
get_prev_free_block
|
||||||
|
get_save
|
||||||
|
get_save_freqoffset
|
||||||
|
get_woui
|
||||||
|
h5_thread_tx_mutex
|
||||||
|
h5_transmit_data_to_host
|
||||||
|
hal_dma_cancel
|
||||||
|
hal_dma_chan_busy
|
||||||
|
hal_dma_free_chan
|
||||||
|
hal_dma_get_chan
|
||||||
|
hal_dma_get_cur_dst_addr
|
||||||
|
hal_dma_get_sg_remain_size
|
||||||
|
hal_dma_irq_run_chan
|
||||||
|
hal_dma_sg_2d_start
|
||||||
|
hal_dma_stop
|
||||||
|
hal_gpadc_adc2volt_calib
|
||||||
|
hal_gpio_pin_clr
|
||||||
|
hal_gpio_pin_get_val
|
||||||
|
hal_gpio_pin_set
|
||||||
|
hal_gpio_pin_set_dir
|
||||||
|
hal_gpio_setup_irq
|
||||||
|
hal_intersys_open
|
||||||
|
hal_intersys_rx_irq_handler
|
||||||
|
hal_intersys_tx_irq_handler
|
||||||
|
hal_iomux_cfg_wifi_switch
|
||||||
|
hal_iomux_set_function
|
||||||
|
hal_iomux_set_sdio_voltage
|
||||||
|
hal_ispi_activate_cs
|
||||||
|
hal_ispi_open
|
||||||
|
hal_pm_notif_register
|
||||||
|
hal_sdio_adma_compensate
|
||||||
|
hal_sdio_adma_config
|
||||||
|
hal_sdio_device_irq_handler
|
||||||
|
hal_sdio_device_wifi_rxtx_start
|
||||||
|
hal_spi_init_ctrl
|
||||||
|
hal_spiphy_activate_cs
|
||||||
|
hal_spiphy_open
|
||||||
|
hal_spi_recv_id
|
||||||
|
hal_spi_send_id
|
||||||
|
hal_trace_crash_dump_register
|
||||||
|
hal_trace_open
|
||||||
|
hal_trace_output
|
||||||
|
hal_transq_clear_previous
|
||||||
|
hal_transq_local_irq_handler_body
|
||||||
|
hal_transq_remote_irq_handler
|
||||||
|
hal_uart_close
|
||||||
|
hal_uart_continue
|
||||||
|
hal_uart_dma_send
|
||||||
|
hal_uart_flush
|
||||||
|
hal_uart_get_dma_recv_addr
|
||||||
|
hal_uart_get_flag
|
||||||
|
hal_uart_irq_set_dma_handler
|
||||||
|
hal_uart_irq_set_mask
|
||||||
|
hal_uart_open
|
||||||
|
hal_uart_opened
|
||||||
|
hal_uart_stop_dma_recv
|
||||||
|
hci_bt_state_set
|
||||||
|
hci_close
|
||||||
|
hci_get_vendor_cmd_frame_len
|
||||||
|
hci_open
|
||||||
|
hci_send_to_btc_thread
|
||||||
|
hci_send_to_host_thread
|
||||||
|
hci_uart_send_to_host
|
||||||
|
host_event_wifi_off
|
||||||
|
host_event_wifi_on
|
||||||
|
host_if_common_init
|
||||||
|
host_if_resume
|
||||||
|
host_int_irq
|
||||||
|
hwtimer_alloc
|
||||||
|
hwtimer_handler
|
||||||
|
hwtimer_stop
|
||||||
|
init_dig_gain_offset
|
||||||
|
ld_inq_rx_patch
|
||||||
|
list_append
|
||||||
|
list_begin
|
||||||
|
list_end
|
||||||
|
list_free_node_
|
||||||
|
list_front
|
||||||
|
list_is_empty
|
||||||
|
list_length
|
||||||
|
list_next
|
||||||
|
list_remove
|
||||||
|
lld_adv_end_ind_handler_patch
|
||||||
|
lld_con_rx_patch
|
||||||
|
lmac_event_thread
|
||||||
|
malloc_list
|
||||||
|
malloc_list_node
|
||||||
|
mcu_to_lmac
|
||||||
|
mcu_tx_driver
|
||||||
|
med_heap_add_block
|
||||||
|
med_malloc
|
||||||
|
multi_heap_malloc_impl
|
||||||
|
multi_heap_register_impl
|
||||||
|
pmu_read_temperature
|
||||||
|
pmu_temperature_adc2temp_calib
|
||||||
|
power_calib_finish
|
||||||
|
power_compensate_by_temperature_2002
|
||||||
|
power_debug
|
||||||
|
ramrun_test_main
|
||||||
|
recover_wifi_cali_result
|
||||||
|
restore_dpd_config
|
||||||
|
rf_cmd_nosignaling_test_handler
|
||||||
|
rf_nosignaling_test_start_up
|
||||||
|
save_bdr_pwr
|
||||||
|
save_edr_pwr
|
||||||
|
sdio_rx_thread
|
||||||
|
set_baud_rate
|
||||||
|
set_btmac
|
||||||
|
set_btoui
|
||||||
|
set_mac
|
||||||
|
set_woui
|
||||||
|
split_if_necessary
|
||||||
|
start_recv_dma_with_mask
|
||||||
|
syspool_get_buff
|
||||||
|
syspool_original_size
|
||||||
|
tx_idle_timer_handler
|
||||||
|
tx_pulling_rf_dig_set
|
||||||
|
uart_mutex
|
||||||
|
wakeup_lock_timer_init
|
||||||
|
wifi_agc_config
|
||||||
|
wifi_bes2600_cmd_test
|
||||||
|
wifi_config_cali_from_linux
|
||||||
|
wifi_deinit
|
||||||
|
wifi_dpd_boot_low_power_en
|
||||||
|
wifi_driver_mcu_msg_seq_fill
|
||||||
|
wifi_driver_rf_cmd_test
|
||||||
|
wifi_get_rx_data
|
||||||
|
wifi_init
|
||||||
|
wifi_iomux_cfg_switch
|
||||||
|
wifi_recover_cali_data
|
||||||
|
wifi_rf_cmd_confirm
|
||||||
|
wifi_rf_msg_rep
|
||||||
|
wifi_rfpll_temperature_compensation
|
||||||
|
wifi_rf_set_tpc_table
|
||||||
|
wifi_sdio_init
|
||||||
|
wifi_sdio_send
|
||||||
|
wifi_sdio_send_mutexed
|
||||||
|
wifi_send
|
||||||
|
wifi_send_mutex_acquire
|
||||||
|
wifi_send_mutex_release
|
||||||
|
wifi_stop
|
||||||
|
wifi_test_cmd
|
||||||
|
wifi_transq_init
|
||||||
|
wifi_vendor_rf_cmd_select
|
||||||
|
wlan_ap_suspend
|
||||||
|
wlan_ap_wakeup_cfg
|
||||||
|
wlan_sdio_wakeup_ap
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,64 @@
|
|||||||
|
btdrv_bridge_send_data
|
||||||
|
btdrv_bt_modem_config
|
||||||
|
btdrv_clear_spi_trig_pos_enable
|
||||||
|
btdrv_config_init
|
||||||
|
btdrv_delay_cap_calib
|
||||||
|
btdrv_function_patch_init_common
|
||||||
|
bt_drv_reg_op_ble_rx_gain_thr_tbl_set
|
||||||
|
bt_drv_reg_op_bt_master_sleep_enable
|
||||||
|
btdrv_reg_op_config_coex_mode
|
||||||
|
bt_drv_reg_op_le_pwr_ctrl_feats_disable
|
||||||
|
bt_drv_reg_op_set_inquiry_scan_activity
|
||||||
|
btdrv_txpower_calib
|
||||||
|
bthci_lpm_thread
|
||||||
|
bthci_set_afh_host_channel_classification
|
||||||
|
bthci_uart_io_close
|
||||||
|
bthci_uart_io_init
|
||||||
|
bt_iqimb_dma_enable
|
||||||
|
bt_tx_pulling_write
|
||||||
|
bt_wifi_coex_thread
|
||||||
|
close_usb_test
|
||||||
|
data_retransfer_thread
|
||||||
|
em_ble_rxclknsync1_clknrxsync1_getf
|
||||||
|
em_bt_rxclkn1_getf
|
||||||
|
em_bt_rx_hwagc_hwagc_idx_getf
|
||||||
|
factory_get_calib_data_from_efuse
|
||||||
|
factory_get_power_from_efuse
|
||||||
|
factory_get_section_from_efuse
|
||||||
|
factory_powerlevel_convert_to_index
|
||||||
|
factory_set_calib_data_to_efuse
|
||||||
|
factory_set_power_into_efuse
|
||||||
|
filter_list_mutex
|
||||||
|
h5_thread_tx_mutex
|
||||||
|
hal_gpadc_adc2volt_calib
|
||||||
|
hal_pm_notif_register
|
||||||
|
hal_trace_crash_dump_register
|
||||||
|
hal_uart_irq_set_mask
|
||||||
|
hci_bt_state_set
|
||||||
|
hci_open
|
||||||
|
hci_send_to_btc_thread
|
||||||
|
hci_send_to_host_thread
|
||||||
|
hci_uart_send_to_host
|
||||||
|
ld_inq_rx_patch
|
||||||
|
list_append
|
||||||
|
list_begin
|
||||||
|
list_end
|
||||||
|
list_free_node_
|
||||||
|
list_front
|
||||||
|
list_length
|
||||||
|
list_next
|
||||||
|
list_remove
|
||||||
|
lld_adv_end_ind_handler_patch
|
||||||
|
lld_con_rx_patch
|
||||||
|
malloc_list
|
||||||
|
malloc_list_node
|
||||||
|
med_heap_add_block
|
||||||
|
med_malloc
|
||||||
|
multi_heap_register_impl
|
||||||
|
ramrun_test_main
|
||||||
|
start_recv_dma_with_mask
|
||||||
|
syspool_get_buff
|
||||||
|
syspool_original_size
|
||||||
|
tx_pulling_rf_dig_set
|
||||||
|
uart_mutex
|
||||||
|
wlan_sdio_wakeup_ap
|
||||||
@@ -0,0 +1,811 @@
|
|||||||
|
------
|
||||||
|
=========================
|
||||||
|
($lIB
|
||||||
|
`$nIB
|
||||||
|
$yB "F:I
|
||||||
|
$yB "FkI
|
||||||
|
`+`#`0
|
||||||
|
0F9FBF#F
|
||||||
|
0F)F"F
|
||||||
|
0.H.I#
|
||||||
|
0x%04x=0x%04x
|
||||||
|
0x%08x=0x%08x
|
||||||
|
0x400000a0: 0x%x, a4:0x%x
|
||||||
|
0xd0220c00:%x
|
||||||
|
0xD0330020:%x
|
||||||
|
0xd0330050: 0x%x, 54:0x%x
|
||||||
|
0xd0340020:%x
|
||||||
|
0xD0350218:%x
|
||||||
|
0xd0350248:%x
|
||||||
|
#1F(F"
|
||||||
|
1F*F)H
|
||||||
|
}1}N}k}
|
||||||
|
1YbZvYjA
|
||||||
|
2.4g powerlevel indx= %d
|
||||||
|
2FB ,I
|
||||||
|
2"F!F@
|
||||||
|
2F;F0F9F
|
||||||
|
2G 11N power[%d]=0x%4x
|
||||||
|
2g calib flags: %d
|
||||||
|
(2#|hI
|
||||||
|
"2K F)F
|
||||||
|
35J#t5H6M
|
||||||
|
3{Cq3FS
|
||||||
|
3F*F9F8F
|
||||||
|
3F:FQFHF
|
||||||
|
|3|U|v|
|
||||||
|
3yMDqy
|
||||||
|
40iF8F
|
||||||
|
4Jd!/H
|
||||||
|
5%behn
|
||||||
|
5G 11N power[%d]=0x%4x
|
||||||
|
5g calib flags: %d
|
||||||
|
5g powerlevel index= %d
|
||||||
|
5g powerlevel indx= %d
|
||||||
|
`5J5I6H6K
|
||||||
|
6 7!H(I):";#
|
||||||
|
@"6KZ`
|
||||||
|
7I8H8N
|
||||||
|
7KAF
|
||||||
|
7M8J8H+
|
||||||
|
8F1F*F#F
|
||||||
|
`8I9L9K:J
|
||||||
|
#9F(F"
|
||||||
|
`9H:K:J
|
||||||
|
acl_par:link id=%d acl_par_ptr 0x%x, clk off 0x%x, bit off 0x%x, last sync clk off 0x%x, last sync bit off 0x%x
|
||||||
|
after last switch
|
||||||
|
ahFB"h
|
||||||
|
AI_AMA
|
||||||
|
AI_BIXBY
|
||||||
|
AI_GMA
|
||||||
|
AI_GVA
|
||||||
|
AI_VOC
|
||||||
|
AJm H"
|
||||||
|
AKKJ[h
|
||||||
|
ALAJch
|
||||||
|
alloc wakeup_timer fail
|
||||||
|
AM+zii
|
||||||
|
AOB_SM
|
||||||
|
APPMAIN
|
||||||
|
APPTHREAD
|
||||||
|
, APSR=%c%c%c%c%c
|
||||||
|
### ASSERT @ 0x%08X ###
|
||||||
|
AUDFLG
|
||||||
|
avdtp_signal_handle DIR:%s
|
||||||
|
average_value=0x%x and RF_2A1_9_6=0x%x.
|
||||||
|
aXdYcXaY`
|
||||||
|
aYaYi!
|
||||||
|
ba`(0P
|
||||||
|
bad channel. freq:%u-%u
|
||||||
|
Bad func=%d for IOMUX pin=%d
|
||||||
|
Bad GPIO pin %u (should < %u)
|
||||||
|
BDR calib data: 0x%x
|
||||||
|
(BFAR valid)
|
||||||
|
B "F|I
|
||||||
|
`#`BHCLCJ
|
||||||
|
@bh F
|
||||||
|
bit pos : %d
|
||||||
|
BLEAPP
|
||||||
|
BLEPRF
|
||||||
|
BT_ADAPTOR
|
||||||
|
BT_ALLOW_SLEEP
|
||||||
|
bt bdr_pwr flag : %d
|
||||||
|
BTC:2002 work mode patch version:%08x
|
||||||
|
BT calib flags: %d
|
||||||
|
bt config calib from efuse
|
||||||
|
BT controller BusFault_Handler:
|
||||||
|
BT crash dump complete!
|
||||||
|
bt div cali invalid, use default value
|
||||||
|
btdrv_bridge_send_data
|
||||||
|
btdrv_bt_modem_config
|
||||||
|
btdrv_calib_bt has been executed
|
||||||
|
btdrv_clear_spi_trig_pos_enable
|
||||||
|
bt_drv_config_coex_mode %d
|
||||||
|
btdrv_config_init
|
||||||
|
btdrv_delay_cap_calib
|
||||||
|
btdrv_function_patch_init_common
|
||||||
|
bt_drv_reg_op_ble_rx_gain_thr_tbl_set
|
||||||
|
bt_drv_reg_op_bt_master_sleep_enable
|
||||||
|
btdrv_reg_op_config_coex_mode
|
||||||
|
bt_drv_reg_op_le_pwr_ctrl_feats_disable
|
||||||
|
bt_drv_reg_op_set_inquiry_scan_activity
|
||||||
|
btdrv_rx
|
||||||
|
btdrv_SendData
|
||||||
|
btdrv_start_bt has been executed
|
||||||
|
btdrv_txpower_calib
|
||||||
|
#BT_DRV:vendor syncword invalid
|
||||||
|
BT_ENTER_SLEEP
|
||||||
|
bt factory crc error, use default value
|
||||||
|
bt freq cali flags set err, calibration not complete
|
||||||
|
bthci_lpm_thread
|
||||||
|
bthci_set_afh_host_channel_classification
|
||||||
|
bthci_uart_io_close
|
||||||
|
bthci_uart_io_init
|
||||||
|
bt_IQ_DC_Mismatch_Correction_Release
|
||||||
|
bt_iqimb_dma_enable
|
||||||
|
bt powerlevel cali invalid, use default value
|
||||||
|
#####bt read freq calib value = 0x%04x
|
||||||
|
BT_REG_OP:BT 2002: metal id=%d,patch version=%08x
|
||||||
|
btrf cmd: bt_bdr_rx_signal
|
||||||
|
btrf cmd: bt_bdr_tx_signal
|
||||||
|
btrf cmd: bt_ble_nosignal_start
|
||||||
|
btrf cmd: bt_ble_nosignal_stop
|
||||||
|
btrf cmd: bt_edr_rx_signal
|
||||||
|
btrf cmd: bt_edr_tx_signal
|
||||||
|
btrf cmd: bt_enter_signal_mode
|
||||||
|
btrf cmd: bt_get_bdr_power_cali
|
||||||
|
btrf cmd: bt_get_edr_power_cali
|
||||||
|
btrf cmd: bt_get_factory_from_efuse
|
||||||
|
btrf cmd: bt_hci_reset
|
||||||
|
btrf cmd: bt_le_receiver_test
|
||||||
|
btrf cmd: bt_le_test_end
|
||||||
|
btrf cmd: bt_le_transmitter_test
|
||||||
|
btrf cmd: bt_read_reg
|
||||||
|
btrf cmd: bt_save_bdr_power
|
||||||
|
btrf cmd: bt_save_edr_power
|
||||||
|
btrf cmd: bt_save_factory_to_efuse
|
||||||
|
btrf cmd: bt_scan
|
||||||
|
btrf cmd: bt_set_bdr_power
|
||||||
|
btrf cmd: bt_set_edr_power
|
||||||
|
btrf cmd: bt_set_power_cali_flag
|
||||||
|
btrf cmd: bt_stop_rx_signal
|
||||||
|
btrf cmd: bt_write_reg
|
||||||
|
btrf raw data:
|
||||||
|
btrf reg addr:%04x val:%04x
|
||||||
|
bt_rx data too long: bt_rx_len=%d, len=%d, limit=%d
|
||||||
|
bt_tx_pulling_write
|
||||||
|
bt_wake_ap finish pin_val:%d
|
||||||
|
bt_wake_ap start pin_val:%d
|
||||||
|
BT_WAKEUP_HOST
|
||||||
|
bt wakeup host done
|
||||||
|
BT_WAKEUP_HOST SLEEP_STATE %d
|
||||||
|
bt_wifi_coex_thread
|
||||||
|
########bt write freq calib value =0x%04x
|
||||||
|
(BusFault)
|
||||||
|
(BusFault during floating-point lazy state preservation)
|
||||||
|
(BusFault on stacking for exception entry)
|
||||||
|
(BusFault on unstacking for a return from exception)
|
||||||
|
%c %08X: %08X
|
||||||
|
calib_val:%d
|
||||||
|
cC 4J4I
|
||||||
|
C#D^`#`
|
||||||
|
CEWNIDV-
|
||||||
|
CF*cc'c
|
||||||
|
c]I]M^O
|
||||||
|
`CKDLDJ
|
||||||
|
close_usb_test
|
||||||
|
co_mod
|
||||||
|
CPU freq: %u
|
||||||
|
CPU USAGE: busy=%d light=%d sys_deep=%d chip_deep=%d
|
||||||
|
#Cq#FS
|
||||||
|
create btc thread fail
|
||||||
|
create bthci_lpm_thread fail
|
||||||
|
create bt_intersys_rx_wait_sem fail
|
||||||
|
create bt_tx_wait_sem fail
|
||||||
|
create bt_wifi_coex_thread fail
|
||||||
|
create host thread fail
|
||||||
|
create rx_from_host_wait_sem fail
|
||||||
|
Current List
|
||||||
|
<!cx<+
|
||||||
|
%,CYMO
|
||||||
|
cy"yB
|
||||||
|
cYYYYYeYYYYYaaYYYYYYYYYYYYYYYYYYYYYcYcYcYYYeYeYeYYYaYaYaYYYcYcYcYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYeYeYeYYYaYaYaYYYcYcYcYYYeYeYeYYYaYaYaYYYcYcYcYYYYeYeYeYYYaYaYaYYYcYcYc
|
||||||
|
d!2F*H
|
||||||
|
(Data access violation)
|
||||||
|
data_retransfer_thread
|
||||||
|
(Data Watchpoint Match)
|
||||||
|
DebugEvent :
|
||||||
|
Dec 27 2023 11:56:42 8125e20be:best2002_fw
|
||||||
|
Delay List
|
||||||
|
DFSR =%08X
|
||||||
|
(Divide by zero UsageFault)
|
||||||
|
DMA chan not enabled: inst=%u hwch=%u
|
||||||
|
DMA not configured on UART %d
|
||||||
|
DMA not supported on UART %d
|
||||||
|
+D#`p
|
||||||
|
dQk!@Qc
|
||||||
|
DRVANA
|
||||||
|
DRVCODEC
|
||||||
|
DRVFLS
|
||||||
|
DRVSEC
|
||||||
|
DRVUSB
|
||||||
|
[%d]txpll capbank not done,and 0xED=0x%x
|
||||||
|
Dump the 2g power value
|
||||||
|
Dump the 5g power value
|
||||||
|
Dump the calib flags value
|
||||||
|
Dump the wifi addr value
|
||||||
|
EDR calib data: 0x%x
|
||||||
|
efuse/val:0x%02x/0x%04x
|
||||||
|
eKeJfM
|
||||||
|
em_ble_rxclknsync1_clknrxsync1_getf
|
||||||
|
em_bt_rxclkn1_getf
|
||||||
|
em_bt_rx_hwagc_hwagc_idx_getf
|
||||||
|
enqueue channel freq config fail
|
||||||
|
enqueue coex event:%d fail
|
||||||
|
enqueue lpm event:%d fail
|
||||||
|
enqueue sleep config fail
|
||||||
|
------ Enter %s ------
|
||||||
|
, EPSR=%08X, IPSR=%03X
|
||||||
|
ERROR Connect Handle=0x%x ca=%p
|
||||||
|
error: dma_error:%d
|
||||||
|
Error, frame len:%u
|
||||||
|
Error, frame len:%u, rx qlen:%u
|
||||||
|
error, read battery timeout0
|
||||||
|
error, read battery timeout1
|
||||||
|
error: uart irq error. status:0x%x
|
||||||
|
(Escalation HardFault)
|
||||||
|
esco linkid :%d
|
||||||
|
EvrRtxThreadError, thread name:%s, status:%d
|
||||||
|
### EXCEPTION ###
|
||||||
|
, ExceptionNumber=D'%d
|
||||||
|
, EXC_RETURN=%08X
|
||||||
|
------ Exit %s ------
|
||||||
|
*# #@F
|
||||||
|
`# # F
|
||||||
|
F0F9F8
|
||||||
|
F0F9Fc
|
||||||
|
F0F9F"F+F
|
||||||
|
F0F9FS
|
||||||
|
F0F"F9F+F
|
||||||
|
;"F1FC %
|
||||||
|
:F1F F
|
||||||
|
*F1FPF
|
||||||
|
#)F1H
|
||||||
|
&#F2FC
|
||||||
|
F2F;F0F9F
|
||||||
|
F2F;FQ
|
||||||
|
F2FPF;FYF
|
||||||
|
!F3F*F
|
||||||
|
F3F]`i`
|
||||||
|
{F3`u`@#
|
||||||
|
"F4D3FD
|
||||||
|
!F8F&p
|
||||||
|
)F8F.p
|
||||||
|
F9F2F
|
||||||
|
:F9F(`8F
|
||||||
|
F9FBF
|
||||||
|
?*F+`9F#hC
|
||||||
|
factory_get_calib_data_from_efuse
|
||||||
|
factory_get_power_from_efuse
|
||||||
|
factory_get_section_from_efuse
|
||||||
|
factory_powerlevel_convert_to_index
|
||||||
|
factory_set_calib_data_to_efuse
|
||||||
|
factory_set_power_into_efuse
|
||||||
|
"FAF(F
|
||||||
|
Failed to get DMA channel
|
||||||
|
Failed to get dst periph: %d
|
||||||
|
Failed to get src periph: %d
|
||||||
|
Failed to open intersys
|
||||||
|
Failed to open pmu
|
||||||
|
FaultCause :
|
||||||
|
FaultInfo :
|
||||||
|
FBFKFPFYF
|
||||||
|
FBFKFQ
|
||||||
|
"FB HI
|
||||||
|
"FB ?I
|
||||||
|
#FbJcIC
|
||||||
|
"FB LI
|
||||||
|
FCF F1F
|
||||||
|
#:FcH1
|
||||||
|
#FC #J%I
|
||||||
|
FdK0F9F
|
||||||
|
FEKEMB
|
||||||
|
!*F F
|
||||||
|
#:F(F!
|
||||||
|
,"F+F(
|
||||||
|
*F!F0F
|
||||||
|
"F+F0F9F
|
||||||
|
(F!F2F
|
||||||
|
F F2F)F;F
|
||||||
|
*F!F2H
|
||||||
|
)F F;F
|
||||||
|
F)F:F3F
|
||||||
|
F F)FD
|
||||||
|
"F+F F)F
|
||||||
|
F+F F)F
|
||||||
|
F[F F)F
|
||||||
|
F+F@FIF
|
||||||
|
F"F+FQ
|
||||||
|
F F)FS
|
||||||
|
*F!F?H
|
||||||
|
&)F F+p
|
||||||
|
F[FPFYF
|
||||||
|
{F#`g`@#
|
||||||
|
#:F_H)
|
||||||
|
f#h"FE
|
||||||
|
*F!i0D
|
||||||
|
"F}IB
|
||||||
|
FIF@F#`
|
||||||
|
*FIIIH
|
||||||
|
filter list full
|
||||||
|
filter_list_mutex
|
||||||
|
filter opcode:%04x evt
|
||||||
|
FINAL %d,best_g=%d,best_p=%d,e=%d,energy_min=%d
|
||||||
|
FINAL DC best_i=%d,best_q=%d,e=%d,energy_min=%d
|
||||||
|
F,J,IB
|
||||||
|
FmJ#FC mI
|
||||||
|
{F M+`o`@#
|
||||||
|
{F+`n`@#
|
||||||
|
F-Nui(F
|
||||||
|
FPF2FYF;F
|
||||||
|
FPFBFYFKF
|
||||||
|
FPF"FYF+F
|
||||||
|
FPFYF2F;F
|
||||||
|
FPFYFC
|
||||||
|
"FQFB
|
||||||
|
*FQFB
|
||||||
|
;"FQFC %
|
||||||
|
frame:0x%08X
|
||||||
|
freq calib flag : %d
|
||||||
|
freq calib flags: %d
|
||||||
|
freq calib value: %d
|
||||||
|
freq cali data invalid 0x%04x, use default value
|
||||||
|
FRF[F0F9F
|
||||||
|
FRF[FQ
|
||||||
|
[Func %d io %d] is unsupported by pin_func_map. Check it or use reg assignment like iomux_set_uart0.
|
||||||
|
(Function %d matched)
|
||||||
|
f?>UUUUU
|
||||||
|
#:FXF!
|
||||||
|
FyhY`9h!
|
||||||
|
:@:F<@Z
|
||||||
|
fZf]f\f
|
||||||
|
!)@:F,@zj/@\G1@|
|
||||||
|
Get the 2.4g power index
|
||||||
|
Get the 5g power index
|
||||||
|
g F)F2F;F
|
||||||
|
(#gIC
|
||||||
|
"gKZ`O
|
||||||
|
GL@MH
|
||||||
|
`gpsjAF
|
||||||
|
h0 Fah
|
||||||
|
h5 free list null
|
||||||
|
h5_thread_tx_mutex
|
||||||
|
hal_audma_get_chan failed.
|
||||||
|
hal_gpadc_adc2volt_calib
|
||||||
|
hal_pm_notif_register
|
||||||
|
(Halted)
|
||||||
|
hal_trace_crash_dump_register
|
||||||
|
hal_uart_irq_set_mask
|
||||||
|
Handling Timer callback %p
|
||||||
|
(HardFault)
|
||||||
|
h+`chC
|
||||||
|
hci_bt_state_set
|
||||||
|
HCI LE Read Number of Support Advertising
|
||||||
|
HCI LE Set Advertising Data len:%u
|
||||||
|
HCI LE Set Scan Response Data:%u
|
||||||
|
hci_open
|
||||||
|
HCI_REC:accept AVDTP_CLOSE
|
||||||
|
HCI_REC:accept AVDTP_OPEN
|
||||||
|
HCI_REC:accept AVDTP_START
|
||||||
|
HCI_REC:accept AVDTP_SUSPEND
|
||||||
|
HCI_REC:acl connected handler:%04x
|
||||||
|
HCI_REC:acl connect fail status:%02x type:%d
|
||||||
|
HCI_REC:acl disconnected handler:%04x %02x
|
||||||
|
HCI_REC:AVDTP_CLOSE
|
||||||
|
HCI_REC:AVDTP_OPEN
|
||||||
|
HCI_REC:AVDTP_START
|
||||||
|
HCI_REC:AVDTP_SUSPEND
|
||||||
|
HCI_REC:create_acl_conn:
|
||||||
|
HCI_REC:DIR:H2C L2C_CONN_RSP avdtp_media %04x:%04x res:%d
|
||||||
|
HCI_REC:DIR:H2C L2C_CONN_RSP avdtp_sig %04x:%04x res:%d
|
||||||
|
HCI_REC:DIR:%s L2C_CONN_REQ avdtp_media scid:%04x
|
||||||
|
HCI_REC:DIR:%s L2C_CONN_REQ avdtp_signal scid:%04x
|
||||||
|
HCI_REC:dis_acl_conn:
|
||||||
|
HCI_REC: disc other conn_handle:%04x
|
||||||
|
HCI_REC:HCI_EV_INQUIRY_COMPLETE:%02x
|
||||||
|
HCI_REC:HCI_INQUIRY:
|
||||||
|
HCI_REC:HCI_INQUIRY_CANCEL
|
||||||
|
HCI_REC:HCI_RESET
|
||||||
|
HCI_REC:L2CAP_SIG_DISCONN_RSP scid:%04x dcid:%04x
|
||||||
|
HCI_REC:le_conn_complete:%d
|
||||||
|
HCI_REC:le disconnected handler:%04x
|
||||||
|
HCI_REC:LE_SET_ADV_EN:%d
|
||||||
|
HCI_REC:LE_SET_EXT_SCAN_EN:%d
|
||||||
|
HCI_REC:linkkey notify
|
||||||
|
HCI_REC:linkkey req
|
||||||
|
HCI_REC:linkkey_req neg reply
|
||||||
|
HCI_REC:linkkey req reply:
|
||||||
|
HCI_REC:MODE_CHANGE:%d
|
||||||
|
HCI_REC:reject avdtp start
|
||||||
|
HCI_REC:reject signal id:%d
|
||||||
|
HCI_REC:remote_conn_req link_type:%d
|
||||||
|
HCI_REC:sco connected handler:%02x
|
||||||
|
HCI_REC:sco connect fail status:%02x
|
||||||
|
HCI_REC:sco disconnected handler:%04x
|
||||||
|
HCI_REC:write_scan_enable:0x%x
|
||||||
|
hci_send_to_btc_thread
|
||||||
|
hci_send_to_host_thread
|
||||||
|
hci_uart_send_to_host
|
||||||
|
hci_uart_send_to_host release failed,%d
|
||||||
|
HCI_VENDOR_PKT len too long:%d
|
||||||
|
Heap corrupt: %p
|
||||||
|
#h`:F9F
|
||||||
|
h=I:FB
|
||||||
|
hJd!XH
|
||||||
|
HOST_WAKEUP_BT
|
||||||
|
HWTIMER-ALLOC: Invalid state: %d
|
||||||
|
HWTIMER collapsed: irq occurred too early
|
||||||
|
HWTIMER collapsed: irq when active is null
|
||||||
|
HWTIMER irq occurred early: old active timer might be deleted? %u
|
||||||
|
HWTIMER irq when active is null: might be deleted? %u
|
||||||
|
HWTIMER-START collapsed: cur=%u active=%u
|
||||||
|
HWTIMER-STOP collapsed: active timer 0x%08x not in list 0x%08x
|
||||||
|
HWTIMER-STOP collapsed: cur=%u active=%u
|
||||||
|
HWTIMER-STOP collapsed: elapsed=%u active=%u
|
||||||
|
HWTIMER-STOP collapsed: fired timer 0x%08x not in list 0x%08x
|
||||||
|
Hz&F)F
|
||||||
|
IBRTAPP
|
||||||
|
ICSR =%08X, AIRCR=%08X, SCR =%08X, CCR =%08X
|
||||||
|
IdleTask: Failed to alloc sleep timer
|
||||||
|
IdleTask: Failed to register crash dump callback
|
||||||
|
I+FC "F
|
||||||
|
%I"F+F
|
||||||
|
'I'M(H
|
||||||
|
Inactive
|
||||||
|
INACTIVE
|
||||||
|
init wakeup gpio:%x
|
||||||
|
input powerlevel is invalid
|
||||||
|
(Instruction access violation)
|
||||||
|
(Instruction bus error)
|
||||||
|
INTERSYS-OPEN: rx_flowctrl=%d (should be %d)
|
||||||
|
INTERSYS-RX: Handler missing
|
||||||
|
INTERSYS-RX: Invalid msg type: %d
|
||||||
|
INTERSYS-TX: Invalid msg type: %d
|
||||||
|
Invalid AUDMA chan: %u
|
||||||
|
Invalid baud param: %d
|
||||||
|
Invalid data bits param: %d
|
||||||
|
Invalid DMA inst: %u
|
||||||
|
Invalid DMA periph: %d
|
||||||
|
Invalid DMA policy: %d
|
||||||
|
Invalid flow control param: %d
|
||||||
|
invalid hci_type:%x
|
||||||
|
Invalid packet type:%02x. queue len:%d
|
||||||
|
Invalid parity param: %d
|
||||||
|
(Invalid PC load by EXC_RETURN UsageFault)
|
||||||
|
Invalid SPI RX bits: %d
|
||||||
|
Invalid SPI RX FRAME bits: %d
|
||||||
|
Invalid SPI TX bits: %d
|
||||||
|
(Invalid state UsageFault)
|
||||||
|
Invalid stop bits param: %d
|
||||||
|
Invalid UART ID: %d
|
||||||
|
Invalid, use default value.
|
||||||
|
irq: gpio %d, val %d
|
||||||
|
!is_first_block(heap, block)
|
||||||
|
!is_last_block(block)
|
||||||
|
ISPI: Bad bits cfg
|
||||||
|
ISPI: SPI cs bad: %d
|
||||||
|
IUUUUU
|
||||||
|
=J+FE
|
||||||
|
jhZ`8Fbj
|
||||||
|
JI2F;F
|
||||||
|
#)J*IC
|
||||||
|
J! Sh#
|
||||||
|
}KB }J~I
|
||||||
|
KcpG'(
|
||||||
|
K FYi
|
||||||
|
K]h,C\`8
|
||||||
|
K\i F
|
||||||
|
K`pG'(
|
||||||
|
`&K"tS
|
||||||
|
KXh@BpG
|
||||||
|
ld_inq_rx_patch
|
||||||
|
l:%d m:%d h:%d
|
||||||
|
list_append
|
||||||
|
list_begin
|
||||||
|
list_end
|
||||||
|
list_free_node_
|
||||||
|
list_front
|
||||||
|
list_length
|
||||||
|
list_next
|
||||||
|
list_remove
|
||||||
|
%"L#KT
|
||||||
|
lld_adv_end_ind_handler_patch
|
||||||
|
lld_con_rx_patch
|
||||||
|
LLMJ0F
|
||||||
|
"lLmK!h
|
||||||
|
lmp buff:
|
||||||
|
lp clk: %d
|
||||||
|
mac addr flags: %d
|
||||||
|
malloc ini
|
||||||
|
malloc_list
|
||||||
|
malloc_list_node
|
||||||
|
malloc ok
|
||||||
|
med_heap_add_block
|
||||||
|
med_malloc
|
||||||
|
(MemFault)
|
||||||
|
(MemFault during floating-point lazy state preservation)
|
||||||
|
(MemFault on stacking for exception entry)
|
||||||
|
(MemFault on unstacking for a return from exception)
|
||||||
|
METAL_ID: %d
|
||||||
|
:M"F)FC 7
|
||||||
|
%M"F)FC 8
|
||||||
|
`MJNHNI
|
||||||
|
MMFAR=%08X, BFAR =%08X
|
||||||
|
(MMFAR valid)
|
||||||
|
";M<O<I
|
||||||
|
(Monitor)
|
||||||
|
MSP =%08X, PSP =%08X
|
||||||
|
MSPLIM=%08X, PSPLIM=%08X
|
||||||
|
multi_heap_register_impl
|
||||||
|
name=%s
|
||||||
|
next > (intptr_t)block
|
||||||
|
Next List
|
||||||
|
`NJOHOL
|
||||||
|
(NMI)
|
||||||
|
(No coprocessor UsageFault)
|
||||||
|
(NoException)
|
||||||
|
(None)
|
||||||
|
no previous block
|
||||||
|
Notice:The 2.4g power have calib finish, refusing calib again
|
||||||
|
Notice:The 2g power have not finish, Please calib power first!
|
||||||
|
Notice:The 5g power have calib finish, refusing calib again
|
||||||
|
Notice:The 5g power have not finish, Please calib power first!
|
||||||
|
Notice:The freq have calib finish, refusing calib again
|
||||||
|
NV_SEC
|
||||||
|
oFM"!F;F
|
||||||
|
`OI2FB
|
||||||
|
OK_BES_RF=================>BDR_POWER= 0x%04x
|
||||||
|
OK_BES_RF=================>CLK_FREQ= 0x%04x
|
||||||
|
OK_BES_RF=================>EDR_POWER= 0x%04x
|
||||||
|
oKbhoI
|
||||||
|
Oneshot
|
||||||
|
original 0x8C val=0x%x
|
||||||
|
osRtxErrorNotify, code: %08x object is %p, magicWord:0x%08x|0x%08x
|
||||||
|
p@``1F
|
||||||
|
p3p*FO
|
||||||
|
pa`"p#v
|
||||||
|
p@B 6I
|
||||||
|
p@B [I
|
||||||
|
pbxBp2x
|
||||||
|
PC =%08X
|
||||||
|
PC/L9H:O
|
||||||
|
pcS`pG
|
||||||
|
Periodic
|
||||||
|
pG pG
|
||||||
|
pGY(O
|
||||||
|
PHQJQI
|
||||||
|
"pK F)F
|
||||||
|
PLAYER
|
||||||
|
Possible Backtrace:
|
||||||
|
(Precise data bus error)
|
||||||
|
PRIMASK =%02X, FAULTMASK =%02X, BASEPRI =%02X, CONTROL =%02X
|
||||||
|
Q69!D@
|
||||||
|
#QF@F"
|
||||||
|
#QF@F*
|
||||||
|
~"~:~Q~h~~~
|
||||||
|
Qkkbal
|
||||||
|
R0 =0x%08X R1=0x%08X R2=0x%08X R3 =0x%08X
|
||||||
|
R12=%08X, SP =%08X, LR =%08X
|
||||||
|
R12=0x%08X LR=0x%08X PC=0x%08X XPSR=0x%08X
|
||||||
|
R%-2d=%08X, R%-2d=%08X, R%-2d=%08X, R%-2d=%08X
|
||||||
|
ramrun_test_main
|
||||||
|
read reg 0xF8 val=%x
|
||||||
|
Ready List
|
||||||
|
REG:AFSR = 0x%08x
|
||||||
|
REG:AIRCR = 0x%08x
|
||||||
|
REG:BFAR = 0x%08x
|
||||||
|
REG:BT_CURRENTRXDESCPTR: 0x%x
|
||||||
|
REG:CCR = 0x%08x
|
||||||
|
REG:CFSR = 0x%08x
|
||||||
|
REG:[fp] = 0x%08x
|
||||||
|
REG:HFSR = 0x%08x
|
||||||
|
REG:ICSR = 0x%08x
|
||||||
|
REG:[ip] = 0x%08x
|
||||||
|
REG:IP_ERRORTYPESTAT: 0x%x
|
||||||
|
REG:[LR] = 0x%08x
|
||||||
|
REG:MMFAR = 0x%08x
|
||||||
|
REG:MSP = 0x%08x
|
||||||
|
REG:PSP = 0x%08x
|
||||||
|
REG:[R0] = 0x%08x
|
||||||
|
REG:[R1] = 0x%08x
|
||||||
|
REG:[R2] = 0x%08x
|
||||||
|
REG:[R3] = 0x%08x
|
||||||
|
REG:[R4] = 0x%08x
|
||||||
|
REG:[R5] = 0x%08x
|
||||||
|
REG:[R6] = 0x%08x
|
||||||
|
REG:[R7] = 0x%08x
|
||||||
|
REG:[R8] = 0x%08x
|
||||||
|
reg_reset:
|
||||||
|
REG:SCR = 0x%08x
|
||||||
|
REG:SHCSR = 0x%08x
|
||||||
|
REG:[sl] = 0x%08x
|
||||||
|
REG:[SP,#0] = 0x%08x
|
||||||
|
REG:SP = 0x%08x
|
||||||
|
REG:[SP,#12] = 0x%08x
|
||||||
|
REG:[SP,#16] = 0x%08x
|
||||||
|
REG:[SP,#20] = 0x%08x
|
||||||
|
REG:[SP,#24] = 0x%08x
|
||||||
|
REG:[SP,#28] = 0x%08x
|
||||||
|
REG:[SP,#32] = 0x%08x
|
||||||
|
REG:[SP,#36] = 0x%08x
|
||||||
|
REG:[SP,#40] = 0x%08x
|
||||||
|
REG:[SP,#4] = 0x%08x
|
||||||
|
REG:[SP,#44] = 0x%08x
|
||||||
|
REG:[SP,#48] = 0x%08x
|
||||||
|
REG:[SP,#52] = 0x%08x
|
||||||
|
REG:[SP,#56] = 0x%08x
|
||||||
|
REG:[SP,#60] = 0x%08x
|
||||||
|
REG:[SP,#64] = 0x%08x
|
||||||
|
REG:[SP,#8] = 0x%08x
|
||||||
|
reg=%x,v=%x
|
||||||
|
release hci_uart_tx_sema
|
||||||
|
reset bt_tx_wait_sem fail,%d
|
||||||
|
reset hci_uart_tx_sema fail,%d
|
||||||
|
RF_ED_9_6[%d]=0x%x
|
||||||
|
rFeID
|
||||||
|
#RF@F!
|
||||||
|
#RF@F)
|
||||||
|
rf_f8_5_0=0x%x, rf_f8_11_6=0x%x
|
||||||
|
RFF BI
|
||||||
|
RF[FPFYF
|
||||||
|
rF)ID
|
||||||
|
rIrLB
|
||||||
|
ROKYIYH
|
||||||
|
rstore dig reg=0x%x,v=0x%x
|
||||||
|
RTX V5.5.1
|
||||||
|
Running
|
||||||
|
RUNNING
|
||||||
|
rx linkkey:
|
||||||
|
rx reg_set:
|
||||||
|
rx reg_store:
|
||||||
|
rx reg=%x,v=%x
|
||||||
|
RX/TX-DMA configured on SPI %d
|
||||||
|
%s 0x%x=0x%x , 0x%x=0x%x
|
||||||
|
%s bit_val = %d, bit_offset =%d ch=%d
|
||||||
|
%s data type is invalid
|
||||||
|
%s,%d os err=%d
|
||||||
|
(SecureFault)
|
||||||
|
%s efuse:%d/%d LV=%d, HV=%d, Slope:%d Intcpt:%d
|
||||||
|
%s efuse/val:0x%02x/0x%04x
|
||||||
|
%s: error size,0x%x,0x%x,0x%x
|
||||||
|
Set 2g calib flags
|
||||||
|
Set 5g calib flags
|
||||||
|
Set bdr calib value =%x
|
||||||
|
Set bt freq calib flags 0x%4x
|
||||||
|
Set edr calib value =%x
|
||||||
|
Set freq calib flags 0x%4x
|
||||||
|
Set freq calib value =%x
|
||||||
|
set pcm
|
||||||
|
set the bt bdr value : %d
|
||||||
|
set vohci
|
||||||
|
Set wifi_addr calib flags
|
||||||
|
%s exit, %dus
|
||||||
|
sF4ID
|
||||||
|
[%s] failed
|
||||||
|
SFBFpIC
|
||||||
|
sF"ID
|
||||||
|
[%s] g_block_index=%d begin_addr=%p size=%d
|
||||||
|
[%s] g_block_index(%d) >= MED_HEAP_BLOCK_MAX_NUM
|
||||||
|
%s: handler already registered: user=%d handler=%p existedUser=%d
|
||||||
|
%s: handler cannot be NULL: user=%d
|
||||||
|
%s: handler list full: user=%d handler=%p curCnt=%u
|
||||||
|
SHCSR=%08X, CFSR =%08X, HFSR =%08X, AFSR =%08X
|
||||||
|
%s host time-out
|
||||||
|
[%s] index=%d g_block_index=%d. Cannot malloc any RAM
|
||||||
|
sleep_judge flag:%d
|
||||||
|
%s len:%d
|
||||||
|
%s line =%d, get efuse error
|
||||||
|
%s line:%d sRet:%d
|
||||||
|
-%s: mem pool size too small: start=%p end=%p reserved_size=%u
|
||||||
|
%s module %d
|
||||||
|
[%s] no memory: size=%u
|
||||||
|
%s on/off:%d level:%d
|
||||||
|
%s osEventTimeout
|
||||||
|
SPEECH
|
||||||
|
SPIPHY: Bad bits cfg
|
||||||
|
SPIPHY: SPI cs bad: %d
|
||||||
|
SPI rate too large: %u
|
||||||
|
SPI rate too small: %u
|
||||||
|
%s powerlevel =0x%4x
|
||||||
|
[%s] ptr=%p size=%u free=%u user=%p
|
||||||
|
%s reg_store:
|
||||||
|
%s rf_de=0x%x, d0350248=0x%x, d0220c00=0x%x
|
||||||
|
%s: Set RT irq in hal_uart_dma_recv_mask... to avoid data lost
|
||||||
|
%s set voice path g_voice_path =%d
|
||||||
|
)ssJ8F
|
||||||
|
[%s] start=%p size=%d user=%p
|
||||||
|
%s, state:0x%08x
|
||||||
|
Stack:
|
||||||
|
stack_mem=0x%08X stack_size=%u sp:0x%04x min_stack_free=%u
|
||||||
|
(Stack overflow UsageFault)
|
||||||
|
*** stack smashing detected ***: terminated
|
||||||
|
start_recv_dma_with_mask
|
||||||
|
st_bes_h5.thread_data_retrans=%p
|
||||||
|
%s The power value not in range = %04x
|
||||||
|
Stopped
|
||||||
|
store dig reg=0x%x,v=0x%x
|
||||||
|
swap_in_time=%u(ticks)/%u(ms) swap_out_time=%u(ticks)/%u(ms)
|
||||||
|
syspool_get_buff
|
||||||
|
syspool_init: %p,0x%x
|
||||||
|
syspool_original_size
|
||||||
|
System pool in shortage! To allocate size %d but free size %d.
|
||||||
|
systimer
|
||||||
|
task msg buff:
|
||||||
|
task runtime %u(ticks)/%u ms
|
||||||
|
TERMINAT
|
||||||
|
Terminate List
|
||||||
|
The channel invalid
|
||||||
|
The channel is invald
|
||||||
|
The channel is invalid, bit_offset < 0
|
||||||
|
The channel number invalid ch = %d
|
||||||
|
thread=0x%x, prio=%u state=%-9s thread_addr=0x%08X
|
||||||
|
--- Thread BAD
|
||||||
|
--- Thread %d
|
||||||
|
thread_join=0x%08X flags_options=%u wait_flags=%u thread_flags=%u
|
||||||
|
Thread List:
|
||||||
|
, ThreadMode
|
||||||
|
--- Thread name=%s cpu=%%%d min-free-stack=%d
|
||||||
|
thread_next=0x%08X thread_prev=0x%08X delay_next=0x%08X delay_prev=0x%08X
|
||||||
|
--- Thread NONE
|
||||||
|
thread still runing, now %u(ticks)/%u(ms)
|
||||||
|
%T:I:J44
|
||||||
|
Timer current tick %u, Load %u
|
||||||
|
Timer %p Callback: %p
|
||||||
|
Timer: %s
|
||||||
|
--- Timers is handleing:%d
|
||||||
|
--- Timers Stats:
|
||||||
|
Timer state: %s
|
||||||
|
Timer type %s
|
||||||
|
"tK F)F
|
||||||
|
TRACE-%u: Wait memsc timeout
|
||||||
|
T>UUUUUU
|
||||||
|
TWSAPP
|
||||||
|
tx_delay_cap:%d
|
||||||
|
TX-DMA configured on SPI %d
|
||||||
|
tx length invalid:%d
|
||||||
|
tx linkkey:
|
||||||
|
tx_pulling_rf_dig_set
|
||||||
|
uart_mutex
|
||||||
|
(Unaligned access UsageFault)
|
||||||
|
(Undefined instruction UsageFault)
|
||||||
|
unsupport cmd:%d
|
||||||
|
unsupported message type:%d
|
||||||
|
(UsageFault)
|
||||||
|
usbphy open fail
|
||||||
|
use time: %d ms
|
||||||
|
V!8F}J
|
||||||
|
vbat:reg 0x%x, vbat %d
|
||||||
|
V?LUUUUU
|
||||||
|
VOICE_COMPRESS
|
||||||
|
WAIT_DLY
|
||||||
|
WAIT_EVE
|
||||||
|
WAIT_FLAG
|
||||||
|
WAIT_JOIN
|
||||||
|
Wait List
|
||||||
|
WAIT_MEM
|
||||||
|
WAIT_MGET
|
||||||
|
WAIT_MPUT
|
||||||
|
WAIT_MUT
|
||||||
|
WAIT_SEM
|
||||||
|
wakeup_timer_handler. gpio:%u
|
||||||
|
warning clear bitfield unknown evt_type:%d
|
||||||
|
warning: frame timeout, drop it
|
||||||
|
warning! invalid linkid:%d handle:0x%04x
|
||||||
|
warning! TX hander should be always active
|
||||||
|
warning! unknown status:%d
|
||||||
|
WIFI_ADDR= %02x:%02x:%02x
|
||||||
|
wifi_addr calib flags: %d
|
||||||
|
wifi_fw
|
||||||
|
wlan_sdio_wakeup_ap
|
||||||
|
write reg 0x8C val=%x
|
||||||
|
write reg 0xB8 val=%x
|
||||||
|
write reg 0xBD val=%x
|
||||||
|
write reg 0xBE val=%x
|
||||||
|
write reg 0xC4 val=%x
|
||||||
|
write reg 0x%x[11:6] val=%x
|
||||||
|
write reg 0x%x[5:0] val=%x
|
||||||
|
xB *FZI
|
||||||
|
XPSR=%08X
|
||||||
|
Y@1@K@a
|
||||||
|
yF9K@"
|
||||||
|
yF!K@"
|
||||||
|
yF'K@"
|
||||||
|
yF.K@"
|
||||||
|
"YK F)F
|
||||||
|
+`!y`yj
|
||||||
|
ZFd!PF
|
||||||
|
zF'M@#
|
||||||
|
zF+M@#
|
||||||
|
zF]N@#
|
||||||
|
"Z`[FZFO
|
||||||
|
=@zj?@L~@@\GA@l
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
adjust_digtal_gain_by_formula
|
||||||
|
ana_and_dig_config
|
||||||
|
bbpl_comp_by_temprtr_step2_v2
|
||||||
|
cfg_rx_mem_dump
|
||||||
|
close_usb_test
|
||||||
|
config_dpd
|
||||||
|
dpd_write_table
|
||||||
|
factory_get_calib_data_from_efuse
|
||||||
|
factory_get_power_from_efuse
|
||||||
|
factory_get_section_from_efuse
|
||||||
|
gain_sweep_end
|
||||||
|
gain_sweep_start
|
||||||
|
get_bdr_pwr
|
||||||
|
get_btmac
|
||||||
|
get_btoui
|
||||||
|
get_channel
|
||||||
|
get_edr_pwr
|
||||||
|
get_flags
|
||||||
|
get_frame_length
|
||||||
|
get_mac
|
||||||
|
get_powerlevel
|
||||||
|
get_rate
|
||||||
|
get_save
|
||||||
|
get_save_freqoffset
|
||||||
|
get_tx_interval
|
||||||
|
get_woui
|
||||||
|
hal_gpadc_adc2volt_calib
|
||||||
|
hal_iomux_cfg_wifi_switch
|
||||||
|
hal_iomux_set_sdio_voltage
|
||||||
|
hal_pm_notif_register
|
||||||
|
hal_sdio_adma_compensate
|
||||||
|
hal_sdio_adma_config
|
||||||
|
hal_sdio_device_irq_handler
|
||||||
|
hal_sdio_device_wifi_rxtx_start
|
||||||
|
hal_trace_crash_dump_register
|
||||||
|
host_if_common_init
|
||||||
|
host_int_irq
|
||||||
|
init_dig_gain_offset
|
||||||
|
iq_compensate_by_temperature_2002
|
||||||
|
iq_compensate_by_temperature_2g_2002
|
||||||
|
iq_compensate_by_temperature_v1
|
||||||
|
mcu_to_lmac
|
||||||
|
phase_sweep_end
|
||||||
|
phase_sweep_start
|
||||||
|
pmu_temperature_adc2temp_calib
|
||||||
|
power_calib_finish
|
||||||
|
power_compensate_by_temperature_2002
|
||||||
|
power_debug
|
||||||
|
ramrun_test_main
|
||||||
|
recover_wifi_cali_result
|
||||||
|
rf_cmd_nosignaling_test_handler
|
||||||
|
rf_nosignaling_test_start_up
|
||||||
|
rx_no_filter
|
||||||
|
save_bdr_pwr
|
||||||
|
save_edr_pwr
|
||||||
|
sdio_rx_thread
|
||||||
|
set_btmac
|
||||||
|
set_btoui
|
||||||
|
set_mac
|
||||||
|
set_wifi_test_continue_mode
|
||||||
|
set_woui
|
||||||
|
tpt_open
|
||||||
|
tx_11b_cnt
|
||||||
|
tx_11g_cnt
|
||||||
|
tx_11n_cnt
|
||||||
|
tx_data_path
|
||||||
|
tx_dc_tone
|
||||||
|
tx_idle_timer_handler
|
||||||
|
tx_power_flags
|
||||||
|
tx_stop_cnt
|
||||||
|
wifi_agc_config
|
||||||
|
wifi_bes2600_cmd_test
|
||||||
|
wifi_config_cali_from_linux
|
||||||
|
wifi_deinit
|
||||||
|
wifi_dpd_boot_low_power_en
|
||||||
|
wifi_driver_mcu_msg_seq_fill
|
||||||
|
wifi_driver_rf_cmd_test
|
||||||
|
wifi_init
|
||||||
|
wifi_iomux_cfg_switch
|
||||||
|
wifi_iq_cali_2g_v2
|
||||||
|
wifi_recover_cali_data
|
||||||
|
wifi_rf_cmd_confirm
|
||||||
|
wifi_rf_msg_rep
|
||||||
|
wifi_rfpll_temperature_compensation
|
||||||
|
wifi_rf_set_tpc_table
|
||||||
|
wifi_rf_start
|
||||||
|
wifi_rf_test_power_cali_save
|
||||||
|
wifi_rx_mem_dump_test
|
||||||
|
wifi_sdio_init
|
||||||
|
wifi_sdio_send
|
||||||
|
wifi_stop
|
||||||
|
wifi_test_cmd
|
||||||
|
wifi_transq_init
|
||||||
|
wifi_tx_cnt_pre
|
||||||
|
wifi_vendor_rf_cmd_select
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,99 @@
|
|||||||
|
# Observed BES2600 driver bugs on PineTab2 (ohm)
|
||||||
|
|
||||||
|
Compiled from on-device dmesg + Pine64 wiki + community reports. Cross-references the patch series.
|
||||||
|
|
||||||
|
## Bug #1 — factory.txt path mismatch + filp_open antipattern (FIXED in c1)
|
||||||
|
|
||||||
|
**File**: `bes2600_factory.c:148-170` (read), `:188-200` (create)
|
||||||
|
|
||||||
|
**Symptom (pre-fix)**:
|
||||||
|
```
|
||||||
|
(NULL device *): read and check /lib/firmware/bes2600_factory.txt error
|
||||||
|
```
|
||||||
|
|
||||||
|
**Root cause**: hardcoded `FACTORY_PATH=/lib/firmware/bes2600_factory.txt` Makefile macro;
|
||||||
|
real file ships at `/lib/firmware/bes2600/bes2600_factory.txt`. Worse, the read uses
|
||||||
|
`filp_open` + `kernel_read` directly, bypassing the firmware-class infrastructure.
|
||||||
|
|
||||||
|
**Fix**: c1 patch — `request_firmware()` for the read path, repointed Makefile macro
|
||||||
|
to firmware-class name `bes2600/bes2600_factory.txt`.
|
||||||
|
|
||||||
|
## Bug #1.5 — factory.txt parse failure (NEW, c5 to investigate)
|
||||||
|
|
||||||
|
**File**: `bes2600_factory.c factory_parse()`
|
||||||
|
|
||||||
|
**Symptom (post-c1)**:
|
||||||
|
```
|
||||||
|
bes2600_factory.txt parse fail
|
||||||
|
read and check bes2600/bes2600_factory.txt error
|
||||||
|
factory cali data get failed.
|
||||||
|
```
|
||||||
|
|
||||||
|
**How discovered**: c1 fix exposed a deeper bug — `factory_parse()` chokes on the data
|
||||||
|
that `request_firmware()` now successfully returns. The original bug masked this
|
||||||
|
because the read always failed first.
|
||||||
|
|
||||||
|
**Hypotheses**: null-termination assumption mismatch (`request_firmware` doesn't
|
||||||
|
null-terminate), `FACTORY_MEMBER_NUM=30/31` count discrepancy, kmalloc not
|
||||||
|
zero-initialized, parser strict on trailing `%%\n` delimiter.
|
||||||
|
|
||||||
|
**Status**: investigation pending (task c5). Driver falls back to defaults; WiFi
|
||||||
|
functional but TX power is uncalibrated (all channels at 0x1400).
|
||||||
|
|
||||||
|
## Bug #2 — PM low-power handshake timeout (recurring)
|
||||||
|
|
||||||
|
**File**: `bes_pwr.c:470-558` — `bes2600_pwr_enter_lp_mode()`. Error at line 538.
|
||||||
|
|
||||||
|
**Symptom**:
|
||||||
|
```
|
||||||
|
bes2600_wlan mmc2:0001:1: bes2600_pwr_enter_lp_mode, wait pm ind timeout
|
||||||
|
```
|
||||||
|
|
||||||
|
Fires every 5–10s in steady state when associated. Floods dmesg, likely
|
||||||
|
correlates with bug #3 (SDIO TX stack splat) and bad battery life.
|
||||||
|
|
||||||
|
**Root cause**: `wait_for_completion_timeout(&pm_enter_cmpl, 5*HZ)` waits
|
||||||
|
for firmware to acknowledge a PM mode change; firmware never sends ACK.
|
||||||
|
Driver proceeds to `bes2600_pwr_device_enter_lp_mode()` regardless.
|
||||||
|
|
||||||
|
**Mobian == danctnix**: identical bes_pwr.c (1447 lines, 0-hunk diff). No
|
||||||
|
upstream fix exists; we'd invent it (gate device-LP entry on completion +
|
||||||
|
add retry).
|
||||||
|
|
||||||
|
**Status**: task c2.
|
||||||
|
|
||||||
|
## Bug #3 — SDIO TX scatter-gather panic / WARN
|
||||||
|
|
||||||
|
**File**: `bes2600_sdio.c:952-1200` — `bes_sdio_memcpy_to_io_helper`,
|
||||||
|
`sdio_tx_work`.
|
||||||
|
|
||||||
|
**Symptom**:
|
||||||
|
```
|
||||||
|
[RX] Receive failure: 4.
|
||||||
|
bes_sdio_memcpy_to_io_helper+0x18c/0x288 [bes2600]
|
||||||
|
sdio_tx_work+0x2b4/0x4a0 [bes2600]
|
||||||
|
Workqueue: bes_sdio sdio_tx_work [bes2600]
|
||||||
|
```
|
||||||
|
|
||||||
|
Recurring under TX load. Can wedge the chip irrecoverably (per Pine64 wiki:
|
||||||
|
"Power/reset circuitry not properly implemented; hard reset impossible
|
||||||
|
without board power-cycle").
|
||||||
|
|
||||||
|
**Status**: task c3 (indirectly, via bes_chardev removal which currently
|
||||||
|
gates the signal/nosignal mode switch path).
|
||||||
|
|
||||||
|
## Bug #4 — scan_complete_cb constant loop
|
||||||
|
|
||||||
|
**File**: `scan.c:883-909` — `bes2600_scan_complete_cb()`.
|
||||||
|
|
||||||
|
**Symptom**:
|
||||||
|
```
|
||||||
|
ieee80211 phy0: bes2600_scan_complete_cb status: 0
|
||||||
|
```
|
||||||
|
|
||||||
|
Fires every 2–10s (status=0 = success, but the FREQUENCY suggests background
|
||||||
|
scanning runs continuously when associated + idle).
|
||||||
|
|
||||||
|
Most likely a NetworkManager scheduling artifact, not a driver bug. Low
|
||||||
|
priority; suppress the wiphy_dbg print or skip scan-on-assoc'd if it
|
||||||
|
matters.
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
# BES2600 driver source map
|
||||||
|
|
||||||
|
Inventory of every public driver source variant we found (2026-04-21), their relationships, and where each fits in the patch workflow.
|
||||||
|
|
||||||
|
## The trees
|
||||||
|
|
||||||
|
### TuxThePenguin0 — pre-removal Android-provenance snapshot
|
||||||
|
- **URL**: `gitlab.com/TuxThePenguin0/bes2600`
|
||||||
|
- **Files**: 53, flat layout (no subdir)
|
||||||
|
- **HEAD**: `5316ef0 Merge branch 'master' into 'master'` (2023-07-14)
|
||||||
|
- **Provenance markers** (Android-only files):
|
||||||
|
- `bes2600_cfgvendor.c/.h` — Android nl80211 vendor-cmd HAL interface
|
||||||
|
- `bes2600_driver_mode.h` — Android normal/factory/cali mode switch
|
||||||
|
- `bes2600_log.c/.h` — Android-style ALOGx logger
|
||||||
|
- **Use**: reference for "what was originally shipped before community cleanup"
|
||||||
|
|
||||||
|
### arjan-vlek — historical home (sources removed)
|
||||||
|
- **URL**: `gitlab.com/arjanvlek/bes2600`
|
||||||
|
- **master tip**: `3230fbd Simplify README.md` (2024-10) — README only
|
||||||
|
- Sources removed in `e5055a3 "Removed sources from main branch"` (2024-10)
|
||||||
|
- Pre-removal tip: `a184728 Merge branch 'checkpatch-fixes' into 'master'` (same SHA as TuxThePenguin0's history point)
|
||||||
|
|
||||||
|
### Mobian DKMS — active maintained, primary PR target
|
||||||
|
- **URL upstream**: `salsa.debian.org/Mobian-team/devices/bes2600-dkms`
|
||||||
|
- **Our fork**: `git.reauktion.de/marfrit/bes2600-dkms`
|
||||||
|
- **Default branch**: `mobian`
|
||||||
|
- **Files**: 61 (Debian packaging layout: `Makefile.dkms` at root + `bes2600/*` source + `debian/`)
|
||||||
|
- **HEAD**: `fe73571 d/control: Fix packagename of fw dependency` (2025-12)
|
||||||
|
- Adds `Kconfig`, `Makefile`, `bes_pwr.c`, `itp.c`, `bes_log.h`, `bes_nl80211_testmode_msg.h` over TuxThePenguin0
|
||||||
|
- Drops Android-provenance files (cfgvendor, driver_mode, ALOG-style logger)
|
||||||
|
- **PR mechanism**: salsa.debian.org merge requests
|
||||||
|
|
||||||
|
### danctnix in-kernel
|
||||||
|
- **URL**: `codeberg.org/DanctNIX/linux-pinetab2`
|
||||||
|
- **Tag**: `v6.19.10-danctnix1` matches the running kernel on ohm
|
||||||
|
- **Path**: `drivers/staging/bes2600/` (54 files)
|
||||||
|
- Adds `bes2600_btuart.c` (Dang Huynh, 2025) + `h4_recv.h` (Intel mainline copy) + `wifi_testmode_cmd.c`
|
||||||
|
- Same factory.c / bes_pwr.c / bes2600_sdio.c content as Mobian (verified 0-hunk diffs)
|
||||||
|
- **Use**: build target for in-kernel deployment via `/lib/modules/<ver>/extra/`
|
||||||
|
|
||||||
|
### CW1200 mainline — ancestor
|
||||||
|
- **URL**: `github.com/torvalds/linux/tree/master/drivers/net/wireless/st/cw1200`
|
||||||
|
- 27 files, mainline-quality staging-cleaned
|
||||||
|
- Same author (Dmitry Tarnyagin / ST-Ericsson)
|
||||||
|
- Reference for upstream patterns; some BES2600 bugs may already be fixed in CW1200
|
||||||
|
|
||||||
|
### OpenHarmony device_soc_bestechnic — Chinese-ecosystem reference
|
||||||
|
- **URL**: `gitee.com/openharmony/device_soc_bestechnic`
|
||||||
|
- Apache-2.0 (CANNOT direct-copy to GPL kernel)
|
||||||
|
- LiteOS-M + HDF framework, not Linux driver
|
||||||
|
- **Use**: register-level reference, firmware interaction protocol docs
|
||||||
|
|
||||||
|
### Firmware mirrors (binary blobs only)
|
||||||
|
- `github.com/Herrie82/bes2600-firmware` — 2 blobs (boot + sdio main), v0.3.5_2023.0209
|
||||||
|
- `gitlab.com/pine64-org/bes2600-firmware` — same blobs
|
||||||
|
- **On ohm**: 5 files at `/lib/firmware/bes2600/` (adds `btrf` + `nosignal` variants + `bes2600_factory.txt`)
|
||||||
|
|
||||||
|
## Filename-level set diff
|
||||||
|
|
||||||
|
43 driver C/H files common across TuxThePenguin0 + Mobian + danctnix
|
||||||
|
(the CW1200-descended shared core).
|
||||||
|
|
||||||
|
| File | Status |
|
||||||
|
|------|--------|
|
||||||
|
| `bes2600_cfgvendor.c/.h` | TuxThePenguin0 only (Android HAL) |
|
||||||
|
| `bes2600_driver_mode.h` | TuxThePenguin0 only |
|
||||||
|
| `bes2600_log.c/.h` | TuxThePenguin0 (renamed → `bes_log.h` in Mobian + danctnix) |
|
||||||
|
| `dkms.conf`, `Kconfig` | Mobian only |
|
||||||
|
| `bes2600_btuart.c`, `h4_recv.h` | danctnix only (BT integrated in same dir) |
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
| Goal | Tree | Branch | PR via |
|
||||||
|
|------|------|--------|--------|
|
||||||
|
| Per-patch dev | `marfrit/bes2600-dkms` | `bes2600/<name>` | salsa MR to upstream Mobian |
|
||||||
|
| Live test on ohm | `~/bes2600-build/` (tar from danctnix tree, builds against `linux-pinetab2-headers`) | none | install to `/lib/modules/<ver>/extra/` |
|
||||||
|
| Eventual mainline | (rewrite as drivers/staging/bes2600/) | `staging-bes2600` | linux-wireless mailing list RFC |
|
||||||
@@ -0,0 +1,144 @@
|
|||||||
|
From 1a5d54a3213041262caf1605bb19c66ddded41f7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Markus Fritsche <fritsche.markus@gmail.com>
|
||||||
|
Date: Wed, 22 Apr 2026 10:09:44 +0200
|
||||||
|
Subject: [PATCH] bes2600: use request_firmware() for factory.txt read
|
||||||
|
|
||||||
|
The BES2600 factory calibration file (bes2600_factory.txt) was being read
|
||||||
|
via filp_open() + kernel_read() from a hard-coded absolute path baked in
|
||||||
|
at compile time via the FACTORY_PATH Makefile macro
|
||||||
|
(default: /lib/firmware/bes2600_factory.txt).
|
||||||
|
|
||||||
|
This had several problems:
|
||||||
|
|
||||||
|
1. Path mismatch - linux-firmware-style packaging (and danctnix 0.2-5
|
||||||
|
device-pine64-pinetab2) ships the file at
|
||||||
|
/lib/firmware/bes2600/bes2600_factory.txt, not /lib/firmware/. The
|
||||||
|
driver logged '(NULL device *): read and check
|
||||||
|
/lib/firmware/bes2600_factory.txt error' on every boot on PineTab2
|
||||||
|
running linux-pinetab2 6.19.10-danctnix1-1.
|
||||||
|
|
||||||
|
2. Direct filesystem access via filp_open() / kernel_read() from a driver
|
||||||
|
is an anti-pattern that upstream rejects: drivers should use
|
||||||
|
request_firmware() to get binary data from userspace-managed firmware
|
||||||
|
directories. request_firmware() natively searches the firmware_class
|
||||||
|
path list (typically /lib/firmware + derivatives), associates the load
|
||||||
|
with a uevent, and respects the firmware-loading infrastructure.
|
||||||
|
|
||||||
|
3. The (NULL device *) prefix in error messages indicated the absence of
|
||||||
|
proper device-context logging. While this patch does not yet thread
|
||||||
|
struct device through, the upstream path uses request_firmware() which
|
||||||
|
works with dev=NULL and is the building block for a follow-up patch
|
||||||
|
that adds per-chip device context.
|
||||||
|
|
||||||
|
Repoint the FACTORY_PATH default to the firmware-class name
|
||||||
|
(bes2600/bes2600_factory.txt) - request_firmware() prepends
|
||||||
|
/lib/firmware/ from the configured search paths. The macro remains
|
||||||
|
overridable at build time for non-standard deployments.
|
||||||
|
|
||||||
|
Rewrite factory_section_read_file() to:
|
||||||
|
* Call request_firmware(&fw, path, NULL).
|
||||||
|
* Size-check fw->size against FACTORY_MAX_SIZE.
|
||||||
|
* memcpy the data into the caller's buffer.
|
||||||
|
* Always call release_firmware() on exit.
|
||||||
|
|
||||||
|
The file write path (factory_section_write_file + kernel_write) is left
|
||||||
|
unchanged in this patch; it is the subject of a follow-up patch that
|
||||||
|
removes kernel_write and moves any remaining userspace-visible factory
|
||||||
|
configuration to a standard kernel-userspace boundary (debugfs or
|
||||||
|
nl80211 testmode).
|
||||||
|
|
||||||
|
No caller signature changes. No Makefile flag drops. Bisectable.
|
||||||
|
|
||||||
|
Tested-on: PineTab2 (BES2600WM + RK3566) running linux-pinetab2
|
||||||
|
6.19.10-danctnix1-1, deployed via /lib/modules/<ver>/extra/. Verified
|
||||||
|
post-reboot: original 'read and check /lib/firmware/bes2600_factory.txt
|
||||||
|
error' is gone; request_firmware reads the file successfully (a separate
|
||||||
|
factory_parse() bug, previously masked by the read failure, is now
|
||||||
|
exposed and tracked separately).
|
||||||
|
|
||||||
|
Signed-off-by: Markus Fritsche <fritsche.markus@gmail.com>
|
||||||
|
---
|
||||||
|
bes2600/Makefile | 2 +-
|
||||||
|
bes2600/bes2600_factory.c | 33 ++++++++++++++-------------------
|
||||||
|
2 files changed, 15 insertions(+), 20 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/bes2600/Makefile b/bes2600/Makefile
|
||||||
|
index 300912b..788aee2 100644
|
||||||
|
--- a/bes2600/Makefile
|
||||||
|
+++ b/bes2600/Makefile
|
||||||
|
@@ -66,7 +66,7 @@ BES2600_DRV_VERSION := bes2600_0.3.5_2024.0116
|
||||||
|
ifeq ($(CONFIG_BES2600_CALIB_FROM_LINUX),y)
|
||||||
|
FACTORY_CRC_CHECK ?= n
|
||||||
|
STANDARD_FACTORY_EFUSE_FLAG ?= y
|
||||||
|
-FACTORY_PATH ?= /lib/firmware/bes2600_factory.txt
|
||||||
|
+FACTORY_PATH ?= bes2600/bes2600_factory.txt
|
||||||
|
endif
|
||||||
|
|
||||||
|
# basic function
|
||||||
|
diff --git a/bes2600/bes2600_factory.c b/bes2600/bes2600_factory.c
|
||||||
|
index dc5d3da..8d60b7c 100644
|
||||||
|
--- a/bes2600/bes2600_factory.c
|
||||||
|
+++ b/bes2600/bes2600_factory.c
|
||||||
|
@@ -12,6 +12,7 @@
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
+#include <linux/firmware.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/mutex.h>
|
||||||
|
#include <linux/crc32.h>
|
||||||
|
@@ -137,38 +138,32 @@ static int bes2600_factory_crc_check(struct factory_t *factory_data)
|
||||||
|
*/
|
||||||
|
static int factory_section_read_file(char *path, void *buffer)
|
||||||
|
{
|
||||||
|
- int ret = 0;
|
||||||
|
- struct file *fp;
|
||||||
|
+ const struct firmware *fw;
|
||||||
|
+ int ret;
|
||||||
|
|
||||||
|
if (!path || !buffer) {
|
||||||
|
bes_err("%s NULL pointer err\n", __func__);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- bes_devel("reading %s \n", path);
|
||||||
|
+ bes_devel("requesting firmware-class %s\n", path);
|
||||||
|
|
||||||
|
- fp = filp_open(path, O_RDONLY, 0); //S_IRUSR
|
||||||
|
- if (IS_ERR(fp)) {
|
||||||
|
- bes_devel("BES2600 : can't open %s\n",path);
|
||||||
|
+ ret = request_firmware(&fw, path, NULL);
|
||||||
|
+ if (ret) {
|
||||||
|
+ bes_devel("BES2600: request_firmware(%s) failed: %d\n", path, ret);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (fp->f_inode->i_size <= 0 || fp->f_inode->i_size > FACTORY_MAX_SIZE) {
|
||||||
|
- bes_err( "bes2600_factory.txt size check failed, read_size: %lld max_size: %d\n",
|
||||||
|
- fp->f_inode->i_size, FACTORY_MAX_SIZE);
|
||||||
|
- filp_close(fp, NULL);
|
||||||
|
+ if (fw->size == 0 || fw->size > FACTORY_MAX_SIZE) {
|
||||||
|
+ bes_err("bes2600_factory.txt size check failed, read_size: %zu max_size: %d\n",
|
||||||
|
+ fw->size, FACTORY_MAX_SIZE);
|
||||||
|
+ release_firmware(fw);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- ret = kernel_read(fp, buffer, fp->f_inode->i_size, &fp->f_pos);
|
||||||
|
-
|
||||||
|
- filp_close(fp, NULL);
|
||||||
|
-
|
||||||
|
- if (ret != fp->f_inode->i_size) {
|
||||||
|
- bes_err("bes2600_factory.txt read fail\n");
|
||||||
|
- ret = -1;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
+ memcpy(buffer, fw->data, fw->size);
|
||||||
|
+ ret = (int)fw->size;
|
||||||
|
+ release_firmware(fw);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.53.0
|
||||||
|
|
||||||
Executable
+27
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Snapshot kernel + modules + bes2600 firmware from ohm into ~/backup/.
|
||||||
|
#
|
||||||
|
# Per feedback_backup_before_replace.md: always backup before replacing
|
||||||
|
# kernel/modules/configs, with versioned labels.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
TS=$(date +%Y%m%d-%H%M%S)
|
||||||
|
KVER=$(uname -r)
|
||||||
|
DEST=/home/mfritsche/backup
|
||||||
|
mkdir -p ${DEST}
|
||||||
|
|
||||||
|
OUT=${DEST}/ohm-kernel-${KVER}-${TS}.tar.zst
|
||||||
|
|
||||||
|
echo "=== Sizes ==="
|
||||||
|
sudo du -sh /boot /lib/modules/${KVER} /lib/firmware/bes2600
|
||||||
|
|
||||||
|
echo "=== Tar ==="
|
||||||
|
sudo tar --use-compress-program='zstd -3' \
|
||||||
|
-cf "${OUT}" \
|
||||||
|
-C / boot lib/modules/${KVER} lib/firmware/bes2600
|
||||||
|
sudo chown $(id -un):$(id -gn) "${OUT}"
|
||||||
|
|
||||||
|
echo "=== Result ==="
|
||||||
|
ls -lah "${OUT}"
|
||||||
|
zstd -t "${OUT}" 2>&1 | tail -1
|
||||||
Executable
+28
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Native aarch64 build of bes2600 driver on ohm.
|
||||||
|
#
|
||||||
|
# Requires linux-pinetab2-headers package installed:
|
||||||
|
# sudo pacman -S --noconfirm linux-pinetab2-headers
|
||||||
|
#
|
||||||
|
# Source tree expected at /home/mfritsche/bes2600-build/ — populate via:
|
||||||
|
# tar -C ~/src/besser/linux-pinetab2/drivers/staging/bes2600 -cf - . | \
|
||||||
|
# ssh mfritsche@ohm.vpn 'mkdir -p ~/bes2600-build && tar -C ~/bes2600-build -xf -'
|
||||||
|
#
|
||||||
|
# (Mobian DKMS layout works too if you point at the bes2600/ subdir.)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd /home/mfritsche/bes2600-build || { echo "no source tree at /home/mfritsche/bes2600-build"; exit 1; }
|
||||||
|
[ -f Makefile ] || { echo "no Makefile in source tree"; exit 1; }
|
||||||
|
|
||||||
|
# Clean stale root-owned files (in case sudo-make left some)
|
||||||
|
sudo -n chown -R mfritsche:mfritsche . 2>/dev/null || true
|
||||||
|
make clean
|
||||||
|
|
||||||
|
# Native parallel build (4 cores on ohm)
|
||||||
|
make -j4
|
||||||
|
|
||||||
|
# Strip to manageable size + report
|
||||||
|
strip --strip-debug bes2600.ko -o bes2600.stripped.ko
|
||||||
|
ls -lh *.ko
|
||||||
|
modinfo bes2600.stripped.ko | grep -E 'srcversion|vermagic'
|
||||||
Executable
+40
@@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Deploy a built bes2600 module to /lib/modules/<ver>/extra/ on ohm.
|
||||||
|
#
|
||||||
|
# This is the SAFE deploy path: no live module reload (which can wedge
|
||||||
|
# the chip per Pine64 known issues), just persistent install + reboot.
|
||||||
|
#
|
||||||
|
# Run on ohm. Modules expected built at /home/mfritsche/bes2600-build/.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
KVER=$(uname -r)
|
||||||
|
EXTRA=/lib/modules/${KVER}/extra
|
||||||
|
STAGING=/lib/modules/${KVER}/kernel/drivers/staging/bes2600
|
||||||
|
|
||||||
|
cd /home/mfritsche/bes2600-build
|
||||||
|
[ -f bes2600.stripped.ko ] || [ -f bes2600.ko ] || { echo "no bes2600.ko built"; exit 1; }
|
||||||
|
|
||||||
|
NEW=$( [ -f bes2600.stripped.ko ] && echo bes2600.stripped.ko || echo bes2600.ko )
|
||||||
|
|
||||||
|
echo "=== Backup originals (idempotent) ==="
|
||||||
|
sudo cp -np ${STAGING}/bes2600.ko.zst ${STAGING}/bes2600.ko.zst.pre-deploy.bak 2>&1 || true
|
||||||
|
sudo cp -np ${STAGING}/bes2600_btuart.ko.zst ${STAGING}/bes2600_btuart.ko.zst.pre-deploy.bak 2>&1 || true
|
||||||
|
ls -la ${STAGING}/
|
||||||
|
|
||||||
|
echo "=== Install patched modules to /extra/ ==="
|
||||||
|
sudo install -D -m644 ${NEW} ${EXTRA}/bes2600.ko
|
||||||
|
[ -f bes2600_btuart.ko ] && sudo install -D -m644 bes2600_btuart.ko ${EXTRA}/bes2600_btuart.ko
|
||||||
|
sudo depmod -a
|
||||||
|
ls -la ${EXTRA}/
|
||||||
|
|
||||||
|
echo "=== Verify modprobe will pick our build ==="
|
||||||
|
modinfo bes2600 | grep -E 'filename|srcversion'
|
||||||
|
modinfo bes2600_btuart | grep -E 'filename|srcversion'
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Deploy complete. Reboot to load the new module:"
|
||||||
|
echo " sudo reboot"
|
||||||
|
echo
|
||||||
|
echo "Rollback if anything breaks:"
|
||||||
|
echo " sudo rm ${EXTRA}/bes2600*.ko && sudo depmod -a && sudo reboot"
|
||||||
Reference in New Issue
Block a user