linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RESEND PATCH v3 0/2] ASoC/SoundWire: Intel: add sdw BE dai trigger
@ 2022-07-08  6:13 Bard Liao
  2022-07-08  6:13 ` [RESEND PATCH v3 1/2] soundwire: Intel: add trigger callback Bard Liao
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Bard Liao @ 2022-07-08  6:13 UTC (permalink / raw)
  To: alsa-devel, broonie, vkoul
  Cc: vinod.koul, linux-kernel, tiwai, gregkh, srinivas.kandagatla,
	pierre-louis.bossart, sanyog.r.kale, bard.liao

For SOF IPC4, we need to set pipeline state in BE DAI trigger.
@Mark, resending this series in case it is lost in your mailbox.

v2:
 - Change "#if IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE)" to
   "if (IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE))"

v3:
 - Change the multi-line comment style in "soundwire: Intel: add trigger
   callback" patch and take Vinod's Ack.

Bard Liao (2):
  soundwire: Intel: add trigger callback
  ASoC: SOF: Intel: add trigger callback into sdw_callback

 drivers/soundwire/intel.c           |  9 +++++++++
 include/linux/soundwire/sdw_intel.h |  1 +
 sound/soc/sof/intel/hda-dai.c       | 14 +++++++++++---
 sound/soc/sof/intel/hda.c           |  2 +-
 sound/soc/sof/intel/hda.h           |  1 +
 5 files changed, 23 insertions(+), 4 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [RESEND PATCH v3 1/2] soundwire: Intel: add trigger callback
  2022-07-08  6:13 [RESEND PATCH v3 0/2] ASoC/SoundWire: Intel: add sdw BE dai trigger Bard Liao
@ 2022-07-08  6:13 ` Bard Liao
  2022-07-08  6:13 ` [RESEND PATCH v3 2/2] ASoC: SOF: Intel: add trigger callback into sdw_callback Bard Liao
  2022-07-13 15:53 ` [RESEND PATCH v3 0/2] ASoC/SoundWire: Intel: add sdw BE dai trigger Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Bard Liao @ 2022-07-08  6:13 UTC (permalink / raw)
  To: alsa-devel, broonie, vkoul
  Cc: vinod.koul, linux-kernel, tiwai, gregkh, srinivas.kandagatla,
	pierre-louis.bossart, sanyog.r.kale, bard.liao

When a pipeline is split into FE and BE parts, the BE pipeline may need to
be triggered separately in the BE trigger op. So add the trigger callback
in the link_res ops that will be invoked during BE DAI trigger.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Acked-by: Vinod Koul <vkoul@kernel.org>
---
 drivers/soundwire/intel.c           | 9 +++++++++
 include/linux/soundwire/sdw_intel.h | 1 +
 2 files changed, 10 insertions(+)

diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c
index 0268fa527c0c..fed6418d6375 100644
--- a/drivers/soundwire/intel.c
+++ b/drivers/soundwire/intel.c
@@ -1004,9 +1004,18 @@ static int intel_trigger(struct snd_pcm_substream *substream, int cmd, struct sn
 {
 	struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
 	struct sdw_intel *sdw = cdns_to_intel(cdns);
+	struct sdw_intel_link_res *res = sdw->link_res;
 	struct sdw_cdns_dma_data *dma;
 	int ret = 0;
 
+	/*
+	 * The .trigger callback is used to send required IPC to audio
+	 * firmware. The .free_stream callback will still be called
+	 * by intel_free_stream() in the TRIGGER_SUSPEND case.
+	 */
+	if (res->ops && res->ops->trigger)
+		res->ops->trigger(dai, cmd, substream->stream);
+
 	dma = snd_soc_dai_get_dma_data(dai, substream);
 	if (!dma) {
 		dev_err(dai->dev, "failed to get dma data in %s\n",
diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h
index b5b489ea1aef..ec16ae49e6a4 100644
--- a/include/linux/soundwire/sdw_intel.h
+++ b/include/linux/soundwire/sdw_intel.h
@@ -121,6 +121,7 @@ struct sdw_intel_ops {
 			     struct sdw_intel_stream_params_data *params_data);
 	int (*free_stream)(struct device *dev,
 			   struct sdw_intel_stream_free_data *free_data);
+	int (*trigger)(struct snd_soc_dai *dai, int cmd, int stream);
 };
 
 /**
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [RESEND PATCH v3 2/2] ASoC: SOF: Intel: add trigger callback into sdw_callback
  2022-07-08  6:13 [RESEND PATCH v3 0/2] ASoC/SoundWire: Intel: add sdw BE dai trigger Bard Liao
  2022-07-08  6:13 ` [RESEND PATCH v3 1/2] soundwire: Intel: add trigger callback Bard Liao
@ 2022-07-08  6:13 ` Bard Liao
  2022-07-13 15:53 ` [RESEND PATCH v3 0/2] ASoC/SoundWire: Intel: add sdw BE dai trigger Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Bard Liao @ 2022-07-08  6:13 UTC (permalink / raw)
  To: alsa-devel, broonie, vkoul
  Cc: vinod.koul, linux-kernel, tiwai, gregkh, srinivas.kandagatla,
	pierre-louis.bossart, sanyog.r.kale, bard.liao

For IPC4, we need to set pipeline state in BE DAI trigger.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
---
 sound/soc/sof/intel/hda-dai.c | 14 +++++++++++---
 sound/soc/sof/intel/hda.c     |  2 +-
 sound/soc/sof/intel/hda.h     |  1 +
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/sound/soc/sof/intel/hda-dai.c b/sound/soc/sof/intel/hda-dai.c
index ed74a1f264e8..ce5a39326dce 100644
--- a/sound/soc/sof/intel/hda-dai.c
+++ b/sound/soc/sof/intel/hda-dai.c
@@ -714,8 +714,7 @@ static const struct snd_soc_dai_ops ipc3_ssp_dai_ops = {
 	.shutdown = ssp_dai_shutdown,
 };
 
-static int ipc4_be_dai_trigger(struct snd_pcm_substream *substream,
-			       int cmd, struct snd_soc_dai *dai)
+static int ipc4_be_dai_common_trigger(struct snd_soc_dai *dai, int cmd, int stream)
 {
 	struct snd_sof_widget *pipe_widget;
 	struct sof_ipc4_pipeline *pipeline;
@@ -724,7 +723,7 @@ static int ipc4_be_dai_trigger(struct snd_pcm_substream *substream,
 	struct snd_sof_dev *sdev;
 	int ret;
 
-	w = snd_soc_dai_get_widget(dai, substream->stream);
+	w = snd_soc_dai_get_widget(dai, stream);
 	swidget = w->dobj.private;
 	pipe_widget = swidget->pipe_widget;
 	pipeline = pipe_widget->private;
@@ -759,6 +758,12 @@ static int ipc4_be_dai_trigger(struct snd_pcm_substream *substream,
 	return 0;
 }
 
+static int ipc4_be_dai_trigger(struct snd_pcm_substream *substream,
+			       int cmd, struct snd_soc_dai *dai)
+{
+	return ipc4_be_dai_common_trigger(dai, cmd, substream->stream);
+}
+
 static const struct snd_soc_dai_ops ipc4_dmic_dai_ops = {
 	.trigger = ipc4_be_dai_trigger,
 };
@@ -810,6 +815,9 @@ void hda_set_dai_drv_ops(struct snd_sof_dev *sdev, struct snd_sof_dsp_ops *ops)
 		if (!hda_use_tplg_nhlt)
 			ipc4_data->nhlt = intel_nhlt_init(sdev->dev);
 
+		if (IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE))
+			sdw_callback.trigger = ipc4_be_dai_common_trigger;
+
 		break;
 	}
 	default:
diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c
index bc07df1fc39f..cdd3601e84f5 100644
--- a/sound/soc/sof/intel/hda.c
+++ b/sound/soc/sof/intel/hda.c
@@ -147,7 +147,7 @@ static int sdw_free_stream(struct device *dev,
 	return hda_ctrl_dai_widget_free(w, SOF_DAI_CONFIG_FLAGS_NONE, &data);
 }
 
-static const struct sdw_intel_ops sdw_callback = {
+struct sdw_intel_ops sdw_callback = {
 	.params_stream = sdw_params_stream,
 	.free_stream = sdw_free_stream,
 };
diff --git a/sound/soc/sof/intel/hda.h b/sound/soc/sof/intel/hda.h
index dc713c20ba1d..5439fcfe2b4d 100644
--- a/sound/soc/sof/intel/hda.h
+++ b/sound/soc/sof/intel/hda.h
@@ -778,5 +778,6 @@ irqreturn_t cnl_ipc4_irq_thread(int irq, void *context);
 int cnl_ipc4_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg);
 irqreturn_t hda_dsp_ipc4_irq_thread(int irq, void *context);
 int hda_dsp_ipc4_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg);
+extern struct sdw_intel_ops sdw_callback;
 
 #endif
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [RESEND PATCH v3 0/2] ASoC/SoundWire: Intel: add sdw BE dai trigger
  2022-07-08  6:13 [RESEND PATCH v3 0/2] ASoC/SoundWire: Intel: add sdw BE dai trigger Bard Liao
  2022-07-08  6:13 ` [RESEND PATCH v3 1/2] soundwire: Intel: add trigger callback Bard Liao
  2022-07-08  6:13 ` [RESEND PATCH v3 2/2] ASoC: SOF: Intel: add trigger callback into sdw_callback Bard Liao
@ 2022-07-13 15:53 ` Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2022-07-13 15:53 UTC (permalink / raw)
  To: yung-chuan.liao, vkoul, alsa-devel
  Cc: srinivas.kandagatla, bard.liao, sanyog.r.kale,
	pierre-louis.bossart, tiwai, linux-kernel, gregkh, vinod.koul

On Fri, 8 Jul 2022 14:13:10 +0800, Bard Liao wrote:
> For SOF IPC4, we need to set pipeline state in BE DAI trigger.
> @Mark, resending this series in case it is lost in your mailbox.
> 
> v2:
>  - Change "#if IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE)" to
>    "if (IS_ENABLED(CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE))"
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/2] soundwire: Intel: add trigger callback
      commit: 6d1c1a73e1126572de0a8b063fe62fe43786ed59
[2/2] ASoC: SOF: Intel: add trigger callback into sdw_callback
      commit: 2a1be12c4d77d4f7b122568383382e006a60381b

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-07-13 15:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-08  6:13 [RESEND PATCH v3 0/2] ASoC/SoundWire: Intel: add sdw BE dai trigger Bard Liao
2022-07-08  6:13 ` [RESEND PATCH v3 1/2] soundwire: Intel: add trigger callback Bard Liao
2022-07-08  6:13 ` [RESEND PATCH v3 2/2] ASoC: SOF: Intel: add trigger callback into sdw_callback Bard Liao
2022-07-13 15:53 ` [RESEND PATCH v3 0/2] ASoC/SoundWire: Intel: add sdw BE dai trigger Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).