Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Cc: libin.yang@intel.com, alsa-devel@alsa-project.org,
	pierre-louis.bossart@linux.intel.com
Subject: Re: [alsa-devel] [PATCH v6 3/9] ASoC: Intel: skl-hda-dsp-generic: use snd-hda-codec-hdmi
Date: Thu, 17 Oct 2019 10:06:06 +0200	[thread overview]
Message-ID: <s5hk193iyoh.wl-tiwai@suse.de> (raw)
In-Reply-To: <20191011112745.25800-4-kai.vehmanen@linux.intel.com>

On Fri, 11 Oct 2019 13:27:39 +0200,
Kai Vehmanen wrote:
> 
> diff --git a/sound/soc/intel/boards/hda_dsp_common.h b/sound/soc/intel/boards/hda_dsp_common.h
> new file mode 100644
> index 000000000000..a4f7ae81bcc0
> --- /dev/null
> +++ b/sound/soc/intel/boards/hda_dsp_common.h
> @@ -0,0 +1,97 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * Copyright(c) 2019 Intel Corporation.
> + */
> +
> +/*
> + * This file defines helper functions used by multiple
> + * Intel HDA based machine drivers.
> + */
> +
> +#ifndef __HDA_DSP_COMMON_H
> +#define __HDA_DSP_COMMON_H
> +
> +#include <sound/hda_codec.h>
> +#include <sound/hda_i915.h>
> +#include "../../codecs/hdac_hda.h"
> +
> +/*
> + * Search card topology and return PCM device number
> + * matching Nth HDMI device (zero-based index).
> + */
> +static inline struct snd_pcm *hda_dsp_hdmi_pcm_handle(struct snd_soc_card *card,
> +						      int hdmi_idx)
> +{
> +	struct snd_soc_pcm_runtime *rtd;
> +	struct snd_pcm *spcm;
> +	int i = 0;
> +
> +	for_each_card_rtds(card, rtd) {
> +		spcm = rtd->pcm ?
> +			rtd->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].pcm : 0;
> +		if (spcm && strstr(spcm->id, "HDMI")) {
> +			if (i == hdmi_idx)
> +				return rtd->pcm;
> +			++i;
> +		}
> +	}
> +
> +	return 0;
> +}
> +
> +#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC)
> +/*
> + * Search card topology and register HDMI PCM related controls
> + * to codec driver.
> + */
> +static inline int hda_dsp_hdmi_build_controls(struct snd_soc_card *card,
> +					      struct snd_soc_component *comp)
> +{
> +	struct hdac_hda_priv *hda_pvt;
> +	struct hda_codec *hcodec;
> +	struct snd_pcm *spcm;
> +	struct hda_pcm *hpcm;
> +	int err = 0, i = 0;
> +
> +	if (!comp)
> +		return -EINVAL;
> +
> +	hda_pvt = snd_soc_component_get_drvdata(comp);
> +	hcodec = &hda_pvt->codec;
> +
> +	list_for_each_entry(hpcm, &hcodec->pcm_list_head, list) {
> +		spcm = hda_dsp_hdmi_pcm_handle(card, i);
> +		if (spcm) {
> +			hpcm->pcm = spcm;
> +			hpcm->device = spcm->device;
> +			dev_dbg(card->dev,
> +				"%s: mapping HDMI converter %d to PCM %d (%p)\n",
> +				__func__, i, hpcm->device, spcm);
> +		} else {
> +			hpcm->pcm = 0;
> +			hpcm->device = SNDRV_PCM_INVALID_DEVICE;
> +			dev_warn(card->dev,
> +				 "%s: no PCM in topology for HDMI converter %d\n\n",
> +				 __func__, i);
> +		}
> +		i++;
> +	}
> +	snd_hdac_display_power(hcodec->core.bus,
> +			       HDA_CODEC_IDX_CONTROLLER, true);
> +	err = snd_hda_codec_build_controls(hcodec);
> +	if (err < 0)
> +		dev_err(card->dev, "unable to create controls %d\n", err);
> +	snd_hdac_display_power(hcodec->core.bus,
> +			       HDA_CODEC_IDX_CONTROLLER, false);
> +
> +	return err;
> +}
> +#else

These additions look a bit too large for inline functions.
Wouldn't it be difficult to make them non-inline?


thanks,

Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  reply	other threads:[~2019-10-17  8:07 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-11 11:27 [alsa-devel] [PATCH v6 0/9] adapt SOF to use snd-hda-codec-hdmi Kai Vehmanen
2019-10-11 11:27 ` [alsa-devel] [PATCH v6 1/9] ALSA: hda/hdmi - implement mst_no_extra_pcms flag Kai Vehmanen
2019-10-11 11:27 ` [alsa-devel] [PATCH v6 2/9] ASoC: hdac_hda: add support for HDMI/DP as a HDA codec Kai Vehmanen
2019-10-11 11:27 ` [alsa-devel] [PATCH v6 3/9] ASoC: Intel: skl-hda-dsp-generic: use snd-hda-codec-hdmi Kai Vehmanen
2019-10-17  8:06   ` Takashi Iwai [this message]
2019-10-22 11:15     ` Kai Vehmanen
2019-10-11 11:27 ` [alsa-devel] [PATCH v6 4/9] ASoC: Intel: skl-hda-dsp-generic: fix include guard name Kai Vehmanen
2019-10-11 11:27 ` [alsa-devel] [PATCH v6 5/9] ASoC: SOF: Intel: add support for snd-hda-codec-hdmi Kai Vehmanen
2019-10-11 14:00   ` Pierre-Louis Bossart
2019-10-11 14:10     ` Kai Vehmanen
2019-10-17  7:58       ` Takashi Iwai
2019-10-17 13:20         ` Pierre-Louis Bossart
2019-10-22 11:19           ` Kai Vehmanen
2019-10-22 13:17             ` Pierre-Louis Bossart
2019-10-11 11:27 ` [alsa-devel] [PATCH v6 6/9] ASoC: Intel: bxt-da7219-max98357a: common hdmi codec support Kai Vehmanen
2019-10-11 11:27 ` [alsa-devel] [PATCH v6 7/9] ASoC: Intel: glk_rt5682_max98357a: " Kai Vehmanen
2019-10-11 11:27 ` [alsa-devel] [PATCH v6 8/9] ASoC: intel: sof_rt5682: " Kai Vehmanen
2019-10-11 11:27 ` [alsa-devel] [PATCH v6 9/9] ASoC: Intel: bxt_rt298: " Kai Vehmanen

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=s5hk193iyoh.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=kai.vehmanen@linux.intel.com \
    --cc=libin.yang@intel.com \
    --cc=pierre-louis.bossart@linux.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