Skip to content

Commit

Permalink
regulator: twl: add clk32kg to twl-regulator
Browse files Browse the repository at this point in the history
In OMAP4 Blaze and Panda, 32KHz clock to WLAN is supplied from Phoenix
TWL6030. The 32KHz clock state (ON/OFF) is configured in
CLK32KG_CFG_[GRP, TRANS, STATE] register. This follows the same register
programming model as other regulators in TWL6030. So add CLK32KG as pseudo
regulator.

Signed-off-by: Balaji T K <balajitk@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
  • Loading branch information
balajitk authored and Samuel Ortiz committed Mar 23, 2011
1 parent dae2db3 commit 8e6de4a
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
4 changes: 4 additions & 0 deletions drivers/mfd/twl-core.c
Expand Up @@ -864,6 +864,10 @@ add_children(struct twl4030_platform_data *pdata, unsigned long features)
child = add_regulator(TWL6030_REG_VAUX3_6030, pdata->vaux3);
if (IS_ERR(child))
return PTR_ERR(child);

child = add_regulator(TWL6030_REG_CLK32KG, pdata->clk32kg);
if (IS_ERR(child))
return PTR_ERR(child);
}

if (twl_has_bci() && pdata->bci &&
Expand Down
24 changes: 23 additions & 1 deletion drivers/regulator/twl-regulator.c
Expand Up @@ -475,6 +475,13 @@ static struct regulator_ops twlfixed_ops = {
.get_status = twlreg_get_status,
};

static struct regulator_ops twl6030_fixed_resource = {
.enable = twlreg_enable,
.disable = twlreg_disable,
.is_enabled = twlreg_is_enabled,
.get_status = twlreg_get_status,
};

/*----------------------------------------------------------------------*/

#define TWL4030_FIXED_LDO(label, offset, mVolts, num, turnon_delay, \
Expand Down Expand Up @@ -538,6 +545,20 @@ static struct regulator_ops twlfixed_ops = {
}, \
}

#define TWL6030_FIXED_RESOURCE(label, offset, num, turnon_delay, remap_conf) { \
.base = offset, \
.id = num, \
.delay = turnon_delay, \
.remap = remap_conf, \
.desc = { \
.name = #label, \
.id = TWL6030_REG_##label, \
.ops = &twl6030_fixed_resource, \
.type = REGULATOR_VOLTAGE, \
.owner = THIS_MODULE, \
}, \
}

/*
* We list regulators here if systems need some level of
* software control over them after boot.
Expand Down Expand Up @@ -577,7 +598,8 @@ static struct twlreg_info twl_regs[] = {
TWL6030_FIXED_LDO(VANA, 0x50, 2100, 15, 0, 0x21),
TWL6030_FIXED_LDO(VCXIO, 0x60, 1800, 16, 0, 0x21),
TWL6030_FIXED_LDO(VDAC, 0x64, 1800, 17, 0, 0x21),
TWL6030_FIXED_LDO(VUSB, 0x70, 3300, 18, 0, 0x21)
TWL6030_FIXED_LDO(VUSB, 0x70, 3300, 18, 0, 0x21),
TWL6030_FIXED_RESOURCE(CLK32KG, 0x8C, 48, 0, 0x21),
};

static int __devinit twlreg_probe(struct platform_device *pdev)
Expand Down
2 changes: 2 additions & 0 deletions include/linux/i2c/twl.h
Expand Up @@ -698,6 +698,7 @@ struct twl4030_platform_data {
struct regulator_init_data *vana;
struct regulator_init_data *vcxio;
struct regulator_init_data *vusb;
struct regulator_init_data *clk32kg;
};

/*----------------------------------------------------------------------*/
Expand Down Expand Up @@ -777,5 +778,6 @@ static inline int twl4030charger_usb_en(int enable) { return 0; }

/* INTERNAL LDOs */
#define TWL6030_REG_VRTC 47
#define TWL6030_REG_CLK32KG 48

#endif /* End of __TWL4030_H */

0 comments on commit 8e6de4a

Please sign in to comment.