| From 739b50d368f593c0a7d9810583128f9b8b944056 Mon Sep 17 00:00:00 2001 |
| From: Olivier Moysan <olivier.moysan@st.com> |
| Date: Wed, 4 Dec 2019 16:43:33 +0100 |
| Subject: [PATCH] ASoC: stm32: spdifrx: fix input pin state management |
| |
| commit 3b7658679d88b5628939f9bdc8e613f79cd821f9 upstream. |
| |
| Changing input state in iec capture control is not safe, |
| as the pin state may be changed concurrently by ASoC |
| framework. |
| Remove pin state handling in iec capture control. |
| |
| Note: This introduces a restriction on capture control, |
| when pin sleep state is defined in device tree. In this case |
| channel status can be captured only when an audio stream |
| capture is active. |
| |
| Fixes: f68c2a682d44 ("ASoC: stm32: spdifrx: add power management") |
| |
| Signed-off-by: Olivier Moysan <olivier.moysan@st.com> |
| Link: https://lore.kernel.org/r/20191204154333.7152-4-olivier.moysan@st.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/sound/soc/stm/stm32_spdifrx.c b/sound/soc/stm/stm32_spdifrx.c |
| index c44fdf75a048..ac9ae434237a 100644 |
| --- a/sound/soc/stm/stm32_spdifrx.c |
| +++ b/sound/soc/stm/stm32_spdifrx.c |
| @@ -11,7 +11,6 @@ |
| #include <linux/delay.h> |
| #include <linux/module.h> |
| #include <linux/of_platform.h> |
| -#include <linux/pinctrl/consumer.h> |
| #include <linux/regmap.h> |
| #include <linux/reset.h> |
| |
| @@ -466,8 +465,6 @@ static int stm32_spdifrx_get_ctrl_data(struct stm32_spdifrx_data *spdifrx) |
| memset(spdifrx->cs, 0, SPDIFRX_CS_BYTES_NB); |
| memset(spdifrx->ub, 0, SPDIFRX_UB_BYTES_NB); |
| |
| - pinctrl_pm_select_default_state(&spdifrx->pdev->dev); |
| - |
| ret = stm32_spdifrx_dma_ctrl_start(spdifrx); |
| if (ret < 0) |
| return ret; |
| @@ -499,7 +496,6 @@ static int stm32_spdifrx_get_ctrl_data(struct stm32_spdifrx_data *spdifrx) |
| |
| end: |
| clk_disable_unprepare(spdifrx->kclk); |
| - pinctrl_pm_select_sleep_state(&spdifrx->pdev->dev); |
| |
| return ret; |
| } |
| -- |
| 2.7.4 |
| |