Files
besser/patches/staging-prep-series-danctnix/0000-cover-letter.patch
T
test0r 427bae5ebb patches: replace non-ASCII punctuation with ASCII equivalents
Em-dashes (U+2014), en-dashes (U+2013), and arrow glyphs (U+2192,
U+2194) leaked into commit messages and the cover letter. Linux
kernel patches are expected to be plain ASCII. Substitute:
  --  for em-dash
  -   for en-dash
  -> for rightward arrow
  <-> for left-right arrow

Applied to both staging-prep-series/ (Mobian paths) and
staging-prep-series-danctnix/ (drivers/staging/bes2600/ paths).
checkpatch.pl --no-tree --strict: 0/0/0 on all 12 patches.
2026-04-22 17:15:28 +02:00

136 lines
6.5 KiB
Diff

From f1d22ab0000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Markus Fritsche <fritsche.markus@gmail.com>
Date: Wed, 22 Apr 2026 14:27:00 +0200
Subject: [PATCH 0/6] bes2600: staging-prep cleanup for PineTab2 (BES2600WM)
This is the danctnix-layout variant of the bes2600 staging-prep series.
All six patches target `drivers/staging/bes2600/` in
`codeberg.org/DanctNIX/linux-pinetab2` at tag `v6.19.10-danctnix1`. Apply
cleanly, `checkpatch.pl --no-tree --strict` clean.
The Mobian `bes2600-dkms` variant of this series (same content, paths
rooted at `bes2600/` rather than `drivers/staging/bes2600/`) lives at
`git.reauktion.de/marfrit/bes2600-dkms` branch
`bes2600/staging-prep-series`. If you maintain both trees, you may
prefer to apply there and propagate to the danctnix in-tree copy.
## Background
The BES2600 Linux driver descends from the ST-Ericsson CW1200 driver in
mainline (`drivers/net/wireless/st/cw1200/`). Same author -- Dmitry
Tarnyagin; shared WSM host<->firmware protocol plumbing; shared SDIO bus
backend. Kconfig ancestry markers survive: `CONFIG_BES2600_USE_STE_EXTENSIONS`
(STE = ST-Ericsson), `CONFIG_BES2600_WSM_DEBUG` (WSM). ST-Ericsson was
wound down in 2013; Bestechnic (founded 2015) appears to have inherited
or licensed the CW1200 IP. No linux-wireless RFC has ever linked the two
chips.
The series fixes observable defects on a PineTab2 running the danctnix
kernel 6.19.10-danctnix1-1 and removes two upstream blockers. Each
patch is independently testable and bisectable; the order below
preserves dependencies.
## What the series does
* 1/6 -- Replace `filp_open()` + `kernel_read()` in the factory-
calibration read path with `request_firmware()`. Repoint the
FACTORY_PATH macro to the firmware-class name
(`bes2600/bes2600_factory.txt`). Kills a kernel-mainline anti-pattern
and the `(NULL device *): read and check /lib/firmware/bes2600_factory.txt
error` boot spam.
* 2/6 -- Default `STANDARD_FACTORY_EFUSE_FLAG` from y to n. The shipped
`bes2600_factory.txt` on PineTab2 contains 30 calibration fields; the
driver was expecting 31 (including a `##select_efuse_flag` section
absent from this firmware). Also unguards the
`wsm_save_factory_txt_to_mcu()` prototype in `wsm.h` which was
inconsistently wrapped in `#if defined(STANDARD_FACTORY_EFUSE_FLAG)`
while its definition in `wsm.c` and its call site in `sta.c` were
ungated.
* 3/6 -- Thread `struct device *` through `factory_section_read_file()`
via a module-local setter invoked at SDIO probe. `request_firmware()`
now receives a real device pointer; `(NULL device *):` no longer
prefixes factory-related diagnostics.
* 4/6 -- Gate the device-end of the low-power transition on successful
per-VIF firmware handshake. Pre-patch: `bes2600_pwr_enter_lp_mode()`
called `bes2600_pwr_device_enter_lp_mode()` unconditionally even when
`wait_for_completion_timeout()` returned 0. On PineTab2 this recurred
every 5-10 s in idle-associated state, flooded dmesg, and cascaded
into `sdio_tx_work` WARN splats. Post-patch: `-ETIMEDOUT` returned
cleanly, dmesg silent, SDIO stable.
* 5/6 -- Remove the custom `/dev/bes2600` character-device interface.
`file_operations`, open/read/write/release, `bes2600_op_*` command-
dispatch table, `bes2600_load_uevent`, cdev registration in the init
path -- 519 lines deleted. In-kernel accessors (`is_signal_mode`,
`get_fw_type`, etc., 13 call sites) and the `fw_type` module
parameter are preserved.
* 6/6 -- Flip `CONFIG_BES2600_TESTMODE` default from n to y. Also fixes
accumulated bit-rot revealed by enabling the flag: shim macros in
`bes_log.h` for the legacy `bes2600_info/err/warn/dbg/err_with_cond`
family, `BES2600_DBG_*` constants defined as 0, 3 TSM/roam-delay
helpers marked `static`.
## Testing
Reference hardware: Pine64 PineTab2 (BES2600WM + Rockchip RK3566,
MAC `8a:2e:77:1f:ec:05`). Host kernel: linux-pinetab2
6.19.10-danctnix1-1 with `CONFIG_NL80211_TESTMODE=y`. Full stack
applied, verified over 3+ reboots: WiFi associates and passes traffic
on both 2.4 GHz (newton / ch11) and 5 GHz (TelekomHotspot@ERGO / ch36).
Per-patch outcomes in post-reboot dmesg:
- 1/6: `read and check /lib/firmware/bes2600_factory.txt error` -- gone
- 2/6: `bes2600_factory.txt parse fail` / `factory cali data get failed.` -- gone
- 3/6: `(NULL device *):` prefix on factory lines -- gone
- 4/6: `wait pm ind timeout` (pre-patch 20-30 msgs / 5 min) -- 0 per 5 min;
`sdio_tx_work` WARN splat (pre-patch 2+ / 5 min) -- 0 per 5 min;
`[RX] Receive failure: 4.` -- gone
- 5/6: `/dev/bes2600` -- absent; driver continues to associate
- 6/6: `iw phy0` lists `testmode` under *Supported commands*
## Known limitations / out of scope
- `factory_section_write_file()` still uses `kernel_write()` + `filp_open()`
for calibration persistence. Conversion to debugfs/nl80211 is a
follow-up.
- `bes_chardev.c` still contains DPD-to-file read/write paths (gated by
`BES2600_WRITE_DPD_TO_FILE`, off by default -- dead code in default
builds). Same treatment needed.
- `bes_fw.c:587` unconditionally creates
`/lib/firmware/bes2002_fw_write.bin` via `filp_open()` for debug
observation. Must go before a future drivers/net/wireless/st/
promotion.
- `bes_cdev` singleton still holds `sig_mode`/`fw_type`. Migrating
fw_type from module_param to per-phy debugfs knob or nl80211 testmode
is the next architectural step.
- Residual benign dmesg: `bes2600_wlan mmc2:0001:1: PS Mode Error,
Reason:1` at T+40 s on fresh boot. Distinct from the pre-4/6 timeout
cascade; driver recovers, WiFi stays up.
Markus Fritsche (6):
bes2600: use request_firmware() for factory.txt read
bes2600: default STANDARD_FACTORY_EFUSE_FLAG off for PineTab2 factory.txt format
bes2600: thread struct device * through factory request_firmware() call
bes2600: gate device LP-mode entry on successful per-VIF firmware handshake
bes2600: remove userspace /dev/bes2600 character device interface
bes2600: enable CONFIG_BES2600_TESTMODE by default + fix bit-rotted testmode plumbing
drivers/staging/bes2600/Makefile | 6 +-
drivers/staging/bes2600/bes2600_factory.c | 45 +--
drivers/staging/bes2600/bes2600_factory.h | 3 +
drivers/staging/bes2600/bes2600_sdio.c | 4 +
drivers/staging/bes2600/bes_chardev.c | 519 --------------------------------
drivers/staging/bes2600/bes_log.h | 23 ++
drivers/staging/bes2600/bes_pwr.c | 20 +-
drivers/staging/bes2600/sta.c | 6 +-
drivers/staging/bes2600/wsm.h | 2 -
9 files changed, 79 insertions(+), 549 deletions(-)
--
2.53.0