Skip to content

[QUALIFICATION - DO NOT MERGE] SP11 7.2.5-v3 audio parity repair - #54

Closed
ooaklee wants to merge 2133 commits into
sp11/ubuntu-qcom-x1e-7.2.y-betafrom
x/qualification-7.2.5-audio-v3
Closed

ooaklee wants to merge 2133 commits into
sp11/ubuntu-qcom-x1e-7.2.y-betafrom
x/qualification-7.2.5-audio-v3

Conversation

@ooaklee

@ooaklee ooaklee commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Qualification only — do not merge or install unattended

This carries the guarded audio parity repairs for a new, isolated test of the
TX DMIC/Golden dependency group. It is not a full-feature integration PR or a
proven static fix.
V2 in #53 failed audio qualification with prolonged unwanted
speaker static; the known-good 7.2.0/v23 kernel remains the recovery reference.
Desktop mute is not established speaker isolation.

Exact source and scope

The eight commits after v2 contain six source repairs, one narrowly pinned CI
exception, and a changelog-only version allocation:

  1. Select the WSA codec's actual softclip register layout.
  2. Restore Denali VBAT/BCL producer stages, cache defaults, HD2 and gain-step policy.
  3. Restore the two protected configuration queries with correlated, bounded replies.
  4. Restore individual calibration replay after an unsupported aggregate response,
    validating framing first and retaining hard failures in per-topology state.
  5. Restore the missing-feedback gain/filter/mute/mixer tail after successful disables.
  6. Retain Denali macro/dcodec lifetime clock votes with explicit runtime-error cleanup;
    retain the existing PM-clock path for other devices.

Original TX/Golden history remains an ancestor. The new adaptations preserve
source links to the qualified integration and geocausa audio work; they do not
manufacture contributor sign-offs or resolve the existing Golden attestation gate.
The held camera repair, battery-provider and platform-profile topics remain
separate, not discarded from the final parity objective.

Software evidence and current build status

  • Exact composition audit and all 53 per-commit integration checks against the
    current beta pass. The CI exception permits only the sole mutable-defaults
    diagnostic for an exact patch ID and resulting source blob; ten positive
    and negative cases cover that rule. No blanket warning or hardware waiver.
  • Source-extracted calibration, query, producer, lifecycle and runtime-clock
    tests pass, including sanitizer-backed error cases. These mock transport,
    regmap or clock boundaries; they do not establish DSP, DAPM, PM or acoustic behavior.
  • Cold composition compilation and artifact inspection pass. The final PM
    increment also compiled; its wrapper exited 1 because an assertion overlooked
    regenerated kheaders.ko. Independent inspection passes, and a 6,963-header
    content comparison isolates the changed build hostname. The failure receipt
    is retained rather than reported as a successful wrapper run.
  • Both inspected outputs contain the expected 7,816-module set. All 38 changed
    AudioReach export CRCs were independently reproduced and traced to the added
    calibration-state fields. No export was added or removed by these repairs.
    A fresh ABI and matched rebuilt modules are mandatory.
  • Cold-build diagnostic comparison shows no new normalized warning relative
    to its control; existing whole-tree warnings remain. This is not warning-free.
  • The actual Debian make rules derive the v3 ABI with do_dtbs=true and
    do_stubble=false. No configuration or packaging-policy change accompanies
    the version bump. External per-ABI DTB support is expected.
  • The full v3 Debian package build completed successfully on 2026-09-29, using Lexr source
    b74247d08f7ccf90110a291c62c5fb56d895c55f (exactly v0.5.0-rc.5), normal
    clean-build policy and the same resolved toolchain inventory as v2.
  • Independent finished-package inspection passes for all five packages: source
    provenance and bytes, exact configuration, both Denali DTBs, all 7,816 modules,
    ABI/vermagic, image format and exact-ABI boot-support lifecycle hooks. Every
    packaged module passes the symbol-version check against the matching packaged
    headers; the checker rejects diagnostics even when depmod exits zero.
  • The packaged 32,012-row export tables retain the same symbol names and export
    metadata, with exactly the expected 38-symbol changed set. This comparison does
    not equate CRC values across the differently configured source-only builds or
    claim an independent type trace under the package compiler.
  • Native and relocated Lexr bundle inspection pass. Runtime-only selection
    correctly retains image, modules and boot support. The 73 warning lines
    match both package controls after exact version and temporary-container email
    normalization; existing warnings remain, with none directly naming a changed
    source file in this comparison. This is not a warning-free build.
  • No Surface copy, preflight, installation or hardware pass is claimed.
    OpenCode reviewed the source/packaging gates, not hardware. Local artifact
    acceptance is not evidence that the static regression is fixed.

Deliberate deviations and remaining gates

The calibration replay state is per-topology and serialized rather than a global
once flag; individual hard errors stop and remain latched. Legacy hard-error
diagnostic side effects remain excluded. Bypass bookkeeping, correlated replies,
clock failure cleanup and propagated regcache-sync errors retain stronger guards.
Inherited shared-VBAT teardown and ignored event-register errors remain explicit
risks. Nominal trace parity does not qualify any of those behaviors on hardware.

  • Complete the exact-head package build and independent manifest, digest,
    configuration, DTB, module-set/vermagic, export and lifecycle-hook checks.
  • Separately authorize copy/read-only preflight and installation, preserving
    v23 as the default/fallback and its boot payloads. No automatic reboot.
  • Supervised first boot with passive diagnostics and an immediate recovery
    path; no unattended playback, volume/notification stimulus or suspend loop.
  • Establish stereo playback/recording, volume and notification behavior,
    graph/error recovery and PM/suspend behavior without recurrence of static.
    Keep TX-only qualification distinct from this combined diagnostic carrier.
  • Complete remaining input, camera, power, non-SP11 and contributor gates
    on their respective dependency groups before final integration.

This test carrier must not be merged into beta. Qualified source changes can
later be integrated through their reviewed topics; the temporary packaging
version and a green build must not bypass those gates.

jprakash-qc and others added 30 commits September 16, 2026 22:34
Add support for ADC_TM part of PMIC5 Gen3.

This is an auxiliary driver under the Gen3 ADC driver, which implements the
threshold setting and interrupt generating functionalities of QCOM ADC_TM
drivers, used to support thermal trip points.

Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Signed-off-by: Jishnu Prakash <jishnu.prakash@oss.qualcomm.com>
as found in the pcie3 node of the dsdt, using pmc8380_3 gpio 5

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Add embedded controller node for Glymur CRDs which adds fan control,
temperature sensors, access to EC state changes through SCI events
and suspend entry/exit notifications to the EC.

Signed-off-by: Sibi Sankar <sibi.sankar@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Co-developed-by: Anvesh Jain P <anvesh.p@oss.qualcomm.com>
Signed-off-by: Anvesh Jain P <anvesh.p@oss.qualcomm.com>
Add embedded controller node for Hamoa/Purwa CRDs which adds fan control,
temperature sensors, access to EC internal state changes and suspend
entry/exit notifications to the EC.

Signed-off-by: Sibi Sankar <sibi.sankar@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Co-developed-by: Anvesh Jain P <anvesh.p@oss.qualcomm.com>
Signed-off-by: Anvesh Jain P <anvesh.p@oss.qualcomm.com>
Add embedded controller node for Hamoa IOT EVK boards which adds fan
control, temperature sensors, access to EC internal state changes and
suspend entry/exit notifications to the EC.

Signed-off-by: Sibi Sankar <sibi.sankar@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Gaurav Kohli <gaurav.kohli@oss.qualcomm.com>
Tested-by: Gaurav Kohli <gaurav.kohli@oss.qualcomm.com>
Co-developed-by: Anvesh Jain P <anvesh.p@oss.qualcomm.com>
Signed-off-by: Anvesh Jain P <anvesh.p@oss.qualcomm.com>
Add embedded controller node for Hamoa/Purwa CRDs which adds fan control,
temperature sensors, access to EC internal state changes and suspend
entry/exit notifications to the EC.

link: https://lore.kernel.org/all/20260327-add-driver-for-ec-v7-0-7684c915e42c@oss.qualcomm.com/

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
It is apparently not available, use eusb5 until we find out which is which

also cleanup on i2c9 (keyboard) and i2c19, touchpad is no wakeup-source

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
to avoid oddities during boot

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
…nd DAIs

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
…tate

The MSM DP bridge implements dp_audio_prepare and dp_audio_shutdown but
not dp_audio_startup. drm_bridge_connector_audio_startup() treats a
missing dp_audio_startup as success and allows the DPCM layer to
proceed to dp_audio_prepare even when no display is connected.
msm_dp_audio_prepare() then returns -EINVAL because power_on is false,
producing continuous dmesg spam at boot and on every PipeWire re-probe:

  ASoC error (-22): at snd_soc_dai_hw_params() on i2s-hifi
  DisplayPort2 Playback: ASoC error (-22): at __soc_pcm_hw_params()

Add a dp_audio_startup implementation that checks power_on and returns
-ENOTSUPP when no display is connected, gating the entire audio setup
sequence at startup so prepare is never reached when the DP link is not
active. -ENOTSUPP is used deliberately as snd_soc_ret() in soc-utils.c
treats it as an expected non-error condition and suppresses the log
output, avoiding unnecessary noise when no display is attached.

Signed-off-by: Steev Klimaszewski <threeway@gmail.com>
…llers

Enable the gpi_dma0..gpi_dma2 controllers

currently no clients yet

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Reference the reserved memory region for audio PD dynamic loading
and remote heap requirements. Add the required VMID list for memory
ownership transfers.

Signed-off-by: Ekansh Gupta <ekansh.gupta@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
…me PM

Convert the LPASS WSA macro codec driver to use the PM clock framework
for runtime power management.

The driver now relies on pm_clk helpers and runtime PM instead of
manually enabling and disabling macro, dcodec, mclk, npl, and fsgen
clocks. Runtime suspend and resume handling is delegated to the PM
core via pm_clk_suspend() and pm_clk_resume(), while existing runtime
PM callbacks continue to manage regcache state.

This ensures clocks are enabled only when the WSA macro is active,
improves power efficiency on LPASS platforms supporting LPI/island
modes, and aligns the driver with common ASoC runtime PM patterns used
across Qualcomm LPASS codec drivers.

Signed-off-by: Ajay Kumar Nandam <ajay.nandam@oss.qualcomm.com>
…e PM

Convert the LPASS VA macro codec driver to use the PM clock framework
for runtime power management.

The driver now relies on pm_clk helpers and runtime PM instead of
manually enabling and disabling macro, dcodec, mclk, and npl clocks.
All clock control during runtime suspend and resume is delegated to
the PM core via pm_clk_suspend() and pm_clk_resume().

This change ensures clocks are only enabled when the VA macro is
active, improves power efficiency on LPASS platforms supporting
LPI/island modes, and aligns the driver with common ASoC runtime PM
patterns used across Qualcomm LPASS codec drivers.

Signed-off-by: Ajay Kumar Nandam <ajay.nandam@oss.qualcomm.com>
The NPL clock is only present on some platforms.  When it is absent,
wsa->npl remains NULL, but the driver unconditionally programs its rate.

Guard clk_set_rate() for the NPL clock so platforms without NPL do not
attempt to access it.

No functional change on platforms that provide the NPL clock.

Signed-off-by: Ajay Kumar Nandam <ajay.nandam@oss.qualcomm.com>
- remove codec
- remove codec, dmic, speaker related DAIs
- remove swr config, lpass, wsa macro, va macro
- add DisplayPort related DAIs
- add DisplaPort sound names

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
and follow-up changes re thermal zones in dell xps13 9345

Thermal zones definition on sgerhold's branch was different (newer)

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
required for the ufs_mem_hc node.

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Add status = "disabled" to ice@1d88000, cryptobam and general crypto
nodes in hamoa.dtsi to avoid probe failures on platforms that don't
use them.

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
ICE is used by the UFS controller.

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Add the dp altmode wiring from Denali. This consists of
pmic-glink, ps883x retimers, and accompanying vregs and gpios.

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
- re-enable scm compatible for obvious reasons
- some sorting
- pcie4 pinctrl
- MAC hack

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
preliminary hack

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
To support sound over DisplayPort on the type-c ports, add the necessary DAI
links and port naming.

Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Restore the qualified protected graph's own uncached position page and
use its DSP address for the fixed pull ring. Read the live counter
with DMA barriers and reject zero, torn, and out-of-range indices
before updating the ALSA pointer.

Identify this lifecycle only when the protected topology contains pull
instance 0x4660 and soft-pause instance 0x466b. Preserve the generic
ALSA-owned position buffer for every other push/pull graph, and retain
uncertain mappings under the existing fail-closed teardown policy.

Use the captured SP11 subgraph order for graph-client run-state
commands. Treat a lost soft-pause completion as uncertain so the
next teardown or prepare performs a confirmed graph stop instead of
claiming that playback resumed.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit 6bdbee1)
The hardware-qualified FullIO pull transaction proceeds from its
protected configuration directly to the ordered graph-client START. Do
not insert the generic APM GRAPH_PREPARE command for the exact SP11
topology.

Advance the existing fail-closed prepared state locally so start still
requires successful protection configuration or confirmed bypass. All
other protected and generic graphs retain the existing PREPARE command.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit 4dc8837)
The qualified integrated transaction configures the pull endpoint
media format before walking the protected PCM converter and MFC
chain. Restore that order for the exact SP11 topology.

Keep the existing PCM-then-shared-memory order for every ordinary
and non-SP11 graph.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit a2f2c71)
Match the qualified position-map token and send the soft-pause
parameter over the APM service port used by the captured SP11
transaction. The exact protected-topology predicate still prevents
either path from serving another graph.

Keep pull-ring setup and event registration on the graph client,
matching their qualified routes and preserving graph-scoped command
correlation.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit c575f95)
Clear the retained-map uncertainty only when the DSP definitively
rejects the matching graph-owned position mapping. This lets the
synchronous failure path release coherent DMA without treating a
confirmed NACK like an unknown DSP outcome.

Reject a second position allocation on the same graph as a defensive
backstop against overwriting retained mapping state.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit 4f41d24)
A persistent Denali pull graph may reach prepare while it is still
DSP soft-paused. Resume it and require the matching completion before
reporting the reused graph as running.

Keep the stream uncertain on a missing completion so a later prepare
cannot silently reuse a potentially paused graph.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit 7dd3578)
The graph-owned position mapping uses the qualified fixed BIT(30)
token. Reserve that sequence value from generated mapping tokens
and classify graph-position responses by the complete non-graph-id
token class.

This prevents a generic fixed-region mapping from becoming
indistinguishable after the sequence counter reaches the reserved
value while preserving the qualified DSP transaction.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit aaa5c46)
Do not let a later STOP overwrite the fail-closed state left by
a missing soft-pause completion. Confirm a hard graph stop first,
then clear persistent pull state so the next prepare performs the
complete setup.

Also clear the soft-pause marker after hw_free confirms the same
recovery, preventing stale pause state from surviving into a rebuilt
graph.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit f0d9f69)
The hardware-qualified SP11 v19 image clears Offset2 while enabling
the WSA VI and CPS master ports. The guarded 7.2.2 relift dropped that
behavior.

Apply the active value automatically only to WSA controller ports 10,
11 and 13 on Microsoft Denali. Keep the inactive transport
configuration unchanged and leave generic controllers untouched.

This restores the qualified behavior without exposing SP11 policy
through a module parameter or making SP11 naming part of the public
userspace contract.

Link: 537d1ac

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit 618b3e1)
The guarded 7.2.2 port kept the 2S 4-ohm final values but dropped the
hardware-qualified Denali WSA8845 cold, start and stop transactions.
The right amplifier consequently reports PA status 0x6 and remains
disabled during playback.

Restore the v19 register sequences verbatim and select them only when
the machine is Microsoft Denali, protected feedback is described, the
speaker load is 4 ohms and the codec reports a 2S supply. Generic
WSA884x devices retain the upstream lifecycle.

Also restore the bounded PA FSM reset and retry path. Retain the
relifted protection-clock accounting and keep a failed recovery as a
hard playback error.

Link: e72bffc

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit d1edbc8)
The WSA8845 devices remain powered and advertise simple clock-stop
support on Microsoft Denali. Treating each transient SoundWire detach
as context loss dirties the full register cache and replays the cold
transaction on attachment, unlike the hardware-qualified v19
lifecycle.

Keep the initialized codec state across the Denali protected 2S 4-ohm
detach and sync only writes queued while cache-only. Preserve the
existing context-loss path, including full dirty-cache restore, for
every other device and profile.

Link: e72bffc

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit 09a3f4e)
DPCM releases the Denali VI and CPS backends before the front end
performs its final protected graph stop. The graph correctly rejects
those ready-to-not-ready transitions while start_count is nonzero, but
the machine driver then aborts SoundWire hw_free and shutdown. This
produces four -EBUSY warnings and can retain the stream runtime on every
close.

Treat only a busy readiness clear as deferred so SoundWire teardown
continues. Complete both deferred clears after a confirmed final
protected graph stop, under the existing protection lock. Keep ready
transitions into a running graph rejected, and do not clear state after
an uncertain or failed stop.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit cceb155)
The Denali cold, start, and stop transactions already carry their own
gain, current-limit, and watchdog state. Running the generic speaker
post-PMU and PDM watchdog writes afterwards changes that qualified
transition and can leave the paired amplifiers asymmetric.

Restore the protected-profile bypass used by the qualified v19 path.
Non-Denali and unprotected WSA884x users retain the generic programming.

Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit e0fe0c6)
The hardware-qualified SP11 v19 path materializes TOP_CFG1 after each
enabled VI feedback pair. The guarded 7.2.2 relift retained the feedback
clocks but dropped this producer-side write, leaving the physical lane
order inconsistent with the qualified V,I,V,I stream.

Restore the write at the original lifecycle boundary and gate it with
the existing protected-feedback profile. This is equivalent to the
original Denali check while preserving upstream defaults and behavior
on every other machine.

Link: f17a678
Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit 156115d)
The device writes event elements into coherent memory before publishing
its event ring read pointer. Both gpi_process_events() and
gpi_mark_stale_events() read that pointer through readl_relaxed() and then
consume the event memory without an ordering guarantee.

On architectures such as arm64, this can expose a published event before
all its fields are visible. Denali QSPI exposed this as an accepted
completion whose length was observed as zero.

Use ordered MMIO reads only for the event pointer. Keep all other register
accesses relaxed. This follows the ordered ioread32() pattern used by the
Qualcomm IPA GSI event-ring consumer.

Fixes: 5d0c353 ("dmaengine: qcom: Add GPI dma driver")
Signed-off-by: Leon Silcott <leon@boasi.io>
(cherry picked from commit bd9f5e2)
(cherry picked from commit f9c68b9)
Signed-off-by: Leon Silcott <leon@boasi.io>
Derive the softclip control register from the selected codec layout instead
of combining the fixed v2.1 base with a version-dependent channel stride.

This preserves v2.1 control addresses 0x604/0x644 and selects 0x644/0x664
for v2.5 and later. Keep the existing softclip enable and event policy.
This is a register-layout correction, not a claim that softclip caused the
Denali audio regression.

Signed-off-by: Leon Silcott <leon@boasi.io>
Restore the VBAT/BCL event, widgets and routes from the qualified Denali
integration source, together with its HD2 no-op and conditional primary
half-dB policy. Retain the geocausa/SP11X1e-audio provenance of that source.

Apply the seventeen cache-default differences to a private writable copy
only for Denali. These remain cache assumptions, not forced register
writes. Extend the v2.5 register access range only for Denali, and install
the driver instance before regmap access callbacks can need it.

Keep generic routes and defaults unchanged. Use separate Denali and generic
route tables because common component routes are registered after probe.
Do not change PA, VI or CPS ownership in this commit.

This restores nominal source behavior, including the inherited shared-VBAT
teardown and ignored event-write errors. Neither those behaviors nor the
new guarded composition are hardware-qualified by the source trace tests.

Link: 537d1ac
Link: geocausa/SP11X1e-audio@31466d6
Signed-off-by: Leon Silcott <leon@boasi.io>
Restore the two SP/SPVI GET transactions in the qualified Denali setup
order between the tag configuration and SPVI dynamic configuration.
Derive their first-record query shape from the validated topology instead
of introducing fixed instance IDs. Zero the request before filling it.

Accept the GET response only when a pending command, opcode and token
match, and validate response bounds before reporting completion. Preserve
the existing protected-profile gate and transport error handling.

The source order comes from the geocausa/SP11X1e-audio integration port.
This does not decode calibration replies or prove that these queries
resolve the speaker regression.

Link: 537d1ac
Link: geocausa/SP11X1e-audio@31466d6
Signed-off-by: Leon Silcott <leon@boasi.io>
Restore the qualified integration's per-record calibration replay when
the aggregate returns EOPNOTSUPP. Validate the entire block's framing
before sending it, retaining opaque instance IDs and query-only records.
Continue past individual EOPNOTSUPP replies, but stop on hard failures.

Serialize replay and retain its result on the persistent topology graph
information so reopening a runtime graph cannot accept a partially failed
replay. A topology reload resets this state. This intentionally replaces
the legacy global once flag with per-topology ownership and sticky errors.

The nominal replay is adapted from the geocausa/SP11X1e-audio integration
port. Do not restore the legacy hard-aggregate-error diagnostic probes.
The state and error-handling deviations still need hardware qualification.

Link: 537d1ac
Link: geocausa/SP11X1e-audio@31466d6
Signed-off-by: Leon Silcott <leon@boasi.io>
After both protected modules have been successfully disabled for missing
VI/CPS feedback, send the qualified gain, filter, mute and channel-mixer
tail. Reuse the same sequence for the fully configured protected path.

Only confirm bypass after every required transaction succeeds. A failed
disable or volume-tail transaction faults the graph and prevents prepare
and start from treating partial configuration as success. Leave the
unavailable/uncertain guard path's disable-only behavior unchanged.

The nominal sequence is adapted from the geocausa/SP11X1e-audio integration
port. Preserving it does not qualify bypass acoustics or speaker safety;
the guarded error behavior and complete composition remain test candidates.

Link: 537d1ac
Link: geocausa/SP11X1e-audio@31466d6
Signed-off-by: Leon Silcott <leon@boasi.io>
Keep Denali's macro and dcodec votes for the device lifetime and cycle
only mclk, optional npl and fsgen through runtime PM, in that order on
resume and in reverse on suspend. This matches its qualified integration
clock ownership instead of applying the newer all-clock PM policy.

Retain the PM-clock framework path for all other devices. On Denali,
propagate clock-enable failures and unwind partial acquisition. Clear
cache-only only once the clocks are ready; on regcache-sync failure restore
cache-only/dirty and release runtime references before returning the error.
That sync-error handling deliberately differs from the legacy ignored error.

Register a managed release action before the component and output clock so
they are torn down first. Track acquired runtime references independently
of PM status and disable PM before cleanup on remove or probe failure.
Keep the three-second autosuspend delay and system-sleep policy unchanged.

This is a Denali qualification candidate, not proof of physical power
collapse or of the speaker regression's cause. The VA fsgen dependency and
real PM/CCF/DAPM behavior still need qualification.

Link: 537d1ac
Link: jglathe@4d49f24
Signed-off-by: Leon Silcott <leon@boasi.io>
The Denali producer repair deliberately mutates a private reg_default copy
before passing it to regmap. Its argument cannot be const; the generic
CONST_STRUCT heuristic is not applicable to this use.

Retain the diagnostic in the log, but accept it only when the complete
patch has the reviewed stable patch ID, the resulting source blob matches
exactly, and this exact warning is the sole diagnostic. The blob check is
necessary because patch IDs also ignore significant whitespace in string
literals. Do not ignore CONST_STRUCT globally or waive other findings in
the same patch. Any source change requires a renewed review.

This is a source-style exception, not a hardware or provenance waiver.
All qualification and contributor-attestation gates remain unchanged.

Signed-off-by: Leon Silcott <leon@boasi.io>
Allocate 7.2.5-jg-0sp11v3 for the guarded audio repair series. Keep its
packages and modules distinct from the failed v2 hardware candidate;
the calibration state changes exported AudioReach symbol checksums.

Retain the prior v2 entry and existing source DTB/non-Stubble policy.
No other packaging, configuration or kernel source is changed here.
Compilation and linkage checks are not audio safety or hardware parity
qualification. Preserve the known-good recovery kernel and keep this
test carrier out of the integration target until its gates are met.

Signed-off-by: Leon Silcott <leon@boasi.io>
@ooaklee

ooaklee commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

Closing this superseded review/qualification vehicle without merging. Current review work is tracked in ooaklee/linux_ms_dev_kit-sp11#58, ooaklee/linux_ms_dev_kit-sp11#68; ooaklee/linux_ms_dev_kit-sp11#68 is the single combined 7.2.5 qualification candidate. This does not discard the original feature intent or close any outstanding acceptance gate.

The current combined source is 8ba2b75713feb5c72bbc11dd8cce4048e23cdeea, ABI 7.2.5-jg-0sp11v8-qcom-x1e; see the experimental v8 release. Ordinary-use results on one X1E/OLED unit are recorded, but the release remains experimental and the detailed hardware, lifecycle, deviation, CI and provenance gates in ooaklee/linux_ms_dev_kit-sp11#68 remain open.

This PR's branch and exact head c1cd582ea42b, authored history, discussion and test evidence are retained unchanged. Closing is administrative supersession, not a merge, an acceptance decision, or a claim that the old and current trees are identical. Beta and the repository default are unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.