diff options
author | paulhsia <paulhsia@chromium.org> | 2019-12-11 10:23:06 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-12-11 16:09:36 +0000 |
commit | 8d3f9ba350137a3f423a4241067cf96762e518bf (patch) | |
tree | 99ad09ae74c7e95d06c23d5c62af6515bef48e4c | |
parent | 65588b25351e21a261127f2987ca76a914e8457c (diff) | |
download | crosvm-8d3f9ba350137a3f423a4241067cf96762e518bf.tar crosvm-8d3f9ba350137a3f423a4241067cf96762e518bf.tar.gz crosvm-8d3f9ba350137a3f423a4241067cf96762e518bf.tar.bz2 crosvm-8d3f9ba350137a3f423a4241067cf96762e518bf.tar.lz crosvm-8d3f9ba350137a3f423a4241067cf96762e518bf.tar.xz crosvm-8d3f9ba350137a3f423a4241067cf96762e518bf.tar.zst crosvm-8d3f9ba350137a3f423a4241067cf96762e518bf.zip |
ac97: bus_master: Check pi_info before warm reset
According to ac97 spec, warm reset is specified to no-op when the device is running. We should ignore it while the device is recording audio as well. BUG=chromium:1026538 TEST=Build Change-Id: I64be922149c90be9a7a8669ef6d56591e6de632b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1960058 Reviewed-by: Dylan Reid <dgreid@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Chih-Yang Hsia <paulhsia@chromium.org>
-rw-r--r-- | devices/src/pci/ac97_bus_master.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/devices/src/pci/ac97_bus_master.rs b/devices/src/pci/ac97_bus_master.rs index 23aec91..d3d2f85 100644 --- a/devices/src/pci/ac97_bus_master.rs +++ b/devices/src/pci/ac97_bus_master.rs @@ -447,7 +447,9 @@ impl Ac97BusMaster { if new_glob_cnt & GLOB_CNT_WARM_RESET != 0 { // Check if running and if so, ignore. Warm reset is specified to no-op when the device // is playing or recording audio. - if !self.po_info.thread_run.load(Ordering::Relaxed) { + if !self.po_info.thread_run.load(Ordering::Relaxed) + && !self.pi_info.thread_run.load(Ordering::Relaxed) + { self.stop_all_audio(); let mut regs = self.regs.lock(); regs.glob_cnt = new_glob_cnt & !GLOB_CNT_WARM_RESET; // Auto-cleared reset bit. |