91617fae14
Closes the migration started in #8. The 6 active ampere patches (pwm15, pwm-fan, RK806 power-controller, speaker, USB-C PD, lid switch) landed in #8 under soc/rockchip/rk3588/, module/coolpi-cm5/, and board/coolpi-cm5-genbook/. This commit migrates the remaining 3: * `0006 arm64 Kconfig: do not select HAVE_GCC_PLUGINS` → patches/arch/arm64/. NOT for upstream — local build workaround; README explains the proper fix is gcc-plugin-devel install. * `0009 Bluetooth: btrtl: make RTL_SEC_PROJ read non-fatal` → patches/driver/bluetooth/btrtl/. Benefits ampere (RTL8852BE) and boltzmann (same M.2 family). Cross-host driver/ scope. * `0010 gpio/drm/mfd/input/dts: fix suspend/resume and wakeup on RK3588` → SPLIT into 5 scope-tagged sub-patches as the issue required ("0010 split into ≥2 patches by scope"): - patches/driver/gpio/rockchip/0010a-gpio-rockchip-propagate-irq_set_wake-to-parent-GIC.patch - patches/driver/gpu/drm/bridge/analogix/0010b-drm-bridge-analogix-dp-disable-IRQ-before-clock-gating-in-suspend.patch - patches/driver/mfd/rk8xx/0010c-mfd-rk8xx-spi-add-PM-ops-and-shutdown-callback.patch - patches/driver/input/misc/0010d-input-rk805-pwrkey-register-wake-IRQ-via-dev_pm_set_wake_irq.patch - patches/board/coolpi-cm5-genbook/0010e-arm64-dts-rockchip-rk3588-coolpi-cm5-genbook-add-NPU-power-domain-and-touchpad-wakeup.patch The split is byte-identical to the original 0010 (verified on decompose-0010 branch in marfrit/linux-rk3588-marfrit — sha256 of the combined diff matches the monolithic 0010 commit). All 0010 sub-patches marked WIP in their README and explicitly NOT added to fleet/ampere.yaml includes — suspend/resume thread is still open and Markus hasn't decided the upstream-targeting shape. READMEs added at each new directory documenting per-patch context. Acceptance criteria from #1: [x] Each patch lives at narrowest correct scope [x] 0010 split into ≥2 patches by scope (5 sub-patches) [x] Per-host manifest for ampere references the right scopes + explicit includes (already #8) [ ] github.com/marfrit/misc_patches retained as historical mirror — Markus to decide [x] working-tree dirty state on boltzmann reconciled (decompose-0010 + ampere-minimal-devices branches captured) Generated-by: Claude Opus 4.7 <claude@reauktion.de>
50 lines
1.8 KiB
Diff
50 lines
1.8 KiB
Diff
From: Markus Fritsche <mfritsche@localhost>
|
|
Date: Tue, 24 Mar 2026 00:00:00 +0000
|
|
Subject: [PATCH] Bluetooth: btrtl: make RTL_SEC_PROJ read non-fatal
|
|
|
|
The RTL8852B (lmp_subver=0x8852, hci_rev=0x000b, HCI_USB) does not
|
|
support HCI vendor opcode 0xfc61 during early initialization.
|
|
btrtl_vendor_read_reg16() returns -ENODEV, which previously caused
|
|
btrtl_initialize() to abort with ERR_PTR(-19) and left the controller
|
|
unconfigured — visible as a kernel Oops and "No default controller
|
|
available" in bluetoothctl.
|
|
|
|
The RTL_SEC_PROJ register encodes a key_id used to match firmware
|
|
security-header sections. When key_id is 0 the driver already skips
|
|
all security headers (drivers/bluetooth/btrtl.c, case
|
|
RTL_PATCH_SECURITY_HEADER: "If key_id from chip is zero, ignore all
|
|
security headers"). Defaulting to key_id=0 on read failure is
|
|
therefore safe: unsigned firmware without an embedded key continues to
|
|
load normally, while secure-firmware paths that require a non-zero
|
|
key_id would only be taken on chips that successfully return one.
|
|
|
|
Change btrtl_initialize() so that a failed RTL_SEC_PROJ read emits an
|
|
informational message and falls back to key_id=0 instead of aborting
|
|
initialization.
|
|
|
|
Generated-by: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Signed-off-by: Markus Fritsche <mfritsche@localhost>
|
|
---
|
|
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/bluetooth/btrtl.c
|
|
+++ b/drivers/bluetooth/btrtl.c
|
|
@@ -1186,10 +1186,12 @@
|
|
}
|
|
|
|
rc = btrtl_vendor_read_reg16(hdev, RTL_SEC_PROJ, reg_val);
|
|
- if (rc < 0)
|
|
- goto err_free;
|
|
-
|
|
- key_id = reg_val[0];
|
|
+ if (rc < 0) {
|
|
+ rtl_dev_info(hdev, "RTL_SEC_PROJ read failed (%d), using key_id=0", rc);
|
|
+ key_id = 0;
|
|
+ } else {
|
|
+ key_id = reg_val[0];
|
|
+ }
|
|
btrtl_dev->key_id = key_id;
|
|
rtl_dev_info(hdev, "%s: key id %u", __func__, key_id);
|
|
|
|
|