[ARM] pxa/mioa701: add Maxim 1586 voltage regulator
On this board, the PXA272 CPU voltage VCC_CORE is provided by a Maxim 1586 voltage regulator. Use the regulator framework to provide VCC_CORE control. When cpufreq will be updated to ask for vcc_core, this will optimize power drained by the board. Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Eric Miao <eric.miao@marvell.com>
This commit is contained in:
Родитель
6ea0414fc7
Коммит
9752e14898
|
@ -37,6 +37,7 @@
|
|||
#include <linux/wm97xx_batt.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/usb/gpio_vbus.h>
|
||||
#include <linux/regulator/max1586.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
@ -716,6 +717,37 @@ static struct wm97xx_batt_info mioa701_battery_data = {
|
|||
.batt_name = "mioa701_battery",
|
||||
};
|
||||
|
||||
/*
|
||||
* Voltage regulation
|
||||
*/
|
||||
static struct regulator_consumer_supply max1586_consumers[] = {
|
||||
{
|
||||
.supply = "vcc_core",
|
||||
}
|
||||
};
|
||||
|
||||
static struct regulator_init_data max1586_v3_info = {
|
||||
.constraints = {
|
||||
.name = "vcc_core range",
|
||||
.min_uV = 1000000,
|
||||
.max_uV = 1705000,
|
||||
.always_on = 1,
|
||||
.valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
|
||||
},
|
||||
.num_consumer_supplies = ARRAY_SIZE(max1586_consumers),
|
||||
.consumer_supplies = max1586_consumers,
|
||||
};
|
||||
|
||||
static struct max1586_subdev_data max1586_subdevs[] = {
|
||||
{ .name = "vcc_core", .id = MAX1586_V3,
|
||||
.platform_data = &max1586_v3_info },
|
||||
};
|
||||
|
||||
static struct max1586_platform_data max1586_info = {
|
||||
.subdevs = max1586_subdevs,
|
||||
.num_subdevs = ARRAY_SIZE(max1586_subdevs),
|
||||
};
|
||||
|
||||
/*
|
||||
* Camera interface
|
||||
*/
|
||||
|
@ -725,6 +757,13 @@ struct pxacamera_platform_data mioa701_pxacamera_platform_data = {
|
|||
.mclk_10khz = 5000,
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata mioa701_pi2c_devices[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("max1586", 0x14),
|
||||
.platform_data = &max1586_info,
|
||||
},
|
||||
};
|
||||
|
||||
static struct soc_camera_link iclink = {
|
||||
.bus_id = 0, /* Must match id in pxa27x_device_camera in device.c */
|
||||
};
|
||||
|
@ -825,7 +864,9 @@ static void __init mioa701_machine_init(void)
|
|||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
gsm_init();
|
||||
|
||||
i2c_register_board_info(1, ARRAY_AND_SIZE(mioa701_pi2c_devices));
|
||||
pxa_set_i2c_info(&i2c_pdata);
|
||||
pxa27x_set_i2c_power_info(NULL);
|
||||
pxa_set_camera_info(&mioa701_pxacamera_platform_data);
|
||||
i2c_register_board_info(0, ARRAY_AND_SIZE(mioa701_i2c_devices));
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче