@@ -26,6 +26,9 @@
#include <linux/input.h>
#include <linux/input/matrix_keypad.h>
#include <linux/spi/spi.h>
+#include <linux/regulator/machine.h>
+#include <linux/regulator/consumer.h>
+#include <linux/regulator/driver.h>
#include <asm/mach/arch.h>
#include <asm/mach-types.h>
@@ -260,7 +263,95 @@ static struct platform_device spi_master_device = {
.dev.platform_data = &spi_master_data,
};
+static struct regulator_consumer_supply usb_consumers[] = {
+ REGULATOR_SUPPLY("vbus", "musb_hdrc.1"),
+};
+
+static struct regulator_consumer_supply lcd_consumers[] = {
+ REGULATOR_SUPPLY("vlcd", "tps6116x"),
+};
+
+static struct regulator_init_data regulators[] = {
+ {
+ .constraints = {
+ .name = "DCDC1",
+ .min_uV = 1000000,
+ .max_uV = 1000000,
+ .always_on = 1,
+ .boot_on = 1,
+ },
+ },
+ {
+ .constraints = {
+ .name = "DCDC2",
+ .min_uV = 1800000,
+ .max_uV = 1800000,
+ .always_on = 1,
+ .boot_on = 1,
+ },
+ },
+ {
+ .constraints = {
+ .name = "DCDC3",
+ .min_uV = 3300000,
+ .max_uV = 3300000,
+ .always_on = 1,
+ .boot_on = 1,
+ },
+ },
+ {
+ .constraints = {
+ .name = "LDO1",
+ .min_uV = 4800000,
+ .max_uV = 4800000,
+ .min_uA = 400000,
+ .max_uA = 1500000,
+ .always_on = 1,
+ .boot_on = 1,
+ },
+ },
+ {
+ .constraints = {
+ .name = "LDO1",
+ .min_uV = 3300000,
+ .max_uV = 3300000,
+ .always_on = 1,
+ .boot_on = 1,
+ },
+ },
+ {
+ .num_consumer_supplies = ARRAY_SIZE(usb_consumers),
+ .consumer_supplies = usb_consumers,
+ .constraints = {
+ .name = "USB",
+ .min_uV = 5000000,
+ .max_uV = 5000000,
+ .min_uA = 200000,
+ .max_uA = 1000000,
+ .valid_ops_mask = REGULATOR_CHANGE_CURRENT |
+ REGULATOR_CHANGE_STATUS,
+ },
+ },
+ {
+ .num_consumer_supplies = ARRAY_SIZE(lcd_consumers),
+ .consumer_supplies = lcd_consumers,
+ .constraints = {
+ .name = "LCD",
+ .min_uV = 5000000,
+ .max_uV = 5000000,
+ .valid_ops_mask = REGULATOR_CHANGE_STATUS,
+ },
+ },
+};
+
static struct spi_board_info spi_info[] __initconst = {
+ {
+ .modalias = "tps6524x",
+ .bus_num = 0,
+ .chip_select = 0,
+ .mode = SPI_MODE_0,
+ .platform_data = regulators,
+ },
};
static __init void tnetv107x_evm_board_init(void)