2143360c25
patches/ now mirrors the topic-branch structure on
marfrit/bes2600-dkms:
factory-series/ = bes2600/factory-no-efuse-flag (c1 + c5 stacked)
0001-*-request_firmware-*.patch = c1 (request_firmware() read path)
0002-*-STANDARD_FACTORY_EFUSE_FLAG-*.patch = c5 (default flag off)
pm-gate-on-handshake/ = bes2600/pm-gate-on-handshake (c2 standalone off mobian)
0001-*-gate-device-LP-mode-entry-*.patch = c2 (gate + ETIMEDOUT)
c1 + c5 are stacked because c5's fix depends on c1's rewrite of
factory_section_read_file() having been applied first (otherwise the
parse-fail error is masked).
c2 is standalone because bes_pwr.c is orthogonal to the factory/
request_firmware work; it can be submitted independently.
All three patches verified on PineTab2 (BES2600WM + RK3566) running
linux-pinetab2 6.19.10-danctnix1-1. Bug #1 (factory.txt read path),
bug #1.5 (parse fail), bug #2 (PM handshake timeout spam) all resolved
by this series. Bug #3 (SDIO TX WARN) is reduced to a single boot-time
event that does not cascade.
Signed-off-by: Markus Fritsche <fritsche.markus@gmail.com>
84 lines
3.3 KiB
Diff
84 lines
3.3 KiB
Diff
From 82ba594a444a855310fbbe2a5c8ff02f211d8e83 Mon Sep 17 00:00:00 2001
|
|
From: Markus Fritsche <fritsche.markus@gmail.com>
|
|
Date: Wed, 22 Apr 2026 12:17:56 +0200
|
|
Subject: [PATCH 2/2] bes2600: default STANDARD_FACTORY_EFUSE_FLAG off for
|
|
PineTab2 factory.txt format
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The shipped factory calibration file bes2600_factory.txt on PineTab2
|
|
(danctnix linux-firmware 0.3.5_2023.0209) contains 30 calibration
|
|
fields: head (3), iq/xtal (3), 2.4G power 11n (5), 5G power 11n (15),
|
|
bt (4). The file terminates with '%%\n' directly after edr_power.
|
|
|
|
When STANDARD_FACTORY_EFUSE_FLAG is defined at compile time the driver
|
|
assembles STANDARD_FACTORY with an extra select_efuse_flag section
|
|
appended and expects 31 sscanf matches (FACTORY_MEMBER_NUM=31):
|
|
|
|
__STANDARD_FACTORY + \"##select_efuse_flag\\nselect_efuse:%hx\\n\"
|
|
+ \"%%%%\\n\"
|
|
|
|
The PineTab2 factory.txt has no select_efuse_flag section, so sscanf
|
|
stops after field 30 and factory_parse() returns -1 with:
|
|
|
|
bes2600_factory.txt parse fail
|
|
read and check bes2600/bes2600_factory.txt error
|
|
factory cali data get failed.
|
|
|
|
This was latent until the preceding patch (use request_firmware() for
|
|
factory.txt read) fixed the path bug that masked the parse failure.
|
|
|
|
Default STANDARD_FACTORY_EFUSE_FLAG to n. The flag remains overridable
|
|
at build time (make STANDARD_FACTORY_EFUSE_FLAG=y ...) for chips /
|
|
firmware packages that do ship the select_efuse_flag section.
|
|
|
|
Also: the wsm_save_factory_txt_to_mcu() prototype in wsm.h was
|
|
inconsistently wrapped in a conditional that keyed on
|
|
STANDARD_FACTORY_EFUSE_FLAG, but the function definition in wsm.c and
|
|
the call site in sta.c are ungated. With the flag now defaulting to
|
|
n, the gcc -Werror=missing-prototypes flag breaks the build. Drop the
|
|
conditional wrapper around the prototype — the function exists and is
|
|
used regardless of the factory-parse flag.
|
|
|
|
Tested-on: PineTab2 (BES2600WM + RK3566) running linux-pinetab2
|
|
6.19.10-danctnix1-1. With the flag defaulted off, factory_parse()
|
|
succeeds on the shipped factory.txt, factory_cali_data is populated,
|
|
and dmesg no longer shows the parse-fail / read-and-check-error /
|
|
factory-cali-data-get-failed sequence.
|
|
|
|
Signed-off-by: Markus Fritsche <fritsche.markus@gmail.com>
|
|
---
|
|
bes2600/Makefile | 2 +-
|
|
bes2600/wsm.h | 2 --
|
|
2 files changed, 1 insertion(+), 3 deletions(-)
|
|
|
|
diff --git a/bes2600/Makefile b/bes2600/Makefile
|
|
index 788aee2..2dcba09 100644
|
|
--- a/bes2600/Makefile
|
|
+++ b/bes2600/Makefile
|
|
@@ -65,7 +65,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
|
|
+STANDARD_FACTORY_EFUSE_FLAG ?= n
|
|
FACTORY_PATH ?= bes2600/bes2600_factory.txt
|
|
endif
|
|
|
|
diff --git a/bes2600/wsm.h b/bes2600/wsm.h
|
|
index 0673131..22845ac 100644
|
|
--- a/bes2600/wsm.h
|
|
+++ b/bes2600/wsm.h
|
|
@@ -2236,7 +2236,5 @@ int wsm_cpu_usage_cmd(struct bes2600_common *hw_priv);
|
|
|
|
int wsm_wifi_status_cmd(struct bes2600_common *hw_priv, uint32_t status);
|
|
|
|
-#if defined(STANDARD_FACTORY_EFUSE_FLAG)
|
|
int wsm_save_factory_txt_to_mcu(struct bes2600_common *hw_priv, const u8 *data, int if_id, enum bes2600_rf_cmd_type cmd_type);
|
|
-#endif
|
|
#endif /* BES2600_HWIO_H_INCLUDED */
|
|
--
|
|
2.53.0
|
|
|