All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Subhransu S. Prusty" <subhransu.s.prusty@intel.com>
To: alsa-devel@alsa-project.org
Cc: lgirdwood@gmail.com, dri-devel@lists.freedesktop.org,
	patches.audio@intel.com, broonie@kernel.org,
	Daniel Vetter <daniel.vetter@intel.com>,
	Vinod Koul <vinod.koul@intel.com>,
	"Subhransu S. Prusty" <subhransu.s.prusty@intel.com>
Subject: [PATCH v2 05/14] ALSA: pcm: Add DRM helper to set constraint for format
Date: Fri,  4 Dec 2015 02:38:53 +0530	[thread overview]
Message-ID: <1449176942-3441-5-git-send-email-subhransu.s.prusty@intel.com> (raw)
In-Reply-To: <1449176942-3441-1-git-send-email-subhransu.s.prusty@intel.com>

Setting the constraint format based on ELD was missing bit in
the sound/core pcm drm. Added with this patch.

Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
---
 sound/core/pcm_drm_eld.c | 42 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)

diff --git a/sound/core/pcm_drm_eld.c b/sound/core/pcm_drm_eld.c
index e70379f..0c5653e 100644
--- a/sound/core/pcm_drm_eld.c
+++ b/sound/core/pcm_drm_eld.c
@@ -20,11 +20,49 @@ static const unsigned int eld_rates[] = {
 	192000,
 };
 
+static unsigned int sad_format(const u8 *sad)
+{
+	return ((sad[0] >> 0x3) & 0x1f);
+}
+
+static unsigned int sad_sample_bits_lpcm(const u8 *sad)
+{
+	return (sad[2] & 7);
+}
+
 static unsigned int sad_max_channels(const u8 *sad)
 {
 	return 1 + (sad[0] & 7);
 }
 
+static int eld_limit_formats(struct snd_pcm_runtime *runtime, void *eld)
+{
+	u64 formats = SNDRV_PCM_FMTBIT_S16_LE;
+	int i;
+	const u8 *sad, *eld_buf = eld;
+
+	sad = drm_eld_sad(eld_buf);
+	if (!sad)
+		goto format_constraint;
+
+	for (i = drm_eld_sad_count(eld_buf); i > 0; i--, sad += 3) {
+		if (sad_format(sad) == 1) { /* AUDIO_CODING_TYPE_LPCM */
+
+			/* 20 bit */
+			if (sad_sample_bits_lpcm(sad) & 0x2)
+				formats |= SNDRV_PCM_FMTBIT_S32_LE;
+
+			/* 24 bit */
+			if (sad_sample_bits_lpcm(sad) & 0x4)
+				formats |= SNDRV_PCM_FMTBIT_S24_LE;
+		}
+	}
+
+format_constraint:
+	return snd_pcm_hw_constraint_mask64(runtime, SNDRV_PCM_HW_PARAM_FORMAT,
+				formats);
+}
+
 static int eld_limit_rates(struct snd_pcm_hw_params *params,
 			   struct snd_pcm_hw_rule *rule)
 {
@@ -93,7 +131,9 @@ int snd_pcm_hw_constraint_eld(struct snd_pcm_runtime *runtime, void *eld)
 	ret = snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS,
 				  eld_limit_channels, eld,
 				  SNDRV_PCM_HW_PARAM_RATE, -1);
+	if (ret < 0)
+		return ret;
 
-	return ret;
+	return eld_limit_formats(runtime, eld);
 }
 EXPORT_SYMBOL_GPL(snd_pcm_hw_constraint_eld);
-- 
1.9.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2015-12-03 21:08 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-03 21:02 [PATCH v2 00/14] ASoC: hdac_hdmi: Add DP & notification support Subhransu S. Prusty
2015-12-03 21:08 ` [PATCH v2 01/14] ASoC: hdac_hdmi: Fix to check num nodes correctly Subhransu S. Prusty
2015-12-03 21:08   ` [PATCH v2 02/14] ASoC: hdac_hdmi: Fix to warn instead of err for no connected nids Subhransu S. Prusty
2015-12-03 21:08   ` [PATCH v2 03/14] ASoC: hdac_hdmi - Use list to add pins and converters Subhransu S. Prusty
2015-12-03 15:44     ` Takashi Iwai
2015-12-04 10:16       ` Subhransu S. Prusty
2015-12-03 21:08   ` [PATCH v2 04/14] ASoC: hdac_hdmi: Add hotplug notification and read eld Subhransu S. Prusty
2015-12-03 15:51     ` Takashi Iwai
2015-12-04 10:16       ` Subhransu S. Prusty
2015-12-03 21:08   ` Subhransu S. Prusty [this message]
2015-12-03 15:57     ` [PATCH v2 05/14] ALSA: pcm: Add DRM helper to set constraint for format Takashi Iwai
2015-12-04 11:08       ` Subhransu S. Prusty
2015-12-04  5:59         ` Takashi Iwai
2015-12-05 11:27           ` Subhransu S. Prusty
2015-12-05  8:12             ` Takashi Iwai
2015-12-05 14:05               ` Subhransu S. Prusty
2015-12-05  9:05                 ` Takashi Iwai
2015-12-03 21:08   ` [PATCH v2 06/14] ASoC: hdac_hdmi: Apply constraints based on ELD Subhransu S. Prusty
2015-12-03 21:08   ` [PATCH v2 07/14] ASoC: hdac_hdmi: Enable DP1.2 and all converters/pins Subhransu S. Prusty
2016-02-15 20:58     ` Applied "ASoC: hdac_hdmi: Enable DP1.2 and all converters/pins" to the asoc tree Mark Brown
2015-12-03 21:08   ` [PATCH v2 08/14] ASoC: hdac_hdmi - create dais based on number of streams Subhransu S. Prusty
2015-12-03 16:13     ` Takashi Iwai
2015-12-03 21:08   ` [PATCH v2 09/14] ASoC: hdac_hdmi: Create widget/route based on nodes enumerated Subhransu S. Prusty
2015-12-03 21:08   ` [PATCH v2 10/14] ASoC: hdac_hdmi: Assign pin for stream based on dapm connection Subhransu S. Prusty
2015-12-03 21:08   ` [PATCH v2 11/14] drm/edid: Add API to help find connection type Subhransu S. Prusty
2015-12-03 16:16     ` Takashi Iwai
2015-12-04 10:30       ` Subhransu S. Prusty
2015-12-03 21:09   ` [PATCH v2 12/14] ASoC: hdac_hdmi: Add infoframe support for dp audio Subhransu S. Prusty
2015-12-03 17:13     ` Daniel Stone
2015-12-04 10:32       ` Subhransu S. Prusty
2015-12-03 21:09   ` [PATCH v2 13/14] ASoC: hdac_hdmi: Add codec suspend/resume handler Subhransu S. Prusty
2015-12-03 21:09   ` [PATCH v2 14/14] ASoC: hdac_hdmi: Fix to keep display active while enumerating codec Subhransu S. Prusty
2016-01-05 23:07   ` Applied "ASoC: hdac_hdmi: Fix to check num nodes correctly" to the asoc tree Mark Brown

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=1449176942-3441-5-git-send-email-subhransu.s.prusty@intel.com \
    --to=subhransu.s.prusty@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=lgirdwood@gmail.com \
    --cc=patches.audio@intel.com \
    --cc=vinod.koul@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.