| From 1ca1156cfd69530e6b7cb99943baf90c8bd871a5 Mon Sep 17 00:00:00 2001 |
| From: Annaliese McDermond <nh6z@nh6z.net> |
| Date: Wed, 31 Mar 2021 18:21:38 +0000 |
| Subject: ASoC: tlv320aic32x4: Register clocks before registering component |
| |
| From: Annaliese McDermond <nh6z@nh6z.net> |
| |
| commit 1ca1156cfd69530e6b7cb99943baf90c8bd871a5 upstream. |
| |
| Clock registration must be performed before the component is |
| registered. aic32x4_component_probe attempts to get all the |
| clocks right off the bat. If the component is registered before |
| the clocks there is a race condition where the clocks may not |
| be registered by the time aic32x4_componet_probe actually runs. |
| |
| Fixes: d1c859d314d8 ("ASoC: codec: tlv3204: Increased maximum supported channels") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Annaliese McDermond <nh6z@nh6z.net> |
| Link: https://lore.kernel.org/r/0101017889850206-dcac4cce-8cc8-4a21-80e9-4e4bef44b981-000000@us-west-2.amazonses.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| sound/soc/codecs/tlv320aic32x4.c | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/sound/soc/codecs/tlv320aic32x4.c |
| +++ b/sound/soc/codecs/tlv320aic32x4.c |
| @@ -1243,6 +1243,10 @@ int aic32x4_probe(struct device *dev, st |
| if (ret) |
| goto err_disable_regulators; |
| |
| + ret = aic32x4_register_clocks(dev, aic32x4->mclk_name); |
| + if (ret) |
| + goto err_disable_regulators; |
| + |
| ret = devm_snd_soc_register_component(dev, |
| &soc_component_dev_aic32x4, &aic32x4_dai, 1); |
| if (ret) { |
| @@ -1250,10 +1254,6 @@ int aic32x4_probe(struct device *dev, st |
| goto err_disable_regulators; |
| } |
| |
| - ret = aic32x4_register_clocks(dev, aic32x4->mclk_name); |
| - if (ret) |
| - goto err_disable_regulators; |
| - |
| return 0; |
| |
| err_disable_regulators: |