Re: [PATCH 5/5] ASoC: TWL4030: Do not modify the APLL_CTL register

From: Mark Brown
Date: Mon Nov 02 2009 - 12:27:32 EST

On Mon, Nov 02, 2009 at 02:34:55PM +0200, Peter Ujfalusi wrote:
> APLL_CTL register is configured by the twl4030-codec MFD
> driver.
> Remove code, which makes changes in the APLL_CTL register,
> and replace those with checks against the configured
> audio_mclk configuration done in the MFD driver.

This all looks mostly OK. It might be nice to combine this patch with
the change to the MFD driver, simply because when the previous patch
said "move" but didn't remove anything from the CODEC driver it seemed a
bit surprising. The MFD part of this is queued in ASoC ATM so it
shouldn't cause cross tree issues.

> - twl4030_write(codec, TWL4030_REG_APLL_CTL, apll_ctrl);
> + if ((freq / 1000) != twl4030->sysclk) {
> + dev_err(codec->dev,
> + "Mismatch in APLL infrequency %u (configred: %u)\n",
> + freq, twl4030->sysclk * 1000);

Typos in the log message here (and similarly for the other DAI).

> - if (infreq != TWL4030_APLL_INFREQ_26000KHZ) {
> + if (twl4030->sysclk != 26000) {
> printk(KERN_ERR "TWL4030 voice startup: "
> "MCLK is not 26MHz, call set_sysclk() on init\n");
> return -EINVAL;

Is that advice still appropriate if things are specified via the
codec device now?

> @@ -2233,6 +2215,7 @@ static int __devinit twl4030_codec_probe(struct platform_device *pdev)
> twl4030_codec = codec;
> /* Set the defaults, and power up the codec */
> + twl4030->sysclk = twl4030_codec_get_mclk() / 1000;
> twl4030_init_chip(codec);
> codec->bias_level = SND_SOC_BIAS_OFF;
> twl4030_set_bias_level(codec, SND_SOC_BIAS_STANDBY);

twl4030_codec_get_mclk() feels like it ought to take a parameter saying
which twl4030, though the chances of having multiple twl4030s in one
system are remote so it's not a real issue.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at