As there is nothing else (the consumers are supposed to do that) which
enables the clock, do it in the driver.

Signed-off-by: Alexander Riesen <alexander.rie...@cetitec.com>
--

v3: added
---
 drivers/media/i2c/adv748x/adv748x-dai.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/media/i2c/adv748x/adv748x-dai.c 
b/drivers/media/i2c/adv748x/adv748x-dai.c
index 6fce7d000423..1c673efd4745 100644
--- a/drivers/media/i2c/adv748x/adv748x-dai.c
+++ b/drivers/media/i2c/adv748x/adv748x-dai.c
@@ -117,11 +117,22 @@ static int adv748x_dai_set_fmt(struct snd_soc_dai *dai, 
unsigned int fmt)
 
 static int adv748x_dai_startup(struct snd_pcm_substream *sub, struct 
snd_soc_dai *dai)
 {
+       int ret;
        struct adv748x_state *state = state_of(dai);
 
        if (sub->stream != SNDRV_PCM_STREAM_CAPTURE)
                return -EINVAL;
-       return set_audio_pads_state(state, 1);
+       ret = set_audio_pads_state(state, 1);
+       if (ret)
+               goto fail;
+       ret = clk_prepare_enable(state->dai.mclk);
+       if (ret)
+               goto fail_pwdn;
+       return 0;
+fail_pwdn:
+       set_audio_pads_state(state, 0);
+fail:
+       return ret;
 }
 
 static int adv748x_dai_hw_params(struct snd_pcm_substream *sub,
@@ -174,6 +185,7 @@ static void adv748x_dai_shutdown(struct snd_pcm_substream 
*sub, struct snd_soc_d
 {
        struct adv748x_state *state = state_of(dai);
 
+       clk_disable_unprepare(state->dai.mclk);
        set_audio_pads_state(state, 0);
 }
 
-- 
2.25.1.25.g9ecbe7eb18


_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to