Message ID | 20240624121519.91703-3-pierre-louis.bossart@linux.intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | fe836c78ef1ff16da32912c22348091a0d67bda1 |
Headers | show |
Series | ASoC: SOF: topology/intel improvements | expand |
On Mon, Jun 24, 2024 at 02:15:18PM +0200, Pierre-Louis Bossart wrote: > Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> > Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> > Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> > Cc: <stable@vger.kernel.org> # v6.8+ > --- Please put fixes at the start of serieses, or send them separately - it makes things much easier to handle if they're separate. This ensures that the fixes don't end up with spurious dependencies on non-fix changes.
On 6/24/24 14:36, Mark Brown wrote: > On Mon, Jun 24, 2024 at 02:15:18PM +0200, Pierre-Louis Bossart wrote: >> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> >> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> >> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> >> Cc: <stable@vger.kernel.org> # v6.8+ >> --- > > Please put fixes at the start of serieses, or send them separately - > it makes things much easier to handle if they're separate. This ensures > that the fixes don't end up with spurious dependencies on non-fix > changes. Agree, I wasn't sure if this was really linux-stable material, this patch fixes problems on to-be-released topologies but it doesn't have any effect on existing user setups. At the same time, it certainly fixes a conceptual bug. Not sure if the tag is needed for those cases?
On Mon, Jun 24, 2024 at 05:26:32PM +0200, Pierre-Louis Bossart wrote: > On 6/24/24 14:36, Mark Brown wrote: > > On Mon, Jun 24, 2024 at 02:15:18PM +0200, Pierre-Louis Bossart wrote: > >> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> > >> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> > >> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> > >> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> > >> Cc: <stable@vger.kernel.org> # v6.8+ > > Please put fixes at the start of serieses, or send them separately - > > it makes things much easier to handle if they're separate. This ensures > > that the fixes don't end up with spurious dependencies on non-fix > > changes. > Agree, I wasn't sure if this was really linux-stable material, this > patch fixes problems on to-be-released topologies but it doesn't have > any effect on existing user setups. At the same time, it certainly fixes > a conceptual bug. Not sure if the tag is needed for those cases? Given the enthusiasm with which stable backports things it's probably fine, I suspect the device quirks might end up getting pulled back.
diff --git a/sound/soc/sof/ipc4-topology.c b/sound/soc/sof/ipc4-topology.c index ce2910f70e65..90f6856ee80c 100644 --- a/sound/soc/sof/ipc4-topology.c +++ b/sound/soc/sof/ipc4-topology.c @@ -2869,7 +2869,7 @@ static void sof_ipc4_put_queue_id(struct snd_sof_widget *swidget, int queue_id, static int sof_ipc4_set_copier_sink_format(struct snd_sof_dev *sdev, struct snd_sof_widget *src_widget, struct snd_sof_widget *sink_widget, - int sink_id) + struct snd_sof_route *sroute) { struct sof_ipc4_copier_config_set_sink_format format; const struct sof_ipc_ops *iops = sdev->ipc->ops; @@ -2878,9 +2878,6 @@ static int sof_ipc4_set_copier_sink_format(struct snd_sof_dev *sdev, struct sof_ipc4_fw_module *fw_module; struct sof_ipc4_msg msg = {{ 0 }}; - dev_dbg(sdev->dev, "%s set copier sink %d format\n", - src_widget->widget->name, sink_id); - if (WIDGET_IS_DAI(src_widget->id)) { struct snd_sof_dai *dai = src_widget->private; @@ -2891,13 +2888,15 @@ static int sof_ipc4_set_copier_sink_format(struct snd_sof_dev *sdev, fw_module = src_widget->module_info; - format.sink_id = sink_id; + format.sink_id = sroute->src_queue_id; memcpy(&format.source_fmt, &src_config->audio_fmt, sizeof(format.source_fmt)); - pin_fmt = sof_ipc4_get_input_pin_audio_fmt(sink_widget, sink_id); + pin_fmt = sof_ipc4_get_input_pin_audio_fmt(sink_widget, sroute->dst_queue_id); if (!pin_fmt) { - dev_err(sdev->dev, "Unable to get pin %d format for %s", - sink_id, sink_widget->widget->name); + dev_err(sdev->dev, + "Failed to get input audio format of %s:%d for output of %s:%d\n", + sink_widget->widget->name, sroute->dst_queue_id, + src_widget->widget->name, sroute->src_queue_id); return -EINVAL; } @@ -2955,7 +2954,8 @@ static int sof_ipc4_route_setup(struct snd_sof_dev *sdev, struct snd_sof_route * sroute->src_queue_id = sof_ipc4_get_queue_id(src_widget, sink_widget, SOF_PIN_TYPE_OUTPUT); if (sroute->src_queue_id < 0) { - dev_err(sdev->dev, "failed to get queue ID for source widget: %s\n", + dev_err(sdev->dev, + "failed to get src_queue_id ID from source widget %s\n", src_widget->widget->name); return sroute->src_queue_id; } @@ -2963,7 +2963,8 @@ static int sof_ipc4_route_setup(struct snd_sof_dev *sdev, struct snd_sof_route * sroute->dst_queue_id = sof_ipc4_get_queue_id(src_widget, sink_widget, SOF_PIN_TYPE_INPUT); if (sroute->dst_queue_id < 0) { - dev_err(sdev->dev, "failed to get queue ID for sink widget: %s\n", + dev_err(sdev->dev, + "failed to get dst_queue_id ID from sink widget %s\n", sink_widget->widget->name); sof_ipc4_put_queue_id(src_widget, sroute->src_queue_id, SOF_PIN_TYPE_OUTPUT); @@ -2972,10 +2973,11 @@ static int sof_ipc4_route_setup(struct snd_sof_dev *sdev, struct snd_sof_route * /* Pin 0 format is already set during copier module init */ if (sroute->src_queue_id > 0 && WIDGET_IS_COPIER(src_widget->id)) { - ret = sof_ipc4_set_copier_sink_format(sdev, src_widget, sink_widget, - sroute->src_queue_id); + ret = sof_ipc4_set_copier_sink_format(sdev, src_widget, + sink_widget, sroute); if (ret < 0) { - dev_err(sdev->dev, "failed to set sink format for %s source queue ID %d\n", + dev_err(sdev->dev, + "failed to set sink format for source %s:%d\n", src_widget->widget->name, sroute->src_queue_id); goto out; }