-
Notifications
You must be signed in to change notification settings - Fork 140
[RFC] soundwire: add runtime BPT support #5604
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: topic/sof-dev
Are you sure you want to change the base?
Conversation
We should get as much as bandwidth for the BPT stream. Signed-off-by: Bard Liao <[email protected]>
The DP0 (BPT) params are computed in sdw_compute_dp0_port_params(). We should exclude the BPT stream when calculating the audio streams. Signed-off-by: Bard Liao <[email protected]>
We just need to conunt the audio stream bandwidth and BRA stream will use the remaining bandwidth. Signed-off-by: Bard Liao <[email protected]>
colume The existing code assumes the column number will not change, but it could change if curr_dr_freq changes. Calculate the new column number before checking the bandwidth to make the checking be more accurate. Signed-off-by: Bard Liao <[email protected]>
To allow BPT and audio stream work simultaneously, we need to record the hstop of the BPT stream. And use column bpt_hstop + 1 to the last column for audio streams. No function changed since bus->bpt_hstop is set to bus->params.col - 1 for now. Will update bus->audio_stream_hstart in the follow up commit. Signed-off-by: Bard Liao <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements runtime BPT (Bulk Point-to-Point) stream support for SoundWire, enabling firmware downloads while audio streams are active. The changes calculate available columns in SoundWire frames and allocate them to BPT streams on a first-come, first-served basis, with a reservation of 2 columns for audio streams when possible.
Key changes:
- Modified bandwidth calculation to exclude BPT streams and use remaining available bandwidth
- Added
bpt_hstopfield to track BPT stream column allocation - Updated frame column allocation logic to dynamically reserve space for audio streams
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| include/linux/soundwire/sdw.h | Added bpt_hstop field to track BPT stream column boundaries |
| drivers/soundwire/stream.c | Excluded BPT streams from bandwidth calculations during prepare/deprepare |
| drivers/soundwire/intel_ace2x.c | Updated to use bpt_hstop instead of total columns for BPT buffer calculations |
| drivers/soundwire/generic_bandwidth_allocation.c | Implemented dynamic column allocation logic with BPT stream filtering and reservation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| * @stream_refcount: number of streams currently using this bus | ||
| * @btp_stream_refcount: number of BTP streams currently using this bus (should | ||
| * be zero or one, multiple streams per link is not supported). | ||
| * @bpt_hstop: The hstop of the BPT stream. |
Copilot
AI
Nov 26, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent terminology: comment uses 'hstop' (without underscore) while field name is 'bpt_hstop' (with underscore). Also, line 986 above uses 'BTP' while this and line 989 use 'BPT'. The terminology should be consistent throughout.
| * @bpt_hstop: The hstop of the BPT stream. | |
| * @bpt_hstop: The bpt_hstop of the BTP stream. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BPT is the right terminology. Also hstop is a terminology of SoundWire. I will leave it as it is.
484eb9e to
f0c9b03
Compare
Update bus->bpt_hstop to record the hstop of the BPT stream. And return -EAGAIN when there is no bandwidth for the BPT stream. Signed-off-by: Bard Liao <[email protected]>
When a BRA stream is running, we should subtract the columns that is used by the BRA stream in bandwidth calculation. Signed-off-by: Bard Liao <[email protected]>
Now the SoundWire BPT stream and the audio stream can share the SoundWire bus bandwidth. However, it is still not allowed to have more than 1 BPT stream running simultaneously. Signed-off-by: Bard Liao <[email protected]>
f0c9b03 to
7a5ec92
Compare
The driver may want to use BPT stream to download the firmware while an audio stream is running. This series calculates the available columns in a SoundWire frame and use them for the BPT stream. The streams are on on a first-come, first-served basis but will reserve 2 columns for the audio stream if possible. That should apply to most cases.