| From 660564fc9a92a893a14f255be434f7ea0b967901 Mon Sep 17 00:00:00 2001 |
| From: Codrin Ciubotariu <codrin.ciubotariu@microchip.com> |
| Date: Thu, 21 Apr 2022 15:54:02 +0300 |
| Subject: ASoC: dmaengine: Restore NULL prepare_slave_config() callback |
| |
| From: Codrin Ciubotariu <codrin.ciubotariu@microchip.com> |
| |
| commit 660564fc9a92a893a14f255be434f7ea0b967901 upstream. |
| |
| As pointed out by Sascha Hauer, this patch changes: |
| if (pmc->config && !pcm->config->prepare_slave_config) |
| <do nothing> |
| to: |
| if (pmc->config && !pcm->config->prepare_slave_config) |
| snd_dmaengine_pcm_prepare_slave_config() |
| |
| This breaks the drivers that do not need a call to |
| dmaengine_slave_config(). Drivers that still need to call |
| snd_dmaengine_pcm_prepare_slave_config(), but have a NULL |
| pcm->config->prepare_slave_config should use |
| snd_dmaengine_pcm_prepare_slave_config() as their prepare_slave_config |
| callback. |
| |
| Fixes: 9a1e13440a4f ("ASoC: dmaengine: do not use a NULL prepare_slave_config() callback") |
| Reported-by: Sascha Hauer <sha@pengutronix.de> |
| Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com> |
| Link: https://lore.kernel.org/r/20220421125403.2180824-1-codrin.ciubotariu@microchip.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| sound/soc/soc-generic-dmaengine-pcm.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/sound/soc/soc-generic-dmaengine-pcm.c |
| +++ b/sound/soc/soc-generic-dmaengine-pcm.c |
| @@ -83,10 +83,10 @@ static int dmaengine_pcm_hw_params(struc |
| |
| memset(&slave_config, 0, sizeof(slave_config)); |
| |
| - if (pcm->config && pcm->config->prepare_slave_config) |
| - prepare_slave_config = pcm->config->prepare_slave_config; |
| - else |
| + if (!pcm->config) |
| prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config; |
| + else |
| + prepare_slave_config = pcm->config->prepare_slave_config; |
| |
| if (prepare_slave_config) { |
| ret = prepare_slave_config(substream, params, &slave_config); |