summaryrefslogtreecommitdiffstats
path: root/sound/hda/hdac_bus.c
diff options
context:
space:
mode:
authorSameer Pujar <spujar@nvidia.com>2020-08-19 21:02:10 +0530
committerTakashi Iwai <tiwai@suse.de>2020-08-19 17:37:06 +0200
commitb90b925fd52c75ee7531df739d850a1f7c58ef06 (patch)
treeb98f35f4bd2e2b318c7750a694d073a214209f99 /sound/hda/hdac_bus.c
parente17f02d0559c174cf1f6435e45134490111eaa37 (diff)
downloadlinux-b90b925fd52c75ee7531df739d850a1f7c58ef06.tar.gz
linux-b90b925fd52c75ee7531df739d850a1f7c58ef06.tar.bz2
linux-b90b925fd52c75ee7531df739d850a1f7c58ef06.zip
ALSA: hda: avoid reset of sdo_limit
By default 'sdo_limit' is initialized with a default value of '8' as per spec. This is overridden in cases where a different value is required. However this is getting reset when snd_hdac_bus_init_chip() is called again, which happens during runtime PM cycle. Avoid this reset by moving 'sdo_limit' setup to 'snd_hdac_bus_init()' function which would be called only once. Fixes: 67ae482a59e9 ("ALSA: hda: add member to store ratio for stripe control") Cc: <stable@vger.kernel.org> Signed-off-by: Sameer Pujar <spujar@nvidia.com> Link: https://lore.kernel.org/r/1597851130-6765-1-git-send-email-spujar@nvidia.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/hda/hdac_bus.c')
-rw-r--r--sound/hda/hdac_bus.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sound/hda/hdac_bus.c b/sound/hda/hdac_bus.c
index 09ddab5f5cae..9766f6af8743 100644
--- a/sound/hda/hdac_bus.c
+++ b/sound/hda/hdac_bus.c
@@ -46,6 +46,18 @@ int snd_hdac_bus_init(struct hdac_bus *bus, struct device *dev,
INIT_LIST_HEAD(&bus->hlink_list);
init_waitqueue_head(&bus->rirb_wq);
bus->irq = -1;
+
+ /*
+ * Default value of '8' is as per the HD audio specification (Rev 1.0a).
+ * Following relation is used to derive STRIPE control value.
+ * For sample rate <= 48K:
+ * { ((num_channels * bits_per_sample) / number of SDOs) >= 8 }
+ * For sample rate > 48K:
+ * { ((num_channels * bits_per_sample * rate/48000) /
+ * number of SDOs) >= 8 }
+ */
+ bus->sdo_limit = 8;
+
return 0;
}
EXPORT_SYMBOL_GPL(snd_hdac_bus_init);