From: Sameer Pujar <spujar@nvidia.com>
To: <perex@perex.cz>, <tiwai@suse.com>
Cc: <thierry.reding@gmail.com>, <jonathanh@nvidia.com>,
<linux-tegra@vger.kernel.org>, <alsa-devel@alsa-project.org>,
<linux-kernel@vger.kernel.org>, <sharadg@nvidia.com>,
<mkumard@nvidia.com>, <viswanathl@nvidia.com>,
<rlokhande@nvidia.com>, <dramesh@nvidia.com>,
<atalambedu@nvidia.com>, Sameer Pujar <spujar@nvidia.com>
Subject: [PATCH 3/3] ALSA: hda/tegra: workaround playback failure on Tegra194
Date: Mon, 4 May 2020 13:46:16 +0530 [thread overview]
Message-ID: <1588580176-2801-4-git-send-email-spujar@nvidia.com> (raw)
In-Reply-To: <1588580176-2801-1-git-send-email-spujar@nvidia.com>
Tegra194 has 4 SDO lines and with this configuration playback fails
for 44.1K/48K, 2-channel and 16-bps. It results in below print,
"aplay: pcm_write:2011: write error: Input/output error"
Below relation is used to derive stripe control and is referenced
from HD Audio Specification: Revision 1.0a.
{ ((num_channels * bits_per_sample) / number of SDOs) >= 8 }
Due to a legacy HW design problem, playback issue is hit while using
a stripe value resulting from above formula when ratio is '8'. Thus
it is recommended that the ratio must be greater than '8'. Since the
number of SDO lines is in powers of 2, next available ratio '16' is
used as a limiting factor on Tegra194 to workaround the problem.
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
---
sound/pci/hda/hda_tegra.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/sound/pci/hda/hda_tegra.c b/sound/pci/hda/hda_tegra.c
index 45dc544..0cc5fad 100644
--- a/sound/pci/hda/hda_tegra.c
+++ b/sound/pci/hda/hda_tegra.c
@@ -364,6 +364,23 @@ static int hda_tegra_first_init(struct azx *chip, struct platform_device *pdev)
/* initialize chip */
azx_init_chip(chip, 1);
+ /*
+ * Playback (for 44.1K/48K, 2-channel, 16-bps) fails with
+ * 4 SDO lines due to legacy design limitation. Following
+ * is, from HD Audio Specification (Revision 1.0a), used to
+ * control striping of the stream across multiple SDO lines
+ * for sample rates <= 48K.
+ *
+ * { ((num_channels * bits_per_sample) / number of SDOs) >= 8 }
+ *
+ * Due to legacy design issue it is recommended that above
+ * ratio must be greater than 8. Since number of SDO lines is
+ * in powers of 2, next available ratio is 16 which can be
+ * used as a limiting factor here.
+ */
+ if (of_device_is_compatible(np, "nvidia,tegra194-hda"))
+ chip->bus.core.sdo_limit = 16;
+
/* codec detection */
if (!bus->codec_mask) {
dev_err(card->dev, "no codecs found!\n");
--
2.7.4
next prev parent reply other threads:[~2020-05-04 8:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-04 8:16 [PATCH 0/3] Tegra194 HW Fixes Sameer Pujar
2020-05-04 8:16 ` [PATCH 1/3] ALSA: hda/tegra: correct number of SDO lines for Tegra194 Sameer Pujar
2020-05-04 8:16 ` [PATCH 2/3] ALSA: hda: add member to store ratio for stripe control Sameer Pujar
2020-05-04 8:16 ` Sameer Pujar [this message]
2020-05-04 8:29 ` [PATCH 0/3] Tegra194 HW Fixes Takashi Iwai
2020-05-04 8:35 ` Sameer Pujar
2020-05-04 8:48 ` Sameer Pujar
2020-05-04 9:53 ` Takashi Iwai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1588580176-2801-4-git-send-email-spujar@nvidia.com \
--to=spujar@nvidia.com \
--cc=alsa-devel@alsa-project.org \
--cc=atalambedu@nvidia.com \
--cc=dramesh@nvidia.com \
--cc=jonathanh@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mkumard@nvidia.com \
--cc=perex@perex.cz \
--cc=rlokhande@nvidia.com \
--cc=sharadg@nvidia.com \
--cc=thierry.reding@gmail.com \
--cc=tiwai@suse.com \
--cc=viswanathl@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®