summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBard Liao <yung-chuan.liao@linux.intel.com>2024-12-18 11:01:55 +0300
committerVinod Koul <vkoul@kernel.org>2024-12-23 09:30:34 +0300
commit25befdf32aa407ac21d8b2aa1257ff666fb783b2 (patch)
tree9b55e38d8f6a685f8f874d261bb633aa1dc1eda9 /drivers
parent168cdf9cdef232225f6b6c617fd347b4d1c4a7d7 (diff)
downloadlinux-25befdf32aa407ac21d8b2aa1257ff666fb783b2.tar.xz
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 <yung-chuan.liao@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Link: https://lore.kernel.org/r/20241218080155.102405-15-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/soundwire/generic_bandwidth_allocation.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/soundwire/generic_bandwidth_allocation.c b/drivers/soundwire/generic_bandwidth_allocation.c
index 062e7488b226..59965f43c2fb 100644
--- a/drivers/soundwire/generic_bandwidth_allocation.c
+++ b/drivers/soundwire/generic_bandwidth_allocation.c
@@ -188,6 +188,19 @@ static int sdw_compute_group_params(struct sdw_bus *bus,
}
list_for_each_entry(m_rt, &bus->m_rt_list, bus_node) {
+ if (m_rt->stream == stream) {
+ /* Only runtime during prepare should be added */
+ if (stream->state != SDW_STREAM_CONFIGURED)
+ continue;
+ } else {
+ /*
+ * Include runtimes with running (ENABLED state) and paused (DISABLED state)
+ * streams
+ */
+ if (m_rt->stream->state != SDW_STREAM_ENABLED &&
+ m_rt->stream->state != SDW_STREAM_DISABLED)
+ continue;
+ }
list_for_each_entry(p_rt, &m_rt->port_list, port_node) {
rate = m_rt->stream->params.rate;
bps = m_rt->stream->params.bps;