Commit 49c008ec authored by Tero Kristo's avatar Tero Kristo Committed by Kevin Hilman

arm: omap3: twl: add external controllers for core voltage regulators

VDD1 and VDD2 now use voltage processor for controlling the regulators.
This is done by passing additional voltdm data during the regulator init.
Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
Reviewed-by: default avatarKevin Hilman <khilman@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
parent 23e22a5e
...@@ -31,12 +31,25 @@ ...@@ -31,12 +31,25 @@
#include "twl-common.h" #include "twl-common.h"
#include "pm.h" #include "pm.h"
#include "voltage.h"
static struct i2c_board_info __initdata pmic_i2c_board_info = { static struct i2c_board_info __initdata pmic_i2c_board_info = {
.addr = 0x48, .addr = 0x48,
.flags = I2C_CLIENT_WAKE, .flags = I2C_CLIENT_WAKE,
}; };
static int twl_set_voltage(void *data, int target_uV)
{
struct voltagedomain *voltdm = (struct voltagedomain *)data;
return voltdm_scale(voltdm, target_uV);
}
static int twl_get_voltage(void *data)
{
struct voltagedomain *voltdm = (struct voltagedomain *)data;
return voltdm_get_voltage(voltdm);
}
void __init omap_pmic_init(int bus, u32 clkrate, void __init omap_pmic_init(int bus, u32 clkrate,
const char *pmic_type, int pmic_irq, const char *pmic_type, int pmic_irq,
struct twl4030_platform_data *pmic_data) struct twl4030_platform_data *pmic_data)
...@@ -158,6 +171,16 @@ static struct regulator_init_data omap3_vdd2 = { ...@@ -158,6 +171,16 @@ static struct regulator_init_data omap3_vdd2 = {
.consumer_supplies = omap3_vdd2_supply, .consumer_supplies = omap3_vdd2_supply,
}; };
static struct twl_regulator_driver_data omap3_vdd1_drvdata = {
.get_voltage = twl_get_voltage,
.set_voltage = twl_set_voltage,
};
static struct twl_regulator_driver_data omap3_vdd2_drvdata = {
.get_voltage = twl_get_voltage,
.set_voltage = twl_set_voltage,
};
void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data, void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
u32 pdata_flags, u32 regulators_flags) u32 pdata_flags, u32 regulators_flags)
{ {
...@@ -165,10 +188,16 @@ void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data, ...@@ -165,10 +188,16 @@ void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
pmic_data->irq_base = TWL4030_IRQ_BASE; pmic_data->irq_base = TWL4030_IRQ_BASE;
if (!pmic_data->irq_end) if (!pmic_data->irq_end)
pmic_data->irq_end = TWL4030_IRQ_END; pmic_data->irq_end = TWL4030_IRQ_END;
if (!pmic_data->vdd1) if (!pmic_data->vdd1) {
omap3_vdd1.driver_data = &omap3_vdd1_drvdata;
omap3_vdd1_drvdata.data = voltdm_lookup("mpu_iva");
pmic_data->vdd1 = &omap3_vdd1; pmic_data->vdd1 = &omap3_vdd1;
if (!pmic_data->vdd2) }
if (!pmic_data->vdd2) {
omap3_vdd2.driver_data = &omap3_vdd2_drvdata;
omap3_vdd2_drvdata.data = voltdm_lookup("core");
pmic_data->vdd2 = &omap3_vdd2; pmic_data->vdd2 = &omap3_vdd2;
}
/* Common platform data configurations */ /* Common platform data configurations */
if (pdata_flags & TWL_COMMON_PDATA_USB && !pmic_data->usb) if (pdata_flags & TWL_COMMON_PDATA_USB && !pmic_data->usb)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment