dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: "Subhransu S. Prusty" <subhransu.s.prusty@intel.com>
Cc: alsa-devel@alsa-project.org, patches.audio@intel.com,
	lgirdwood@gmail.com, dri-devel@lists.freedesktop.org,
	broonie@kernel.org, Daniel Vetter <daniel.vetter@intel.com>,
	Vinod Koul <vinod.koul@intel.com>
Subject: Re: [PATCH v2 08/14] ASoC: hdac_hdmi - create dais based on number of streams
Date: Thu, 03 Dec 2015 17:13:58 +0100	[thread overview]
Message-ID: <s5hfuzjse61.wl-tiwai@suse.de> (raw)
In-Reply-To: <1449176942-3441-8-git-send-email-subhransu.s.prusty@intel.com>

On Thu, 03 Dec 2015 22:08:56 +0100,
Subhransu S. Prusty wrote:
> 
> A stream is mapped to a converter. So based on the converters
> queried, dais are created.
> 
> The streams can be dynamically routed to any converter. For
> now it is mapped statically. The dynamic mapping of stream
> to converter will be added when required.
> 
> Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com>
> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
> ---
>  sound/soc/codecs/hdac_hdmi.c | 124 ++++++++++++++++++++++++++++++++-----------
>  1 file changed, 92 insertions(+), 32 deletions(-)
> 
> diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c
> index 325d22b..83248ad 100644
> --- a/sound/soc/codecs/hdac_hdmi.c
> +++ b/sound/soc/codecs/hdac_hdmi.c
> @@ -29,6 +29,8 @@
>  #include <sound/pcm_drm_eld.h>
>  #include "../../hda/local.h"
>  
> +#define NAME_SIZE	32
> +
>  #define AMP_OUT_MUTE		0xb080
>  #define AMP_OUT_UNMUTE		0xb000
>  #define PIN_OUT			(AC_PINCTL_OUT_EN)
> @@ -640,11 +642,84 @@ static void hdac_hdmi_skl_enable_dp12(struct hdac_device *hdac)
>  
>  }
>  
> +static struct snd_soc_dai_ops hdmi_dai_ops = {
> +	.startup = hdac_hdmi_pcm_open,
> +	.shutdown = hdac_hdmi_pcm_close,
> +	.hw_params = hdac_hdmi_set_hw_params,
> +	.prepare = hdac_hdmi_playback_prepare,
> +	.hw_free = hdac_hdmi_playback_cleanup,
> +};
> +
> +static int hdac_hdmi_create_dais(struct hdac_device *hdac,
> +		struct snd_soc_dai_driver **dais,
> +		struct hdac_hdmi_priv *hdmi, int num_dais)
> +{
> +	struct snd_soc_dai_driver *hdmi_dais;
> +	struct hdac_hdmi_cvt *cvt;
> +	char name[NAME_SIZE], dai_name[NAME_SIZE];
> +	int i = 0, j;
> +	u32 rates, bps;
> +	unsigned int rate_max = 384000, rate_min = 8000;
> +	u64 formats;
> +	int ret;
> +	static unsigned int rate_pcm[] = {
> +		8000, 11025, 16000, 22050, 32000, 44100, 48000, 88200,
> +		96000, 176400, 192000, 384000
> +	};
> +
> +	hdmi_dais = devm_kzalloc(&hdac->dev, (sizeof(*hdmi_dais) * num_dais),
> +			GFP_KERNEL);
> +	if (!hdmi_dais)
> +		return -ENOMEM;
> +
> +	list_for_each_entry(cvt, &hdmi->cvt_list, head) {
> +		ret = snd_hdac_query_supported_pcm(hdac, cvt->nid, &rates,
> +			&formats, &bps);
> +		if (ret)
> +			return ret;
> +		for (j = 0; j < ARRAY_SIZE(rate_pcm); j++) {
> +			if (rates & (1 << j)) {
> +				rate_min = rate_pcm[j];
> +				break;
> +			}
> +		}
> +
> +		for (j = ARRAY_SIZE(rate_pcm) - 1; j >= 0; j--) {
> +			if (rates & (1 << j)) {
> +				rate_max = rate_pcm[j];
> +				break;
> +			}
> +		}

This is ugly...  Can't we just set rate_min/max with the fixed numbers
that cover the all possible ranges?  The refinement is done by the
rates bitmap and hw_constraint in anyway.


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

  reply	other threads:[~2015-12-03 16:14 UTC|newest]

Thread overview: 31+ 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   ` [PATCH v2 05/14] ALSA: pcm: Add DRM helper to set constraint for format Subhransu S. Prusty
2015-12-03 15:57     ` 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
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 [this message]
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

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=s5hfuzjse61.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --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=subhransu.s.prusty@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox