|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14, v6.14-rc7 |
|
| #
08ae0d61 |
| 10-Mar-2025 |
Bard Liao <[email protected]> |
soundwire: take in count the bandwidth of a prepared stream
When a stream's state is marked as prepared, it is ready for playback/capture. Therefore, we need to include the stream's bandwidth when w
soundwire: take in count the bandwidth of a prepared stream
When a stream's state is marked as prepared, it is ready for playback/capture. Therefore, we need to include the stream's bandwidth when we calculate the required bandwidth of a bus.
Fixes: 25befdf32aa40 ("soundwire: generic_bandwidth_allocation: count the bandwidth of active streams only") Signed-off-by: Bard Liao <[email protected]> Link: https://github.com/thesofproject/linux/issues/5334 Reviewed-by: Richard Fitzgerald <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc6, v6.14-rc5 |
|
| #
00f57195 |
| 27-Feb-2025 |
Pierre-Louis Bossart <[email protected]> |
soundwire: stream: special-case the bus compute_params() routine
For BPT support, we want to allocate the entire audio payload and bypass the allocation based on PCM/PDM parameters.
Signed-off-by:
soundwire: stream: special-case the bus compute_params() routine
For BPT support, we want to allocate the entire audio payload and bypass the allocation based on PCM/PDM parameters.
Signed-off-by: Pierre-Louis Bossart <[email protected]> Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Péter Ujfalusi <[email protected]> Reviewed-by: Liam Girdwood <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Tested-by: [email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1, v6.13, v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4 |
|
| #
25befdf3 |
| 18-Dec-2024 |
Bard Liao <[email protected]> |
soundwire: generic_bandwidth_allocation: count the bandwidth of active streams only
sdw_compute_group_params() should only count payload bandwidth of the active streams which is in the ENABLED and D
soundwire: generic_bandwidth_allocation: count the bandwidth of active streams only
sdw_compute_group_params() should only count payload bandwidth of the active streams which is in the ENABLED and DISABLED state in the bus. And add the payload bandwidth of the stream that calls sdw_compute_group_params() in sdw_prepare_stream().
Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Reviewed-by: Péter Ujfalusi <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
| #
168cdf9c |
| 18-Dec-2024 |
Bard Liao <[email protected]> |
SoundWire: pass stream to compute_params()
The stream parameter will be used in the follow up commit. No function change.
Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Ran
SoundWire: pass stream to compute_params()
The stream parameter will be used in the follow up commit. No function change.
Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Reviewed-by: Péter Ujfalusi <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
| #
366fd59f |
| 18-Dec-2024 |
Bard Liao <[email protected]> |
soundwire: generic_bandwidth_allocation: add lane in sdw_group_params
All active streams with the same parameters are grouped together and the params are stored in the sdw_group struct. We compute t
soundwire: generic_bandwidth_allocation: add lane in sdw_group_params
All active streams with the same parameters are grouped together and the params are stored in the sdw_group struct. We compute the required bandwidth for each group. However, each lane has individual bandwidth. Therefore, we should separate different lanes in different params groups. Add lane variable to separate params groups.
Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
| #
7a30292f |
| 18-Dec-2024 |
Bard Liao <[email protected]> |
soundwire: generic_bandwidth_allocation: select data lane
If a peripheral supports multi-lane, we can use data lane x to extend the bandwidth. The patch suggests to select data lane x where x > 0 wh
soundwire: generic_bandwidth_allocation: select data lane
If a peripheral supports multi-lane, we can use data lane x to extend the bandwidth. The patch suggests to select data lane x where x > 0 when bandwidth is not enough on data lane 0.
Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
| #
4a7927d5 |
| 18-Dec-2024 |
Bard Liao <[email protected]> |
soundwire: generic_bandwidth_allocation: check required freq accurately
Currently, we check curr_dr_freq roughly by "if (curr_dr_freq <= bus->params.bandwidth)" in sdw_compute_bus_params() and check
soundwire: generic_bandwidth_allocation: check required freq accurately
Currently, we check curr_dr_freq roughly by "if (curr_dr_freq <= bus->params.bandwidth)" in sdw_compute_bus_params() and check it accurately in sdw_select_row_col(). It works if we only support one freq. But, we need to check it accurately in sdw_select_row_col() to give it a chance to use a higher freq or use multi-lane.
Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
| #
cf44ae3d |
| 18-Dec-2024 |
Bard Liao <[email protected]> |
soundwire: generic_bandwidth_allocation: correct clk_freq check in sdw_select_row_col
The bits in Column 0 of Rows 0 to 47 are for control word and cannot be used for audio. In practice, entire Colu
soundwire: generic_bandwidth_allocation: correct clk_freq check in sdw_select_row_col
The bits in Column 0 of Rows 0 to 47 are for control word and cannot be used for audio. In practice, entire Column 0 is skipped.
Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
| #
3ddd303f |
| 18-Dec-2024 |
Bard Liao <[email protected]> |
Soundwire: generic_bandwidth_allocation: set frame shape on fly
We need to recalculate frame shape when sdw bus clock is changed. And need to make sure all Peripherals connected to the Manager suppo
Soundwire: generic_bandwidth_allocation: set frame shape on fly
We need to recalculate frame shape when sdw bus clock is changed. And need to make sure all Peripherals connected to the Manager support dynamic clock change.
Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
| #
fdd1faee |
| 18-Dec-2024 |
Pierre-Louis Bossart <[email protected]> |
soundwire: generic_bandwidth_allocation: skip DEPREPARED streams
We should not blindly walk through all the m_rt list, since it will have the side effect of accounting for deprepared streams.
This
soundwire: generic_bandwidth_allocation: skip DEPREPARED streams
We should not blindly walk through all the m_rt list, since it will have the side effect of accounting for deprepared streams.
This behavior is the result of the split implementation where the dailink hw_free() handles the stream state change and the bit allocation, and the dai hw_free() modifies the m_rt list. The bit allocation ends-up using m_rt entries in zombie state, no longer relevant but still used.
Signed-off-by: Pierre-Louis Bossart <[email protected]> Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Ranjani Sridharan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
| #
6bba2d3f |
| 18-Dec-2024 |
Bard Liao <[email protected]> |
soundwire: add lane field in sdw_port_runtime
Currently, lane_ctrl is always 0. Add a lane field in sdw_port_runtime to indicate the data lane of the data port. They are 0 by default.
Signed-off-by
soundwire: add lane field in sdw_port_runtime
Currently, lane_ctrl is always 0. Add a lane field in sdw_port_runtime to indicate the data lane of the data port. They are 0 by default.
Signed-off-by: Bard Liao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v6.13-rc3, v6.13-rc2, v6.13-rc1, v6.12, v6.12-rc7, v6.12-rc6, v6.12-rc5, v6.12-rc4, v6.12-rc3, v6.12-rc2, v6.12-rc1, v6.11, v6.11-rc7, v6.11-rc6, v6.11-rc5, v6.11-rc4, v6.11-rc3, v6.11-rc2, v6.11-rc1, v6.10, v6.10-rc7, v6.10-rc6, v6.10-rc5 |
|
| #
8e8c0dfc |
| 17-Jun-2024 |
Bard Liao <[email protected]> |
soundwire: generic_bandwidth_allocation: change port_bo parameter to pointer
Currently, we do port_bo += bps * ch in both inside and outside sdw_compute_master_ports(). We can pass port_bo as a poin
soundwire: generic_bandwidth_allocation: change port_bo parameter to pointer
Currently, we do port_bo += bps * ch in both inside and outside sdw_compute_master_ports(). We can pass port_bo as a pointer and only calculate port_bo in sdw_compute_master_ports(). Besides, different port could use different lanes and we can't just add port_bo based on total channels in a manager.
Signed-off-by: Bard Liao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v6.10-rc4, v6.10-rc3, v6.10-rc2, v6.10-rc1, v6.9, v6.9-rc7, v6.9-rc6, v6.9-rc5, v6.9-rc4, v6.9-rc3, v6.9-rc2, v6.9-rc1, v6.8, v6.8-rc7, v6.8-rc6, v6.8-rc5, v6.8-rc4, v6.8-rc3, v6.8-rc2, v6.8-rc1, v6.7, v6.7-rc8, v6.7-rc7, v6.7-rc6, v6.7-rc5, v6.7-rc4 |
|
| #
55d50ace |
| 27-Nov-2023 |
Bard Liao <[email protected]> |
soundwire: generic_bandwidth_allocation use bus->params.max_dr_freq
bus->params.max_dr_freq is calculated and set in sdw_bus_master_add(). We can use it directly instead of calculating it again.
Si
soundwire: generic_bandwidth_allocation use bus->params.max_dr_freq
bus->params.max_dr_freq is calculated and set in sdw_bus_master_add(). We can use it directly instead of calculating it again.
Signed-off-by: Bard Liao <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Rander Wang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v6.7-rc3, v6.7-rc2, v6.7-rc1, v6.6, v6.6-rc7, v6.6-rc6, v6.6-rc5, v6.6-rc4, v6.6-rc3, v6.6-rc2, v6.6-rc1, v6.5, v6.5-rc7, v6.5-rc6, v6.5-rc5, v6.5-rc4, v6.5-rc3, v6.5-rc2, v6.5-rc1, v6.4, v6.4-rc7, v6.4-rc6, v6.4-rc5 |
|
| #
6eedc227 |
| 02-Jun-2023 |
Charles Keepax <[email protected]> |
soundwire: bandwidth allocation: Remove pointless variable
The block_offset variable in _sdw_compute_port_params adds nothing either functionally or in terms of code clarity, remove it.
Reviewed-by
soundwire: bandwidth allocation: Remove pointless variable
The block_offset variable in _sdw_compute_port_params adds nothing either functionally or in terms of code clarity, remove it.
Reviewed-by: Pierre-Louis Bossart <[email protected]> Signed-off-by: Charles Keepax <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v6.4-rc4, v6.4-rc3, v6.4-rc2, v6.4-rc1, v6.3, v6.3-rc7, v6.3-rc6, v6.3-rc5, v6.3-rc4 |
|
| #
f346fdf9 |
| 21-Mar-2023 |
Vijendar Mukunda <[email protected]> |
soundwire: export sdw_compute_slave_ports() function
Export sdw_compute_slave_ports() function to use it in another soundwire manager module. Move sdw_transport_data structure to bus header file to
soundwire: export sdw_compute_slave_ports() function
Export sdw_compute_slave_ports() function to use it in another soundwire manager module. Move sdw_transport_data structure to bus header file to export sdw_compute_slave_ports() function.
Signed-off-by: Vijendar Mukunda <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Link: https://lore.kernel.org/lkml/[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v6.3-rc3 |
|
| #
9ddae9da |
| 15-Mar-2023 |
Richard Fitzgerald <[email protected]> |
soundwire: bandwidth allocation: Use hweight32() to calculate set bits
Replace the call to sdw_ch_mask_to_ch() with a call to hweight32().
sdw_ch_mask_to_ch() is counting the number of set bits. Th
soundwire: bandwidth allocation: Use hweight32() to calculate set bits
Replace the call to sdw_ch_mask_to_ch() with a call to hweight32().
sdw_ch_mask_to_ch() is counting the number of set bits. The hweight() family of functions already do this, and they have an advantage of using a bit-counting instruction if it is available on the target CPU. This also fixes a potential infinite loop bug in the implementation of sdw_ch_mask_to_ch().
Signed-off-by: Richard Fitzgerald <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v6.3-rc2, v6.3-rc1, v6.2, v6.2-rc8, v6.2-rc7, v6.2-rc6, v6.2-rc5, v6.2-rc4, v6.2-rc3, v6.2-rc2, v6.2-rc1, v6.1, v6.1-rc8, v6.1-rc7, v6.1-rc6, v6.1-rc5, v6.1-rc4, v6.1-rc3, v6.1-rc2, v6.1-rc1, v6.0, v6.0-rc7, v6.0-rc6, v6.0-rc5, v6.0-rc4, v6.0-rc3, v6.0-rc2, v6.0-rc1, v5.19, v5.19-rc8, v5.19-rc7, v5.19-rc6, v5.19-rc5, v5.19-rc4, v5.19-rc3, v5.19-rc2, v5.19-rc1, v5.18, v5.18-rc7, v5.18-rc6, v5.18-rc5, v5.18-rc4, v5.18-rc3, v5.18-rc2, v5.18-rc1, v5.17, v5.17-rc8, v5.17-rc7, v5.17-rc6, v5.17-rc5, v5.17-rc4, v5.17-rc3, v5.17-rc2, v5.17-rc1, v5.16, v5.16-rc8, v5.16-rc7, v5.16-rc6, v5.16-rc5, v5.16-rc4, v5.16-rc3, v5.16-rc2, v5.16-rc1, v5.15, v5.15-rc7, v5.15-rc6, v5.15-rc5, v5.15-rc4, v5.15-rc3, v5.15-rc2, v5.15-rc1, v5.14, v5.14-rc7, v5.14-rc6, v5.14-rc5, v5.14-rc4, v5.14-rc3, v5.14-rc2, v5.14-rc1, v5.13, v5.13-rc7, v5.13-rc6, v5.13-rc5, v5.13-rc4, v5.13-rc3, v5.13-rc2 |
|
| #
0531e6b6 |
| 11-May-2021 |
Pierre-Louis Bossart <[email protected]> |
soundwire: bandwidth allocation: improve error messages
In rare corner cases, we see an error with the log:
[ 838.297840] soundwire sdw-master-1: Compute bus params failed: -22
That's not very us
soundwire: bandwidth allocation: improve error messages
In rare corner cases, we see an error with the log:
[ 838.297840] soundwire sdw-master-1: Compute bus params failed: -22
That's not very useful, there can be two different error conditions with the same -EINVAL code provided to the caller.
Let's add better dev_err() messages to figure out what went wrong.
Signed-off-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Guennadi Liakhovetski <[email protected]> Signed-off-by: Bard Liao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v5.13-rc1, v5.12, v5.12-rc8, v5.12-rc7, v5.12-rc6, v5.12-rc5 |
|
| #
8f29bb83 |
| 23-Mar-2021 |
Pierre-Louis Bossart <[email protected]> |
soundwire: generic_allocation: fix confusion between group and packing
The existing code makes no sense, we multiply a channel number by zero (SDW_BLK_GRP_CNT_1), and the result is used to configure
soundwire: generic_allocation: fix confusion between group and packing
The existing code makes no sense, we multiply a channel number by zero (SDW_BLK_GRP_CNT_1), and the result is used to configure the block packing mode. Sampling grouping and channel packing are two separate concepts in SoundWire.
In addition, the bandwidth allocation allocates a vertical slice for each stream, which makes the use of the PER_CHANNEL packing mode irrelevant.
Let's use the proper definition for block packing mode (PER_PORT).
This change has no functional impact though since the net result is the same configuration of the DPN_BlockCtrl3 register, when implemented.
Reported-by: Bard Liao <[email protected]> Signed-off-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Rander Wang <[email protected]> Signed-off-by: Bard Liao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v5.12-rc4, v5.12-rc3, v5.12-rc2 |
|
| #
6ae435bd |
| 02-Mar-2021 |
Pierre-Louis Bossart <[email protected]> |
soundwire: generic_bandwidth_allocation: remove useless init
Cppcheck complains about two possible null pointer dereferences, but it's more like there are unnecessary initializations before walking
soundwire: generic_bandwidth_allocation: remove useless init
Cppcheck complains about two possible null pointer dereferences, but it's more like there are unnecessary initializations before walking through a list.
Signed-off-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Guennadi Liakhovetski <[email protected]> Reviewed-by: Rander Wang <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Signed-off-by: Bard Liao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
| #
0eb7c387 |
| 23-Mar-2021 |
Pierre-Louis Bossart <[email protected]> |
soundwire: bandwidth_allocation: add missing \n in dev_err()
We fixed a lot of warnings in 2019 but the magic of copy-paste keeps adding new ones...
Signed-off-by: Pierre-Louis Bossart <pierre-loui
soundwire: bandwidth_allocation: add missing \n in dev_err()
We fixed a lot of warnings in 2019 but the magic of copy-paste keeps adding new ones...
Signed-off-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Rander Wang <[email protected]> Reviewed-by: Guennadi Liakhovetski <[email protected]> Signed-off-by: Bard Liao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v5.12-rc1, v5.12-rc1-dontuse, v5.11, v5.11-rc7, v5.11-rc6, v5.11-rc5, v5.11-rc4, v5.11-rc3, v5.11-rc2, v5.11-rc1, v5.10, v5.10-rc7, v5.10-rc6, v5.10-rc5, v5.10-rc4, v5.10-rc3, v5.10-rc2, v5.10-rc1, v5.9, v5.9-rc8, v5.9-rc7 |
|
| #
5ec3215e |
| 23-Sep-2020 |
Dan Carpenter <[email protected]> |
soundwire: remove an unnecessary NULL check
The "bus" pointer isn't NULL so the address to a non-zero offset in middle of "bus" cannot be NULL. Delete the NULL check.
Signed-off-by: Dan Carpenter
soundwire: remove an unnecessary NULL check
The "bus" pointer isn't NULL so the address to a non-zero offset in middle of "bus" cannot be NULL. Delete the NULL check.
Signed-off-by: Dan Carpenter <[email protected]> Link: https://lore.kernel.org/r/20200923083235.GB1454948@mwanda Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v5.9-rc6 |
|
| #
dd87a72a |
| 20-Sep-2020 |
Pierre-Louis Bossart <[email protected]> |
soundwire: enable Data Port test modes
Test modes are required for all SoundWire IP, and help debug integration issues. In theory each port can be configured with a different mode but to simplify th
soundwire: enable Data Port test modes
Test modes are required for all SoundWire IP, and help debug integration issues. In theory each port can be configured with a different mode but to simplify this patch only offers separate configurations for the Master and Slave ports - this covers 99% of the intended cases during platform integration.
The test mode value is set via platform-specific ways.
Signed-off-by: Pierre-Louis Bossart <[email protected]> Reviewed-by: Guennadi Liakhovetski <[email protected]> Reviewed-by: Rander Wang <[email protected]> Signed-off-by: Bard Liao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|
|
Revision tags: v5.9-rc5 |
|
| #
9026118f |
| 08-Sep-2020 |
Bard Liao <[email protected]> |
soundwire: Add generic bandwidth allocation algorithm
This algorithm computes bus parameters like clock frequency, frame shape and port transport parameters based on active stream(s) running on the
soundwire: Add generic bandwidth allocation algorithm
This algorithm computes bus parameters like clock frequency, frame shape and port transport parameters based on active stream(s) running on the bus.
Developers can also implement their own .compute_params() callback for specific resource management algorithm, and set if before calling sdw_add_bus_master()
Credits: this patch is based on an earlier internal contribution by Vinod Koul, Sanyog Kale, Shreyas Nc and Hardik Shah. All hard-coded values were removed from the initial contribution to use BIOS information instead.
Signed-off-by: Bard Liao <[email protected]> Acked-by: Jaroslav Kysela <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
show more ...
|