diff options
author | Takashi Iwai <tiwai@suse.de> | 2020-01-20 13:41:27 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2020-01-20 13:42:15 +0300 |
commit | 4d024fe8f806e20e577cc934204c5784c7063293 (patch) | |
tree | 9dd9b778a0efa15469e0324b4ebddad7c68c1423 /sound/core/seq | |
parent | e5dbdcb31285a975d623d2bf2c9e7b2940489008 (diff) | |
download | linux-4d024fe8f806e20e577cc934204c5784c7063293.tar.xz |
ALSA: hda: Apply aligned MMIO access only conditionally
It turned out that the recent simplification of HD-audio bus access
helpers caused a regression on the virtual HD-audio device on QEMU
with ARM platforms. The driver got a CORB/RIRB timeout and couldn't
probe any codecs.
The essential difference that caused a problem was the enforced
aligned MMIO accesses by simplification. Since snd-hda-tegra driver
is enabled on ARM, it enables CONFIG_SND_HDA_ALIGNED_MMIO, which makes
the all HD-audio drivers using the aligned MMIO accesses. While this
is mandatory for snd-hda-tegra, it seems that snd-hda-intel on ARM
gets broken by this access pattern.
For addressing the regression, this patch introduces a new flag,
aligned_mmio, to hdac_bus object, and applies the aligned MMIO only
when this flag is set. This change affects only platforms with
CONFIG_SND_HDA_ALIGNED_MMIO set, i.e. mostly only for ARM platforms.
Unfortunately the patch became a big bigger than it should be, just
because the former calls didn't take hdac_bus object in the argument,
hence we had to extend the call patterns.
Fixes: 19abfefd4c76 ("ALSA: hda: Direct MMIO accesses")
BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1161152
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20200120104127.28985-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core/seq')
0 files changed, 0 insertions, 0 deletions