diff options
author | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2012-09-10 06:46:21 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-09-22 11:14:45 -0400 |
commit | b5d5a034dec62c456a48d6977d926236ec605015 (patch) | |
tree | 54ebb7df1783aa43360e2410cb11d9ee13c2fe3a | |
parent | bade699c67d40b785e00738b0593c7ed1dad78fc (diff) |
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>
-rw-r--r-- | drivers/mfd/twl4030-audio.c | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/drivers/mfd/twl4030-audio.c b/drivers/mfd/twl4030-audio.c index efa2d424b416..ca2d6693c1f7 100644 --- a/drivers/mfd/twl4030-audio.c +++ b/drivers/mfd/twl4030-audio.c | |||
@@ -169,35 +169,30 @@ static int __devinit twl4030_audio_probe(struct platform_device *pdev) | |||
169 | return -EINVAL; | 169 | return -EINVAL; |
170 | } | 170 | } |
171 | 171 | ||
172 | audio = devm_kzalloc(&pdev->dev, sizeof(struct twl4030_audio), | ||
173 | GFP_KERNEL); | ||
174 | if (!audio) | ||
175 | return -ENOMEM; | ||
176 | |||
177 | mutex_init(&audio->mutex); | ||
178 | audio->audio_mclk = pdata->audio_mclk; | ||
179 | |||
172 | /* Configure APLL_INFREQ and disable APLL if enabled */ | 180 | /* Configure APLL_INFREQ and disable APLL if enabled */ |
173 | val = 0; | 181 | switch (audio->audio_mclk) { |
174 | switch (pdata->audio_mclk) { | ||
175 | case 19200000: | 182 | case 19200000: |
176 | val |= TWL4030_APLL_INFREQ_19200KHZ; | 183 | val = TWL4030_APLL_INFREQ_19200KHZ; |
177 | break; | 184 | break; |
178 | case 26000000: | 185 | case 26000000: |
179 | val |= TWL4030_APLL_INFREQ_26000KHZ; | 186 | val = TWL4030_APLL_INFREQ_26000KHZ; |
180 | break; | 187 | break; |
181 | case 38400000: | 188 | case 38400000: |
182 | val |= TWL4030_APLL_INFREQ_38400KHZ; | 189 | val = TWL4030_APLL_INFREQ_38400KHZ; |
183 | break; | 190 | break; |
184 | default: | 191 | default: |
185 | dev_err(&pdev->dev, "Invalid audio_mclk\n"); | 192 | dev_err(&pdev->dev, "Invalid audio_mclk\n"); |
186 | return -EINVAL; | 193 | return -EINVAL; |
187 | } | 194 | } |
188 | twl_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, | 195 | twl_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, val, TWL4030_REG_APLL_CTL); |
189 | val, TWL4030_REG_APLL_CTL); | ||
190 | |||
191 | audio = devm_kzalloc(&pdev->dev, sizeof(struct twl4030_audio), | ||
192 | GFP_KERNEL); | ||
193 | if (!audio) | ||
194 | return -ENOMEM; | ||
195 | |||
196 | platform_set_drvdata(pdev, audio); | ||
197 | |||
198 | twl4030_audio_dev = pdev; | ||
199 | mutex_init(&audio->mutex); | ||
200 | audio->audio_mclk = pdata->audio_mclk; | ||
201 | 196 | ||
202 | /* Codec power */ | 197 | /* Codec power */ |
203 | audio->resource[TWL4030_AUDIO_RES_POWER].reg = TWL4030_REG_CODEC_MODE; | 198 | audio->resource[TWL4030_AUDIO_RES_POWER].reg = TWL4030_REG_CODEC_MODE; |
@@ -222,6 +217,9 @@ static int __devinit twl4030_audio_probe(struct platform_device *pdev) | |||
222 | childs++; | 217 | childs++; |
223 | } | 218 | } |
224 | 219 | ||
220 | platform_set_drvdata(pdev, audio); | ||
221 | twl4030_audio_dev = pdev; | ||
222 | |||
225 | if (childs) | 223 | if (childs) |
226 | ret = mfd_add_devices(&pdev->dev, pdev->id, audio->cells, | 224 | ret = mfd_add_devices(&pdev->dev, pdev->id, audio->cells, |
227 | childs, NULL, 0); | 225 | childs, NULL, 0); |