diff options
Diffstat (limited to '0103-soundwire_intel_Initialize_clock_stop_timeout.patch')
-rw-r--r-- | 0103-soundwire_intel_Initialize_clock_stop_timeout.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/0103-soundwire_intel_Initialize_clock_stop_timeout.patch b/0103-soundwire_intel_Initialize_clock_stop_timeout.patch new file mode 100644 index 000000000000..4cbec78e10dd --- /dev/null +++ b/0103-soundwire_intel_Initialize_clock_stop_timeout.patch @@ -0,0 +1,34 @@ +From f4e799545c0fc46a5899853f60776adc8671776c Mon Sep 17 00:00:00 2001 +From: Sjoerd Simons <sjoerd@collabora.com> +Date: Sat, 8 Oct 2022 21:57:51 +0200 +Subject: [PATCH] soundwire: intel: Initialize clock stop timeout + +The bus->clk_stop_timeout member is only initialized to a non-zero value +during the codec driver probe. This can lead to corner cases where this +value remains pegged at zero when the bus suspends, which results in an +endless loop in sdw_bus_wait_for_clk_prep_deprep(). + +Corner cases include configurations with no codecs described in the +firmware, or delays in probing codec drivers. + +Initializing the default timeout to the smallest non-zero value avoid this +problem and allows for the existing logic to be preserved: the +bus->clk_stop_timeout is set as the maximum required by all codecs +connected on the bus. + +Signed-off-by: Sjoerd Simons <sjoerd@collabora.com> +--- + drivers/soundwire/intel.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c +index af6c1a93372d90..002bc26b525e87 100644 +--- a/drivers/soundwire/intel.c ++++ b/drivers/soundwire/intel.c +@@ -1307,6 +1307,7 @@ static int intel_link_probe(struct auxiliary_device *auxdev, + cdns->msg_count = 0; + + bus->link_id = auxdev->id; ++ bus->clk_stop_timeout = 1; + + sdw_cdns_probe(cdns); |