diff options
author | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2011-07-04 03:28:28 -0400 |
---|---|---|
committer | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2011-07-07 07:23:46 -0400 |
commit | cfb7a33bea259d2d72a64adcb3de28532170dc25 (patch) | |
tree | c7faae49b5bf6f5396207591ffde2dd1f3d724e8 | |
parent | 753621c2155bd49bff7d5d3844b3ddc203e44a06 (diff) |
MFD: twl6040: Remove enum for PLL tracking
There is no need to have two different types for
tracking the selected PLL.
Use only the defines, when dealing with the PLLs.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r-- | drivers/mfd/twl6040-core.c | 26 | ||||
-rw-r--r-- | include/linux/mfd/twl6040.h | 17 |
2 files changed, 19 insertions, 24 deletions
diff --git a/drivers/mfd/twl6040-core.c b/drivers/mfd/twl6040-core.c index 6843977f4e87..24d436c2fe4a 100644 --- a/drivers/mfd/twl6040-core.c +++ b/drivers/mfd/twl6040-core.c | |||
@@ -270,7 +270,8 @@ int twl6040_power(struct twl6040 *twl6040, int on) | |||
270 | goto out; | 270 | goto out; |
271 | } | 271 | } |
272 | } | 272 | } |
273 | twl6040->pll = TWL6040_LPPLL_ID; | 273 | /* Default PLL configuration after power up */ |
274 | twl6040->pll = TWL6040_SYSCLK_SEL_LPPLL; | ||
274 | twl6040->sysclk = 19200000; | 275 | twl6040->sysclk = 19200000; |
275 | } else { | 276 | } else { |
276 | /* already powered-down */ | 277 | /* already powered-down */ |
@@ -294,7 +295,6 @@ int twl6040_power(struct twl6040 *twl6040, int on) | |||
294 | /* use manual power-down sequence */ | 295 | /* use manual power-down sequence */ |
295 | twl6040_power_down(twl6040); | 296 | twl6040_power_down(twl6040); |
296 | } | 297 | } |
297 | twl6040->pll = TWL6040_NOPLL_ID; | ||
298 | twl6040->sysclk = 0; | 298 | twl6040->sysclk = 0; |
299 | } | 299 | } |
300 | 300 | ||
@@ -304,7 +304,7 @@ out: | |||
304 | } | 304 | } |
305 | EXPORT_SYMBOL(twl6040_power); | 305 | EXPORT_SYMBOL(twl6040_power); |
306 | 306 | ||
307 | int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id, | 307 | int twl6040_set_pll(struct twl6040 *twl6040, int pll_id, |
308 | unsigned int freq_in, unsigned int freq_out) | 308 | unsigned int freq_in, unsigned int freq_out) |
309 | { | 309 | { |
310 | u8 hppllctl, lppllctl; | 310 | u8 hppllctl, lppllctl; |
@@ -315,8 +315,8 @@ int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id, | |||
315 | hppllctl = twl6040_reg_read(twl6040, TWL6040_REG_HPPLLCTL); | 315 | hppllctl = twl6040_reg_read(twl6040, TWL6040_REG_HPPLLCTL); |
316 | lppllctl = twl6040_reg_read(twl6040, TWL6040_REG_LPPLLCTL); | 316 | lppllctl = twl6040_reg_read(twl6040, TWL6040_REG_LPPLLCTL); |
317 | 317 | ||
318 | switch (id) { | 318 | switch (pll_id) { |
319 | case TWL6040_LPPLL_ID: | 319 | case TWL6040_SYSCLK_SEL_LPPLL: |
320 | /* low-power PLL divider */ | 320 | /* low-power PLL divider */ |
321 | switch (freq_out) { | 321 | switch (freq_out) { |
322 | case 17640000: | 322 | case 17640000: |
@@ -352,10 +352,8 @@ int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id, | |||
352 | ret = -EINVAL; | 352 | ret = -EINVAL; |
353 | goto pll_out; | 353 | goto pll_out; |
354 | } | 354 | } |
355 | |||
356 | twl6040->pll = TWL6040_LPPLL_ID; | ||
357 | break; | 355 | break; |
358 | case TWL6040_HPPLL_ID: | 356 | case TWL6040_SYSCLK_SEL_HPPLL: |
359 | /* high-performance PLL can provide only 19.2 MHz */ | 357 | /* high-performance PLL can provide only 19.2 MHz */ |
360 | if (freq_out != 19200000) { | 358 | if (freq_out != 19200000) { |
361 | dev_err(&twl6040_dev->dev, | 359 | dev_err(&twl6040_dev->dev, |
@@ -406,16 +404,15 @@ int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id, | |||
406 | twl6040_reg_write(twl6040, TWL6040_REG_LPPLLCTL, lppllctl); | 404 | twl6040_reg_write(twl6040, TWL6040_REG_LPPLLCTL, lppllctl); |
407 | lppllctl &= ~TWL6040_LPLLENA; | 405 | lppllctl &= ~TWL6040_LPLLENA; |
408 | twl6040_reg_write(twl6040, TWL6040_REG_LPPLLCTL, lppllctl); | 406 | twl6040_reg_write(twl6040, TWL6040_REG_LPPLLCTL, lppllctl); |
409 | |||
410 | twl6040->pll = TWL6040_HPPLL_ID; | ||
411 | break; | 407 | break; |
412 | default: | 408 | default: |
413 | dev_err(&twl6040_dev->dev, "unknown pll id %d\n", id); | 409 | dev_err(&twl6040_dev->dev, "unknown pll id %d\n", pll_id); |
414 | ret = -EINVAL; | 410 | ret = -EINVAL; |
415 | goto pll_out; | 411 | goto pll_out; |
416 | } | 412 | } |
417 | 413 | ||
418 | twl6040->sysclk = freq_out; | 414 | twl6040->sysclk = freq_out; |
415 | twl6040->pll = pll_id; | ||
419 | 416 | ||
420 | pll_out: | 417 | pll_out: |
421 | mutex_unlock(&twl6040->mutex); | 418 | mutex_unlock(&twl6040->mutex); |
@@ -423,9 +420,12 @@ pll_out: | |||
423 | } | 420 | } |
424 | EXPORT_SYMBOL(twl6040_set_pll); | 421 | EXPORT_SYMBOL(twl6040_set_pll); |
425 | 422 | ||
426 | enum twl6040_pll_id twl6040_get_pll(struct twl6040 *twl6040) | 423 | int twl6040_get_pll(struct twl6040 *twl6040) |
427 | { | 424 | { |
428 | return twl6040->pll; | 425 | if (twl6040->power_count) |
426 | return twl6040->pll; | ||
427 | else | ||
428 | return -ENODEV; | ||
429 | } | 429 | } |
430 | EXPORT_SYMBOL(twl6040_get_pll); | 430 | EXPORT_SYMBOL(twl6040_get_pll); |
431 | 431 | ||
diff --git a/include/linux/mfd/twl6040.h b/include/linux/mfd/twl6040.h index df890a247c36..4c806f6d663e 100644 --- a/include/linux/mfd/twl6040.h +++ b/include/linux/mfd/twl6040.h | |||
@@ -165,9 +165,6 @@ | |||
165 | #define TWL6040_RESETSPLIT 0x04 | 165 | #define TWL6040_RESETSPLIT 0x04 |
166 | #define TWL6040_INTCLRMODE 0x08 | 166 | #define TWL6040_INTCLRMODE 0x08 |
167 | 167 | ||
168 | #define TWL6040_SYSCLK_SEL_LPPLL 1 | ||
169 | #define TWL6040_SYSCLK_SEL_HPPLL 2 | ||
170 | |||
171 | /* STATUS (0x2E) fields */ | 168 | /* STATUS (0x2E) fields */ |
172 | 169 | ||
173 | #define TWL6040_PLUGCOMP 0x02 | 170 | #define TWL6040_PLUGCOMP 0x02 |
@@ -188,11 +185,9 @@ | |||
188 | #define TWL6040_IRQ_VIB 4 | 185 | #define TWL6040_IRQ_VIB 4 |
189 | #define TWL6040_IRQ_READY 5 | 186 | #define TWL6040_IRQ_READY 5 |
190 | 187 | ||
191 | enum twl6040_pll_id { | 188 | /* PLL selection */ |
192 | TWL6040_NOPLL_ID, | 189 | #define TWL6040_SYSCLK_SEL_LPPLL 0 |
193 | TWL6040_LPPLL_ID, | 190 | #define TWL6040_SYSCLK_SEL_HPPLL 1 |
194 | TWL6040_HPPLL_ID, | ||
195 | }; | ||
196 | 191 | ||
197 | struct twl6040 { | 192 | struct twl6040 { |
198 | struct device *dev; | 193 | struct device *dev; |
@@ -206,7 +201,7 @@ struct twl6040 { | |||
206 | int power_count; | 201 | int power_count; |
207 | int rev; | 202 | int rev; |
208 | 203 | ||
209 | enum twl6040_pll_id pll; | 204 | int pll; |
210 | unsigned int sysclk; | 205 | unsigned int sysclk; |
211 | 206 | ||
212 | unsigned int irq; | 207 | unsigned int irq; |
@@ -223,9 +218,9 @@ int twl6040_set_bits(struct twl6040 *twl6040, unsigned int reg, | |||
223 | int twl6040_clear_bits(struct twl6040 *twl6040, unsigned int reg, | 218 | int twl6040_clear_bits(struct twl6040 *twl6040, unsigned int reg, |
224 | u8 mask); | 219 | u8 mask); |
225 | int twl6040_power(struct twl6040 *twl6040, int on); | 220 | int twl6040_power(struct twl6040 *twl6040, int on); |
226 | int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id, | 221 | int twl6040_set_pll(struct twl6040 *twl6040, int pll_id, |
227 | unsigned int freq_in, unsigned int freq_out); | 222 | unsigned int freq_in, unsigned int freq_out); |
228 | enum twl6040_pll_id twl6040_get_pll(struct twl6040 *twl6040); | 223 | int twl6040_get_pll(struct twl6040 *twl6040); |
229 | unsigned int twl6040_get_sysclk(struct twl6040 *twl6040); | 224 | unsigned int twl6040_get_sysclk(struct twl6040 *twl6040); |
230 | int twl6040_irq_init(struct twl6040 *twl6040); | 225 | int twl6040_irq_init(struct twl6040 *twl6040); |
231 | void twl6040_irq_exit(struct twl6040 *twl6040); | 226 | void twl6040_irq_exit(struct twl6040 *twl6040); |