Commit 62ada17a authored by Bard Liao's avatar Bard Liao Committed by Vinod Koul
Browse files

soundwire: only compute port params in specific stream states

Currently, sdw_compute_master_ports() is blindly called for every single
Manager runtime. However, we should not take into account the stream's
bandwidth if the stream is just allocated or already deprepared.

Fixes: 25befdf3 ("soundwire: generic_bandwidth_allocation: count the bandwidth of active streams only")
Link: https://github.com/thesofproject/linux/issues/5398


Signed-off-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: default avatarPéter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20250508062029.6596-1-yung-chuan.liao@linux.intel.com


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent d028b57b
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -204,6 +204,13 @@ static void _sdw_compute_port_params(struct sdw_bus *bus,
			port_bo = 1;

			list_for_each_entry(m_rt, &bus->m_rt_list, bus_node) {
				/*
				 * Only runtimes with CONFIGURED, PREPARED, ENABLED, and DISABLED
				 * states should be included in the bandwidth calculation.
				 */
				if (m_rt->stream->state > SDW_STREAM_DISABLED ||
				    m_rt->stream->state < SDW_STREAM_CONFIGURED)
					continue;
				sdw_compute_master_ports(m_rt, &params[i], &port_bo, hstop);
			}