mirror of https://gitee.com/openkylin/linux.git
ASoC: tegra: remove open-coded clk reference counting
clk_enable/disable() already reference count the enable calls, so there's no need for the callers to do the same. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
c0d5a47ca8
commit
30d436a644
|
@ -220,8 +220,7 @@ static int tegra_i2s_hw_params(struct snd_pcm_substream *substream,
|
|||
if (i2sclock % (2 * srate))
|
||||
reg |= TEGRA_I2S_TIMING_NON_SYM_ENABLE;
|
||||
|
||||
if (!i2s->clk_refs)
|
||||
clk_enable(i2s->clk_i2s);
|
||||
clk_enable(i2s->clk_i2s);
|
||||
|
||||
tegra_i2s_write(i2s, TEGRA_I2S_TIMING, reg);
|
||||
|
||||
|
@ -229,8 +228,7 @@ static int tegra_i2s_hw_params(struct snd_pcm_substream *substream,
|
|||
TEGRA_I2S_FIFO_SCR_FIFO2_ATN_LVL_FOUR_SLOTS |
|
||||
TEGRA_I2S_FIFO_SCR_FIFO1_ATN_LVL_FOUR_SLOTS);
|
||||
|
||||
if (!i2s->clk_refs)
|
||||
clk_disable(i2s->clk_i2s);
|
||||
clk_disable(i2s->clk_i2s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -268,9 +266,7 @@ static int tegra_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||
case SNDRV_PCM_TRIGGER_START:
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
if (!i2s->clk_refs)
|
||||
clk_enable(i2s->clk_i2s);
|
||||
i2s->clk_refs++;
|
||||
clk_enable(i2s->clk_i2s);
|
||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
tegra_i2s_start_playback(i2s);
|
||||
else
|
||||
|
@ -283,9 +279,7 @@ static int tegra_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||
tegra_i2s_stop_playback(i2s);
|
||||
else
|
||||
tegra_i2s_stop_capture(i2s);
|
||||
i2s->clk_refs--;
|
||||
if (!i2s->clk_refs)
|
||||
clk_disable(i2s->clk_i2s);
|
||||
clk_disable(i2s->clk_i2s);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
|
|
@ -155,7 +155,6 @@
|
|||
struct tegra_i2s {
|
||||
struct snd_soc_dai_driver dai;
|
||||
struct clk *clk_i2s;
|
||||
int clk_refs;
|
||||
struct tegra_pcm_dma_params capture_dma_data;
|
||||
struct tegra_pcm_dma_params playback_dma_data;
|
||||
void __iomem *regs;
|
||||
|
|
|
@ -196,18 +196,14 @@ static int tegra_spdif_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||
case SNDRV_PCM_TRIGGER_START:
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
if (!spdif->clk_refs)
|
||||
clk_enable(spdif->clk_spdif_out);
|
||||
spdif->clk_refs++;
|
||||
clk_enable(spdif->clk_spdif_out);
|
||||
tegra_spdif_start_playback(spdif);
|
||||
break;
|
||||
case SNDRV_PCM_TRIGGER_STOP:
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||
tegra_spdif_stop_playback(spdif);
|
||||
spdif->clk_refs--;
|
||||
if (!spdif->clk_refs)
|
||||
clk_disable(spdif->clk_spdif_out);
|
||||
clk_disable(spdif->clk_spdif_out);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
|
|
@ -462,7 +462,6 @@
|
|||
|
||||
struct tegra_spdif {
|
||||
struct clk *clk_spdif_out;
|
||||
int clk_refs;
|
||||
struct tegra_pcm_dma_params capture_dma_data;
|
||||
struct tegra_pcm_dma_params playback_dma_data;
|
||||
void __iomem *regs;
|
||||
|
|
Loading…
Reference in New Issue