• Takashi Iwai's avatar
    ALSA: hda: Apply aligned MMIO access only conditionally · 4d024fe8
    Takashi Iwai authored
    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: 19abfefd ("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.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    4d024fe8
hdaudio.h 20.8 KB