mfd: twl4030-audio: Rearange and clean-up the probe function
To facilitate the device tree support the probe function need to be rearanged. Small cleanup in the APLL frequency selection part as well. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
bade699c67
commit
b5d5a034de
1 changed files with 20 additions and 22 deletions
|
@ -169,36 +169,31 @@ static int __devinit twl4030_audio_probe(struct platform_device *pdev)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Configure APLL_INFREQ and disable APLL if enabled */
|
|
||||||
val = 0;
|
|
||||||
switch (pdata->audio_mclk) {
|
|
||||||
case 19200000:
|
|
||||||
val |= TWL4030_APLL_INFREQ_19200KHZ;
|
|
||||||
break;
|
|
||||||
case 26000000:
|
|
||||||
val |= TWL4030_APLL_INFREQ_26000KHZ;
|
|
||||||
break;
|
|
||||||
case 38400000:
|
|
||||||
val |= TWL4030_APLL_INFREQ_38400KHZ;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
dev_err(&pdev->dev, "Invalid audio_mclk\n");
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
twl_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
|
|
||||||
val, TWL4030_REG_APLL_CTL);
|
|
||||||
|
|
||||||
audio = devm_kzalloc(&pdev->dev, sizeof(struct twl4030_audio),
|
audio = devm_kzalloc(&pdev->dev, sizeof(struct twl4030_audio),
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
if (!audio)
|
if (!audio)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
platform_set_drvdata(pdev, audio);
|
|
||||||
|
|
||||||
twl4030_audio_dev = pdev;
|
|
||||||
mutex_init(&audio->mutex);
|
mutex_init(&audio->mutex);
|
||||||
audio->audio_mclk = pdata->audio_mclk;
|
audio->audio_mclk = pdata->audio_mclk;
|
||||||
|
|
||||||
|
/* Configure APLL_INFREQ and disable APLL if enabled */
|
||||||
|
switch (audio->audio_mclk) {
|
||||||
|
case 19200000:
|
||||||
|
val = TWL4030_APLL_INFREQ_19200KHZ;
|
||||||
|
break;
|
||||||
|
case 26000000:
|
||||||
|
val = TWL4030_APLL_INFREQ_26000KHZ;
|
||||||
|
break;
|
||||||
|
case 38400000:
|
||||||
|
val = TWL4030_APLL_INFREQ_38400KHZ;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dev_err(&pdev->dev, "Invalid audio_mclk\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
twl_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, val, TWL4030_REG_APLL_CTL);
|
||||||
|
|
||||||
/* Codec power */
|
/* Codec power */
|
||||||
audio->resource[TWL4030_AUDIO_RES_POWER].reg = TWL4030_REG_CODEC_MODE;
|
audio->resource[TWL4030_AUDIO_RES_POWER].reg = TWL4030_REG_CODEC_MODE;
|
||||||
audio->resource[TWL4030_AUDIO_RES_POWER].mask = TWL4030_CODECPDZ;
|
audio->resource[TWL4030_AUDIO_RES_POWER].mask = TWL4030_CODECPDZ;
|
||||||
|
@ -222,6 +217,9 @@ static int __devinit twl4030_audio_probe(struct platform_device *pdev)
|
||||||
childs++;
|
childs++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
platform_set_drvdata(pdev, audio);
|
||||||
|
twl4030_audio_dev = pdev;
|
||||||
|
|
||||||
if (childs)
|
if (childs)
|
||||||
ret = mfd_add_devices(&pdev->dev, pdev->id, audio->cells,
|
ret = mfd_add_devices(&pdev->dev, pdev->id, audio->cells,
|
||||||
childs, NULL, 0);
|
childs, NULL, 0);
|
||||||
|
|
Loading…
Add table
Reference in a new issue