Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9ca8e76 authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Mark Brown
Browse files

ASoC: bf5xx-ssm2602: Setup sysclock in init callback



The sysclock is fixed, so just set it up once in the init callback instead of
setting it repeatably in the hw_params callback.

Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent e05854dd
Loading
Loading
Loading
Loading
+4 −33
Original line number Diff line number Diff line
@@ -44,16 +44,8 @@

static struct snd_soc_card bf5xx_ssm2602;

static int bf5xx_ssm2602_hw_params(struct snd_pcm_substream *substream,
	struct snd_pcm_hw_params *params)
static int bf5xx_ssm2602_dai_init(struct snd_soc_pcm_runtime *rtd)
{
	struct snd_soc_pcm_runtime *rtd = substream->private_data;
	struct snd_soc_dai *codec_dai = rtd->codec_dai;
	unsigned int clk = 0;
	int ret = 0;

	pr_debug("%s rate %d format %x\n", __func__, params_rate(params),
		params_format(params));
	/*
	 * If you are using a crystal source which frequency is not 12MHz
	 * then modify the below case statement with frequency of the crystal.
@@ -61,31 +53,10 @@ static int bf5xx_ssm2602_hw_params(struct snd_pcm_substream *substream,
	 * If you are using the SPORT to generate clocking then this is
	 * where to do it.
	 */

	switch (params_rate(params)) {
	case 8000:
	case 16000:
	case 48000:
	case 96000:
	case 11025:
	case 22050:
	case 44100:
		clk = 12000000;
		break;
	}

	ret = snd_soc_dai_set_sysclk(codec_dai, SSM2602_SYSCLK, clk,
	return snd_soc_dai_set_sysclk(rtd->codec_dai, SSM2602_SYSCLK, 12000000,
		SND_SOC_CLOCK_IN);
	if (ret < 0)
		return ret;

	return 0;
}

static struct snd_soc_ops bf5xx_ssm2602_ops = {
	.hw_params = bf5xx_ssm2602_hw_params,
};

/* CODEC is master for BCLK and LRC in this configuration. */
#define BF5XX_SSM2602_DAIFMT (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | \
				SND_SOC_DAIFMT_CBM_CFM)
@@ -98,7 +69,7 @@ static struct snd_soc_dai_link bf5xx_ssm2602_dai[] = {
		.codec_dai_name = "ssm2602-hifi",
		.platform_name = "bfin-i2s-pcm-audio",
		.codec_name = "ssm2602.0-001b",
		.ops = &bf5xx_ssm2602_ops,
		.init = bf5xx_ssm2602_dai_init,
	},
	{
		.name = "ssm2602",
@@ -107,7 +78,7 @@ static struct snd_soc_dai_link bf5xx_ssm2602_dai[] = {
		.codec_dai_name = "ssm2602-hifi",
		.platform_name = "bfin-i2s-pcm-audio",
		.codec_name = "ssm2602.0-001b",
		.ops = &bf5xx_ssm2602_ops,
		.init = bf5xx_ssm2602_dai_init,
	},
};