diff options
Diffstat (limited to '0002-soundwire-intel-Initialize-clock-stop-timeout.patch')
-rw-r--r-- | 0002-soundwire-intel-Initialize-clock-stop-timeout.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/0002-soundwire-intel-Initialize-clock-stop-timeout.patch b/0002-soundwire-intel-Initialize-clock-stop-timeout.patch new file mode 100644 index 0000000..ded86ff --- /dev/null +++ b/0002-soundwire-intel-Initialize-clock-stop-timeout.patch @@ -0,0 +1,39 @@ +From fe7004128c90077116d07de74ee43ad1270ce3e7 Mon Sep 17 00:00:00 2001 +From: Sjoerd Simons <sjoerd@collabora.com> +Date: Sat, 8 Oct 2022 21:57:51 +0200 +Subject: [PATCH 2/6] 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> +For: https://github.com/thesofproject/linux/issues/3777 +--- + drivers/soundwire/intel.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c +index af6c1a93372d..002bc26b525e 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); + +-- +2.38.1 + |