Skip to content

Commit

Permalink
MFD: twl6040: Remove enum for PLL tracking
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Peter Ujfalusi committed Jul 7, 2011
1 parent 753621c commit cfb7a33
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 24 deletions.
26 changes: 13 additions & 13 deletions drivers/mfd/twl6040-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,8 @@ int twl6040_power(struct twl6040 *twl6040, int on)
goto out;
}
}
twl6040->pll = TWL6040_LPPLL_ID;
/* Default PLL configuration after power up */
twl6040->pll = TWL6040_SYSCLK_SEL_LPPLL;
twl6040->sysclk = 19200000;
} else {
/* already powered-down */
Expand All @@ -294,7 +295,6 @@ int twl6040_power(struct twl6040 *twl6040, int on)
/* use manual power-down sequence */
twl6040_power_down(twl6040);
}
twl6040->pll = TWL6040_NOPLL_ID;
twl6040->sysclk = 0;
}

Expand All @@ -304,7 +304,7 @@ int twl6040_power(struct twl6040 *twl6040, int on)
}
EXPORT_SYMBOL(twl6040_power);

int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id,
int twl6040_set_pll(struct twl6040 *twl6040, int pll_id,
unsigned int freq_in, unsigned int freq_out)
{
u8 hppllctl, lppllctl;
Expand All @@ -315,8 +315,8 @@ int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id,
hppllctl = twl6040_reg_read(twl6040, TWL6040_REG_HPPLLCTL);
lppllctl = twl6040_reg_read(twl6040, TWL6040_REG_LPPLLCTL);

switch (id) {
case TWL6040_LPPLL_ID:
switch (pll_id) {
case TWL6040_SYSCLK_SEL_LPPLL:
/* low-power PLL divider */
switch (freq_out) {
case 17640000:
Expand Down Expand Up @@ -352,10 +352,8 @@ int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id,
ret = -EINVAL;
goto pll_out;
}

twl6040->pll = TWL6040_LPPLL_ID;
break;
case TWL6040_HPPLL_ID:
case TWL6040_SYSCLK_SEL_HPPLL:
/* high-performance PLL can provide only 19.2 MHz */
if (freq_out != 19200000) {
dev_err(&twl6040_dev->dev,
Expand Down Expand Up @@ -406,26 +404,28 @@ int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id,
twl6040_reg_write(twl6040, TWL6040_REG_LPPLLCTL, lppllctl);
lppllctl &= ~TWL6040_LPLLENA;
twl6040_reg_write(twl6040, TWL6040_REG_LPPLLCTL, lppllctl);

twl6040->pll = TWL6040_HPPLL_ID;
break;
default:
dev_err(&twl6040_dev->dev, "unknown pll id %d\n", id);
dev_err(&twl6040_dev->dev, "unknown pll id %d\n", pll_id);
ret = -EINVAL;
goto pll_out;
}

twl6040->sysclk = freq_out;
twl6040->pll = pll_id;

pll_out:
mutex_unlock(&twl6040->mutex);
return ret;
}
EXPORT_SYMBOL(twl6040_set_pll);

enum twl6040_pll_id twl6040_get_pll(struct twl6040 *twl6040)
int twl6040_get_pll(struct twl6040 *twl6040)
{
return twl6040->pll;
if (twl6040->power_count)
return twl6040->pll;
else
return -ENODEV;
}
EXPORT_SYMBOL(twl6040_get_pll);

Expand Down
17 changes: 6 additions & 11 deletions include/linux/mfd/twl6040.h
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,6 @@
#define TWL6040_RESETSPLIT 0x04
#define TWL6040_INTCLRMODE 0x08

#define TWL6040_SYSCLK_SEL_LPPLL 1
#define TWL6040_SYSCLK_SEL_HPPLL 2

/* STATUS (0x2E) fields */

#define TWL6040_PLUGCOMP 0x02
Expand All @@ -188,11 +185,9 @@
#define TWL6040_IRQ_VIB 4
#define TWL6040_IRQ_READY 5

enum twl6040_pll_id {
TWL6040_NOPLL_ID,
TWL6040_LPPLL_ID,
TWL6040_HPPLL_ID,
};
/* PLL selection */
#define TWL6040_SYSCLK_SEL_LPPLL 0
#define TWL6040_SYSCLK_SEL_HPPLL 1

struct twl6040 {
struct device *dev;
Expand All @@ -206,7 +201,7 @@ struct twl6040 {
int power_count;
int rev;

enum twl6040_pll_id pll;
int pll;
unsigned int sysclk;

unsigned int irq;
Expand All @@ -223,9 +218,9 @@ int twl6040_set_bits(struct twl6040 *twl6040, unsigned int reg,
int twl6040_clear_bits(struct twl6040 *twl6040, unsigned int reg,
u8 mask);
int twl6040_power(struct twl6040 *twl6040, int on);
int twl6040_set_pll(struct twl6040 *twl6040, enum twl6040_pll_id id,
int twl6040_set_pll(struct twl6040 *twl6040, int pll_id,
unsigned int freq_in, unsigned int freq_out);
enum twl6040_pll_id twl6040_get_pll(struct twl6040 *twl6040);
int twl6040_get_pll(struct twl6040 *twl6040);
unsigned int twl6040_get_sysclk(struct twl6040 *twl6040);
int twl6040_irq_init(struct twl6040 *twl6040);
void twl6040_irq_exit(struct twl6040 *twl6040);
Expand Down

0 comments on commit cfb7a33

Please sign in to comment.