27 Oct
2022
27 Oct
'22
12:29 p.m.
On 10/27/2022 12:21 PM, Takashi Iwai wrote:
On Thu, 27 Oct 2022 10:23:25 +0200, Cezary Rojewski wrote:
--- a/sound/hda/hdac_stream.c +++ b/sound/hda/hdac_stream.c @@ -821,6 +821,27 @@ void snd_hdac_stream_drsm_enable(struct hdac_bus *bus, } EXPORT_SYMBOL_GPL(snd_hdac_stream_drsm_enable);
+/*
- snd_hdac_stream_wait_drsm - wait for HW to clear RSM for a stream
- @azx_dev: HD-audio core stream to await RSM for
- Returns 0 on success and -ETIMEDOUT upon a timeout.
- */
+int snd_hdac_stream_wait_drsm(struct hdac_stream *azx_dev) +{
- struct hdac_bus *bus = azx_dev->bus;
- u32 mask, reg;
- int ret;
- mask = 1 << azx_dev->index;
- ret = readb_poll_timeout(bus->drsmcap + AZX_REG_DRSM_CTL, reg, !(reg & mask), 250, 2000);
Remember that HD-audio bus doesn't always allow readb(). Tegra requires the aligned access, for example.
The readb_poll_timeout macro was updated to take care of that, https://lore.kernel.org/all/20221007084856.1638302-1-amadeuszx.slawinski@lin... so it should be fine?