[DO NOT MERGE] qualify the complete SP11 beta2 aggregate - #41
Conversation
Denali uses a 4.8 MHz direct-DMIC rate with the VA path clocked at 19.2 MHz. Validate the sample rate against that clock so the driver selects DIV4, matching the native Windows programming, instead of DIV2. Keep the existing calculation on every other machine. This is based on geoca's Windows-parity analysis in patch 0072. Link: https://github.com/geocausa/SP11X1e-audio/blob/a1d51ecc7416a905acdad50d31600fff7f28ac1c/patches/0072-ASoC-lpass-va-macro-SP11-match-Windows-DMIC-divider.patch Link: 58e36b1 Co-authored-by: geoca <272055834+geocausa@users.noreply.github.com> Signed-off-by: Leon Silcott <leon@boasi.io>
The Surface Pro 11 microphone array feeds the TX macro while the VA macro owns its direct-DMIC pad clocks. Without a cross-macro clock request, the TX capture path cannot reproduce the working firmware sequence. Add an LPASS-internal DMIC clock broker, register the Denali VA macro as its provider, and request DMIC1 then DMIC0 from the TX DEC event group. Validate the exact two-channel Denali route before changing the clocks. Both the provider and consumer paths are gated by the microsoft,denali root compatible. Other machines retain the existing VA and TX behavior; the common broker remains unused on those systems. This implementation follows geoca's Windows-parity work in patch 0078. Link: https://github.com/geocausa/SP11X1e-audio/blob/a1d51ecc7416a905acdad50d31600fff7f28ac1c/patches/0078-ASoC-lpass-SP11-share-VA-DMIC-clock-with-TX-capture.patch Link: 58e36b1 Co-authored-by: geoca <272055834+geocausa@users.noreply.github.com> Signed-off-by: Leon Silcott <leon@boasi.io>
The Surface Pro 11 exposes its microphone array as two 48 kHz PCM channels. The existing VA backend covers the voice path but does not provide the regular TX-macro host capture path. Add a TX macro link through AudioReach TX_CODEC_DMA_TX_3 and route DMIC0 and DMIC1 through the microphone regulator. Keep the existing VA capture link available for low-power use and hardware comparison. Link: ab34e94 Link: 58e36b1 Signed-off-by: Leon Silcott <leon@boasi.io>
Describe the optional WSA8845 VISENSE and CPS feedback paths, including their DAI selectors and slave-only SoundWire transport properties. Add a board-specific Denali sound-card compatible with the generic X1E80100 fallback. [Leon: Split the source binding changes into a reviewable commit, rebased them onto the current schemas, added the Denali sound-card compatible with its generic fallback, and kept the new properties optional.] Link: geocausa/SP11X1e-audio@31466d6 Link: 4bcfa10 Signed-off-by: Leon Silcott <leon@boasi.io>
Let a slave describe optional banked registers implemented by a SIMPLE data port, and let a stream provide slave-only transport overrides. The new fields default to zero so existing SoundWire devices are unchanged. [Leon: Split the zero-default slave transport metadata from the source overlay and rebased it onto the current SoundWire types.] Link: geocausa/SP11X1e-audio@31466d6 Link: 4bcfa10 Signed-off-by: Leon Silcott <leon@boasi.io>
Give the Denali sound-card compatible a private configuration and use it to constrain the WSA VI and CPS rate, format, and channel-map setup. Other X1E80100 sound cards keep their existing backend behavior and speaker volume limits. Do not carry the source branch's global AudioReach readiness variables. Readiness must instead be represented by the relevant card and graph instances in the runtime part of the series. [Leon: Replaced the source global readiness and volume changes with a Denali-private card configuration while retaining non-Denali behavior.] Link: geocausa/SP11X1e-audio@31466d6 Link: 4f9ac01 Signed-off-by: Leon Silcott <leon@boasi.io>
Let a slave describe optional banked registers implemented by a SIMPLE data port, and let a stream provide slave-only transport overrides. The new fields default to zero, so existing SoundWire devices keep the current programming path. This is the generic core portion required by the Denali WSA8845 feedback ports; controller and codec use is added separately. [Leon: Split the generic SIMPLE transport/register override support from its Qualcomm controller and codec consumers and retained the current stream API.] Link: geocausa/SP11X1e-audio@31466d6 Link: 5cf86f7 Signed-off-by: Leon Silcott <leon@boasi.io>
Expose companion playback streams for the two Denali WSA input DAIs so DPCM can start VI and CPS with speaker render while SoundWire keeps their physical direction toward the master. Merge the two amplifier channels only for Denali's shared CPS master port. Gate both changes on the Denali machine compatible, the WSA controller, and DAI IDs 9 and 10. Other Qualcomm SoundWire controllers retain their existing DAI capabilities, rates, formats, direction, and port allocation. The source branch's global diagnostic module parameters are intentionally not carried. [Leon: Scoped the feedback direction, shared-port merge, and companion DAIs to Denali WSA controller IDs 9 and 10. Omitted the source diagnostic module parameters.] Link: geocausa/SP11X1e-audio@31466d6 Link: 5cf86f7 Signed-off-by: Leon Silcott <leon@boasi.io>
Register separate VI and CPS feedback DAIs when a WSA884x instance has the qcom,enable-cps property. Split its SoundWire sink and source ports, apply the DT-selected VISENSE mask and CPS Offset1, and keep playback and feedback stream state separate. Devices without the property still register only the existing speaker DAI and retain the existing port description and stream setup. This commit does not include the Denali PA register profile or lifecycle changes. [Leon: Split the WSA884x feedback DAI/port subset, made it an explicit per-node opt-in with private stream state, and omitted the broad PA lifecycle changes.] Link: geocausa/SP11X1e-audio@31466d6 Link: e72bffc Signed-off-by: Leon Silcott <leon@boasi.io>
On Denali, add playback-side VI and CPS endpoints so the protected render graph can start both feedback paths atomically. Add the associated DAPM widgets and keep the existing VI capture endpoint intact. Build the extended DAI table from a private copy only on Denali. Other machines continue to register the original DAI table and DAPM graph, so the shared WSA macro driver does not redefine their TX interfaces. [Leon: Split the WSA macro feedback endpoints, built them from a Denali-private DAI/DAPM copy, and preserved the existing VI capture path.] Link: geocausa/SP11X1e-audio@31466d6 Link: e72bffc Signed-off-by: Leon Silcott <leon@boasi.io>
Add playback capabilities for the WSA TX0 and TX1 backend DAIs used by Denali's VI and CPS protection links. Build the modified table as a device-managed copy only for the Denali AudioReach backend provider. Other machines and the legacy Q6AFE provider keep the existing capture- only definitions. Propagate allocation failure from the AudioReach DAI probe. Link: geocausa/SP11X1e-audio@31466d6 Link: 22bdec2 Signed-off-by: Leon Silcott <leon@boasi.io>
APR receive processing can hold a service pointer after dropping svcs_lock, while dynamic port removal used to remove and immediately free that service. A concurrent callback could therefore use freed memory. Give every service a registrar reference and take callback references while holding svcs_lock. Remove the service from the IDR first, then wait for admitted callbacks to drain before freeing it. Apply the same unwind discipline to static service registration failures. gpr_free_port() may sleep and must run in process context outside the port's own callback. This avoids self-deadlock while preserving a simple removal contract. Signed-off-by: Leon Silcott <leon@boasi.io>
Global AudioReach commands reused token zero and shared one result slot. Late responses after a timeout could complete a later command or mutate the wrong mapping handle. Dynamic graph clients could also disappear while callbacks or command users still held them. Assign unique tokens to synchronous global and per-client commands while preserving the graph and position-buffer token fields. Claim replies only when token and opcode match the active command, and update mapping handles inside the same critical section. Publish graph clients under a lifecycle lock, reject new users once teardown begins, abort pending waits, and drain admitted users and callbacks before releasing ports. This also corrects the position-buffer unmap token. Link: geocausa/SP11X1e-audio@33d5145 Link: geocausa/SP11X1e-audio@39499f0 Link: 22bdec2 Signed-off-by: Leon Silcott <leon@boasi.io>
FullIO v19c topologies add raw module stage classes and data, graph control links, extended container placement, and integrated-backend metadata. The 7.2 parser did not retain or emit those fields. Parse the extended tokens and build matching graph-open payloads without hard-coded diagnostic or volume instance IDs. Use one checked iterator for vendor arrays and known raw records, reject truncated, reordered, duplicate, oversized, or overflowing input before packet allocation, and preserve the historical no-op for unsupported legacy module extensions. [Leon: ported the format to 7.2, preserved legacy-topology no-op behavior, and hardened raw-block bounds, ordering, duplicates, ownership, and aggregate allocation arithmetic.] Link: geocausa/SP11X1e-audio@31466d6 Link: geocausa/SP11X1e-audio@7af8f21 Link: 4bcfa10 Link: 22bdec2 Signed-off-by: Leon Silcott <leon@boasi.io>
FullIO protection calibration can exceed the in-band SET_CFG limit, and its storage belongs to the DSP graph rather than global card state. Size each graph payload from topology, allocate coherent memory through the APM DMA device, translate the address for the DSP SID, and map it with a graph-scoped token. Serialize buffer writes and correlate MAP, SET_CFG, and UNMAP replies to the exact command before changing mapping state. Close the DSP graph before unmapping its OOB buffer. If a reply leaves ownership ambiguous, retain the coherent memory and device reference until reboot or a future proven reset hook rather than allowing the DMA range to be reused. [Leon: made OOB ownership graph-scoped, keyed reply mutation to the current command, and retained ambiguous mappings instead of reusing DMA.] Link: geocausa/SP11X1e-audio@9de3dc9 Link: geocausa/SP11X1e-audio@af28565 Link: geocausa/SP11X1e-audio@1ca3820 Link: geocausa/SP11X1e-audio@31466d6 Link: 22bdec2 Signed-off-by: Leon Silcott <leon@boasi.io>
FullIO v19c describes protected-speaker calibration and runtime stages in topology. Execute graph calibration and ordered protection or bypass SET_CFG payloads on the owning graph instead of using global card state or hard-coded module instance IDs. Keep configuration, bypass proof, backend readiness, start references, and faults per graph. Enable this path only for Denali PCM clients and a topology-declared protected graph; reject partial profiles and mixed ordinary or protected clients. Start only after protected configuration or both SP and SPVI bypass commands are confirmed. Correlate every state transition and make final close consume-on-success. If execution, close, OOB, or mapping ownership is unconfirmed, block reuse and retain the complete client, callback context, and DMA ownership until reboot or a future proven reset hook. [Leon: limited the runtime to Denali plus a topology-declared protected graph, made malformed or unconfirmed setup fail closed, serialized backend/readiness and start references, enforced immutable shared runtime modes, and quarantined callbacks, clients, and DMA after unconfirmed teardown.] Link: geocausa/SP11X1e-audio@db2af54 Link: geocausa/SP11X1e-audio@1ca3820 Link: geocausa/SP11X1e-audio@33d5145 Link: geocausa/SP11X1e-audio@31466d6 Link: geocausa/SP11X1e-audio@7af8f21 Link: 22bdec2 Signed-off-by: Leon Silcott <leon@boasi.io>
Denali speaker protection needs both VI feedback and CPS telemetry before the protected path can be enabled. Map those backend DAIs to the graph that owns their topology-declared integrated backend, and publish readiness as the SoundWire links prepare or tear down. Keep the mapping and lifecycle limited to microsoft,denali-sndcard. Require a valid, prepared SoundWire runtime before publishing readiness, reject readiness transitions while the graph is started, and drain the matching FE and BE start references symmetrically. Refuse SoundWire teardown until the graph is known stopped. Other machines and ordinary graphs keep their existing DAI behavior. Link: geocausa/SP11X1e-audio@31466d6 Link: geocausa/SP11X1e-audio@7af8f21 Link: 22bdec2 Link: 4f9ac01 Signed-off-by: Leon Silcott <leon@boasi.io>
Describe the optional nominal speaker load used to select board-specific PA gain and PBR thresholds. An absent property retains the existing 8-ohm defaults. Link: geocausa/SP11X1e-audio@967b539 Link: 40932bb Signed-off-by: Leon Silcott <leon@boasi.io>
Read the nominal speaker load from firmware and apply the 2S 4-ohm PA gain, PBR, class-H, VCM, and UVLO values only when the amplifier also reports a 2S VPHX supply. Devices without the property retain the current defaults. [Leon: Re-lifted the profile onto the current driver, gated it by qcom,speaker-load-ohms and a fresh hardware-confirmed 2S status, and added explicit default restoration after failed re-attach reads.] Link: geocausa/SP11X1e-audio@967b539 Link: 40932bb Signed-off-by: Leon Silcott <leon@boasi.io>
Have each opted-in WSA884x report a successful, error-free PA enable to the WSA macro. Enable both protection paths after the second confirmed PA and disable them before the first PA teardown. Require protected feedback DAIs to have a live 2S/4-ohm classification so VI/CPS readiness cannot outrun the PA profile. Roll back PA and DRE state when an enable write, PA status check, or macro lookup fails. Keep the counters, lock, and enabled state in each WSA macro instance so non-protected cards remain unchanged. [Leon: Replaced the source globals with per-macro state, scoped lookup to the source card, balanced duplicate/remove events per amp, made the helper Kconfig-safe, required a confirmed 2S/4-ohm feedback profile, and withheld the PA event after write or FSM errors.] Link: geocausa/SP11X1e-audio@31466d6 Link: e72bffc Signed-off-by: Leon Silcott <leon@boasi.io>
Describe the WSA8845 VISENSE and CPS feedback links used by the protected speaker graph. Select them only from the Denali sound card and give that card a board-specific compatible ahead of the generic X1E80100 fallback. [Leon: Re-lifted only the common Denali VI/CPS graph and transport data, added the board-specific compatible, and omitted the experimental board target.] Link: geocausa/SP11X1e-audio@31466d6 Link: 6035b3e Signed-off-by: Leon Silcott <leon@boasi.io>
Describe both integrated WSA8845 speaker loads as 4 ohms so the codec can select the matching PA profile after confirming the hardware 2S supply. Link: geocausa/SP11X1e-audio@967b539 Link: 6035b3e Signed-off-by: Leon Silcott <leon@boasi.io>
The SP11 FullIO topology SAL module declares ten input ports. AR_MAX_MOD_LINKS bounds the stored output connection arrays, but it does not bound this module metadata. Rejecting the input count prevents the sound card from probing with -EINVAL. Keep the output-port array bound while accepting the valid SAL declaration. Signed-off-by: Leon Silcott <leon@boasi.io>
Qualcomm battmgr is the authoritative battery provider on the Surface Pro 11. Do not instantiate the primary Surface Aggregator Module battery device in the Denali-specific software-node group, avoiding a duplicate battery provider without adding a machine quirk to the shared driver. Keep the separate SAM AC-adapter node registered. This extracts and narrows the Denali battery fix from the original combined touchscreen and battery commit. Link: 3fc7c52 Signed-off-by: Justin White <kyjus25@gmail.com> Signed-off-by: Leon Silcott <leon@boasi.io>
The X1E Qualcomm battery manager registers qcom-battmgr-ac as the authoritative mains supply. Retaining the Surface Aggregator ADP1 node creates a second mains interface for the same Denali power source. Follow the upstream Surface Laptop 7 precedent and omit the SAM AC node from the Denali-only registry group. Keep this correction separate from the Justin White battery-node extraction so its original authorship and sign-off remain intact. Link: torvalds@0488073 Signed-off-by: Leon Silcott <leon@boasi.io>
Device-tree systems can use platform-profile providers even when ACPI is disabled, but the framework currently declines to register its class in that case. Register the class unconditionally and create the legacy ACPI attribute group only after ACPI has initialized successfully. Record that group registration and use it to guard legacy notifications and teardown. This keeps the class path independent of ACPI while also avoiding a stale acpi_kobj after an ACPI initialization failure. This exposes the native /sys/class/platform-profile/ interface without creating a synthetic /sys/firmware/acpi hierarchy. Existing ACPI systems retain the legacy aggregate attributes unchanged. This is a contained rework of the original SP11 non-ACPI enablement. Link: 106ad0d Signed-off-by: Leon Silcott <leon@boasi.io>
The Surface Pro 11 has active cooling and supports SAM performance profiles, but its registry group does not instantiate the existing platform-profile and fan-speed devices. Add the existing fan-capable profile node and fan-speed node only to the Denali software-node group. Other Surface device groups are unchanged. Link: 5c513ff Signed-off-by: Leon Silcott <leon@boasi.io>
The Surface Pro 11 needs a lower CPU-frequency ceiling in its low-power profile to match the validated cool-running baseline. Describe the 2.515 GHz ceiling and default low-power selection on an SP11-only software node. Set up frequency-QoS only when that per-device property is present. Devices without it retain the legacy TMP-then-fan write order, including writes that repeat the current profile. Track cpufreq policies through CREATE and REMOVE notifications plus a per-device CPU-hotplug state, so a policy that is fully offline at probe is capped when a CPU returns. Hold policy references while attaching requests, clear stored raw pointers synchronously on REMOVE, and stop hotplug callbacks before tearing down requests and the notifier. When entering low power, apply the cap before fan and TMP changes; when leaving, restore fan and TMP before dropping the cap. If a SAM write fails, read TMP back and reconcile fan and cap conservatively. An unavailable cpufreq subsystem degrades to profile-only operation. Omit the staging implementation’s no-op power-supply notifier. This is a contained rework of the original SP11 low-power implementation. Link: 30972bd Signed-off-by: Leon Silcott <leon@boasi.io>
Signed-off-by: Leon Silcott <leon@boasi.io>
The CSID680 RDI path enables horizontal and vertical crop/drop without programming the corresponding configuration. Leave these optional operations disabled while retaining the timestamp, packing and interrupt setup. Do not add drop-pattern writes or sensor-specific crop geometry. Adapt the enable-bit correction from Jeroen Karsies' SP11 camera bring-up snapshot b08f76f40b8d7b715bd4da6aef484f86142cc147. Retain the existing upstream source attribution and limit this change to receiver setup. This remains experimental groundwork: stream counters, capture layout and repeated starts still need validation on the target hardware. Link: https://github.com/karsies-wq/sp11-imx681-linux/blob/b08f76f40b8d7b715bd4da6aef484f86142cc147/camss/camss-csid-680.c Link: b910f68 Signed-off-by: Leon Silcott <leon@boasi.io>
Program period 1 and pattern 0 for the frame, pixel, and line drop engines. This preserves every RDI sample explicitly instead of relying on reset values, while the independently configured IMX681 horizontal crop remains enabled only for its exact C-PHY RAW10 geometry. Extract the CSID portion of the hardware-qualified source commit and preserve its author. Sensor, PHY, device-tree, and packaging changes from that original multi-area commit are already represented by the preceding beta camera topic. Link: 1592ec3 Signed-off-by: Leon Silcott <leon@boasi.io>
Track the last subdevice that accepted stream start. If a later subdevice fails, stop only the subdevices that were successfully started before tearing down the media pipeline. Reuse the same helper for normal stream stop and keep teardown going after nonfatal stop errors. This preserves the CAMSS portion of the hardware-qualified source commit. Its sensor, CCS, and packaging changes are not copied because the beta already uses the validated standalone IMX681 driver and focused packaging. Link: 0097c12 Signed-off-by: Leon Silcott <leon@boasi.io>
Sample read-only CSID680 receiver, packet, error, IRQ, crop, and linked- RDI state while its clocks are still running. Sample matching VFE680 write-master and IRQ state before disabling the writer. Keep the source branch's narrow activation signature: X1E80100, one-trio C-PHY RAW10, 3840x2640 or its 3844-pixel pre-crop form, and the exact packed VFE output geometry. Other SoCs, D-PHY routes, formats, and VFE Lite remain unchanged. This extracts the active CAMSS diagnostics from the hardware-qualified source commit and preserves its author. The old CCS sensor diagnostics are not copied: the qualified final tree replaced that unbound path with the standalone IMX681 driver. Link: 4d190bc Signed-off-by: Leon Silcott <leon@boasi.io>
Supersede the withdrawn sp11beta1 qualification carrier after restoring the active camera behavior identified by the final-tree parity audit. Signed-off-by: Leon Silcott <leon@boasi.io>
The qualified integration source applied its CSID680 keep-all state and VFE680 MIPI RAW write mode to every user of those shared blocks. Preserve the observed behavior for the X1E80100 C-PHY RAW10 IMX681 route while restoring the existing programming for all other formats and SoCs. Use the already exact transport and geometry signature for containment. For that route, keep crop/drop disabled unless the 3844-to-3840 horizontal crop is selected, explicitly program all drop engines to keep every sample, and select the MIPI RAW VFE write-client mode. Other routes retain their prior RDI flags, reset-value drop state, and VFE mode. This is an intentional guardrail relative to the qualified source, not a claim of cross-device equivalence. The SP11 path and a non-SP11 VFE680 RDI path both require hardware qualification before integration. Signed-off-by: Leon Silcott <leon@boasi.io>
The hardware-qualified Denali graph uses a 48 kHz, 16-bit, stereo pull ring with two 1920-byte periods. Restore those ALSA constraints and map only the page which contains the 3840-byte ring. Keep the existing generic push/pull allocation for every other card and topology. Fail closed if the protected Denali runtime reaches prepare with geometry other than the qualified values. Signed-off-by: Leon Silcott <leon@boasi.io>
The qualified SP11 playback path keeps its integrated pull graph running across ALSA STOP and reprepare, and uses the topology soft-pause module for pause and resume. Restore the exact zero-length parameters for instance 0x466b, register both completion events, and retain the measured 20 ms ramp, 25 ms downstream delay, and 5 ms completion margin. Limit the persistent lifecycle to Denali playback with both a protected profile and a pull endpoint. Keep the existing command correlation, uncertain-state quarantine, and final close handling around it. Signed-off-by: Leon Silcott <leon@boasi.io>
The hardware-qualified Denali protected profile uses the full WSA PA gain range and selects its operating point through UCM. Do not apply the provisional 0 dB PA cap to that profile. Keep the -3 dB digital-volume limit everywhere, and retain the upstream PA cap for every X1E80100 machine without the Denali speaker-feedback guard. Signed-off-by: Leon Silcott <leon@boasi.io>
The qualified integrated SP11 graph sends its pull-ring parameter through the graph client port. Use that route when protection is active so command correlation and ordering remain graph-scoped. Preserve the existing APM service route for generic unprotected push/pull users. Signed-off-by: Leon Silcott <leon@boasi.io>
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>
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>
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>
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>
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>
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>
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>
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>
|
Superseded by draft qualification PR #43, which uses the established |
Authoritative SP11 golden-parity ledger (3 September 2026)This supersedes any implication that the old aggregate candidate was complete. OpenCode independently challenged this mapping against the local golden, beta,
Dependency and integration order
Explicit exclusionUSB4 PR #24 is a separate post-golden experiment, not baseline parity. Its own Remaining path to beta
This ledger records coverage and gates; it is not approval to merge any open |
|
Pairwise commit-tree integration audit of the six reusable topic heads found one concrete conflict only: #37 vs #38 in |
Independent semantic-parity audit: TX DMIC, battery, platform profileA fresh tree-level audit plus an independent OpenCode review found no missing v19 runtime behavior in the three remaining topics:
Deterministic integration check: #37 and #38 have one expected textual conflict in This is source-semantic qualification only. Hardware qualification remains required before merging these topics into beta. |
Guardrail integration and exact relift checkpointCI-only PR #49 is merged into beta at Reusable topics #36, #37, #38, #40, #45, and #47 plus qualification PRs #46 and #48 were re-lifted onto that exact beta tip using force-with-lease. Before each update, the non-CI topic delta and author/date/message stream were hash-compared with the prior branch and found identical. The v8/v9 old-to-new tree comparisons contain only the validator script, so the existing hardware-test packages remain valid. All eight PRs are now individually clean and green under the new remote per-commit gate. No hardware-dependent topic was merged. |
Commit-message hygiene checkpointThe avoidable full-patch findings in #45, #40, and #47 were removed with message-only rewrites. Each final tree and author identity/date/subject stream is unchanged; the refreshed v8/v9 qualification trees are byte-identical to the built trees. All affected remote checks pass. The only remaining full-patch attribution warnings are the explicitly documented |
Status: test-only aggregate — do not merge
This draft PR is the review and hardware-test surface for the complete held
sp11beta2stack. It intentionally combines several independently reviewabletopic PRs so their runtime interactions can be qualified on real hardware.
Do not merge this aggregate PR. Do not merge an individual topic merely
because this branch compiles or because its CI is green. Each topic retains its
own behavior, provenance, dependency, and hardware gates.
Base:
sp11/ubuntu-qcom-x1e-7.2.y-betaateca65c109843c3245bc844ec8bc2adb149415bb6Candidate:
sp11/ubuntu-qcom-x1e-7.2.y-beta-qualificationat08249986a3f4efd7e0826c29e830601bfde928edCandidate tree:
da7479fbffe997cdc980a147b4cb929d71253185Included held topics
58fec71de633d0b7173d93639cc0b14b6ed71587b018fb27b26aac2cfb29The candidate also contains the provisional beta base topics already present at
eca65c109843, including display, USB resume, PSCI containment, direct touch,pen ABI, and the guarded IMX681 camera foundation. Their runtime behavior must
be retested because the aggregate exercises shared power, DSP, camera, input,
and suspend paths together.
The experimental USB4 branch and PR #24 are not included.
Behavior and provenance policy
ooaklee:sp11/integration-7.2.xat2cbd1ec3e2da.deviations; build success is not evidence of hardware equivalence.
leon@boasi.ioin this candidate.rewritten series remains held until the required contributor sign-off or
equivalent maintainer-approved attestation is recorded.
Software qualification
The exact candidate commit and tree above have completed the following:
git diff --check;commits with zero errors, warnings, or checks;
W=1builds of changed objects and representativeSP11/non-SP11 DTBs;
Image, modules, and DTB build;bindeb-pkgbuild containing 7,816 compressed modules andboth required Denali DTBs;
Ubuntu environment, with exact revision/tree provenance, four-package
closure, generated checksums, 7,816 modules, both Denali DTBs, and successful
lexr kernel inspect.The full Lexr run used Stubble boot-image mode to validate Lexr's package and
boot-image contract. Its small image package is structural evidence and must
not be installed as the hardware-test kernel.
Bootable source-built test package
Expected running release:
7.2.2-sp11beta2Package SHA-256:
Unsigned packaged
vmlinuz-7.2.2-sp11beta2SHA-256:The local transfer archive
sp11beta2-hardware-qualification.tarcontains thebootable packages, their checksum manifest, the qualification guide, and the
read-only collector. Its SHA-256 is:
The transfer archive does not contain the Lexr Stubble image.
Keep a known-good kernel and recovery route available. These local packages
are not distribution-signed; use the project's established signing process or
an explicitly configured unsigned-kernel test machine. Verify all package
checksums before installation and stop after reboot unless
uname -risexactly
7.2.2-sp11beta2.Hardware qualification checklist
Record the device variant, booted DTB, userspace image, exact
uname -r,pass/fail, reproduction steps, relevant logs, and known-good comparison for
every result.
reconnect, external display, repeated suspend/resume.
repeated suspend/resume.
and suspend-power behavior.
recovery, runtime PM, suspend/resume, and long-run error/taint check.
touch, daemon restart, recovery, and suspend/resume.
failure and clean retry, controls, CSID/VFE diagnostics, privacy LED,
libcamera, PipeWire/browser preview, suspend/resume.
and bypass failures; PDR; PA faults; clock ordering; suspend/resume.
VA-path regression, and suspend/resume.
plug/unplug, every profile, low-power cap, fan, CPU hotplug/policy teardown,
failures, and suspend/resume.
successful rollback to the known-good kernel.
driver before treating that shared-driver topic as upstream-ready.
Merge policy
This aggregate PR remains draft and must close without merge after it has
served its qualification purpose. Hardware evidence belongs here and should be
linked from the relevant topic PR.
Only an individual topic whose own dependency, behavior, provenance, SP11, and
non-SP11 gates have passed may leave draft state and merge into the beta branch.
After all approved topic PRs are merged in dependency order, reproduce and
compare the final beta tree against the qualified tree; any difference requires
an explicit audit and, where behavior could change, fresh qualification.