|
@@ -28,6 +28,7 @@
|
|
|
#include <linux/mtd/partitions.h>
|
|
|
#include <linux/mtd/nand.h>
|
|
|
|
|
|
+#include <linux/regulator/machine.h>
|
|
|
#include <linux/i2c/twl4030.h>
|
|
|
|
|
|
#include <mach/hardware.h>
|
|
@@ -120,6 +121,23 @@ static struct twl4030_hsmmc_info mmc[] = {
|
|
|
{} /* Terminator */
|
|
|
};
|
|
|
|
|
|
+static struct platform_device omap3_beagle_lcd_device = {
|
|
|
+ .name = "omap3beagle_lcd",
|
|
|
+ .id = -1,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_lcd_config omap3_beagle_lcd_config __initdata = {
|
|
|
+ .ctrl_name = "internal",
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_consumer_supply beagle_vmmc1_supply = {
|
|
|
+ .supply = "vmmc",
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_consumer_supply beagle_vsim_supply = {
|
|
|
+ .supply = "vmmc_aux",
|
|
|
+};
|
|
|
+
|
|
|
static struct gpio_led gpio_leds[];
|
|
|
|
|
|
static int beagle_twl_gpio_setup(struct device *dev,
|
|
@@ -130,6 +148,10 @@ static int beagle_twl_gpio_setup(struct device *dev,
|
|
|
mmc[0].gpio_cd = gpio + 0;
|
|
|
twl4030_mmc_init(mmc);
|
|
|
|
|
|
+ /* link regulators to MMC adapters */
|
|
|
+ beagle_vmmc1_supply.dev = mmc[0].dev;
|
|
|
+ beagle_vsim_supply.dev = mmc[0].dev;
|
|
|
+
|
|
|
/* REVISIT: need ehci-omap hooks for external VBUS
|
|
|
* power switch and overcurrent detect
|
|
|
*/
|
|
@@ -158,12 +180,85 @@ static struct twl4030_gpio_platform_data beagle_gpio_data = {
|
|
|
.setup = beagle_twl_gpio_setup,
|
|
|
};
|
|
|
|
|
|
+static struct regulator_consumer_supply beagle_vdac_supply = {
|
|
|
+ .supply = "vdac",
|
|
|
+ .dev = &omap3_beagle_lcd_device.dev,
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_consumer_supply beagle_vdvi_supply = {
|
|
|
+ .supply = "vdvi",
|
|
|
+ .dev = &omap3_beagle_lcd_device.dev,
|
|
|
+};
|
|
|
+
|
|
|
+/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
|
|
|
+static struct regulator_init_data beagle_vmmc1 = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1850000,
|
|
|
+ .max_uV = 3150000,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = 1,
|
|
|
+ .consumer_supplies = &beagle_vmmc1_supply,
|
|
|
+};
|
|
|
+
|
|
|
+/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
|
|
|
+static struct regulator_init_data beagle_vsim = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1800000,
|
|
|
+ .max_uV = 3000000,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = 1,
|
|
|
+ .consumer_supplies = &beagle_vsim_supply,
|
|
|
+};
|
|
|
+
|
|
|
+/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */
|
|
|
+static struct regulator_init_data beagle_vdac = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1800000,
|
|
|
+ .max_uV = 1800000,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = 1,
|
|
|
+ .consumer_supplies = &beagle_vdac_supply,
|
|
|
+};
|
|
|
+
|
|
|
+/* VPLL2 for digital video outputs */
|
|
|
+static struct regulator_init_data beagle_vpll2 = {
|
|
|
+ .constraints = {
|
|
|
+ .name = "VDVI",
|
|
|
+ .min_uV = 1800000,
|
|
|
+ .max_uV = 1800000,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = 1,
|
|
|
+ .consumer_supplies = &beagle_vdvi_supply,
|
|
|
+};
|
|
|
+
|
|
|
static struct twl4030_platform_data beagle_twldata = {
|
|
|
.irq_base = TWL4030_IRQ_BASE,
|
|
|
.irq_end = TWL4030_IRQ_END,
|
|
|
|
|
|
/* platform_data for children goes here */
|
|
|
.gpio = &beagle_gpio_data,
|
|
|
+ .vmmc1 = &beagle_vmmc1,
|
|
|
+ .vsim = &beagle_vsim,
|
|
|
+ .vdac = &beagle_vdac,
|
|
|
+ .vpll2 = &beagle_vpll2,
|
|
|
};
|
|
|
|
|
|
static struct i2c_board_info __initdata beagle_i2c_boardinfo[] = {
|
|
@@ -195,15 +290,6 @@ static void __init omap3_beagle_init_irq(void)
|
|
|
omap_gpio_init();
|
|
|
}
|
|
|
|
|
|
-static struct platform_device omap3_beagle_lcd_device = {
|
|
|
- .name = "omap3beagle_lcd",
|
|
|
- .id = -1,
|
|
|
-};
|
|
|
-
|
|
|
-static struct omap_lcd_config omap3_beagle_lcd_config __initdata = {
|
|
|
- .ctrl_name = "internal",
|
|
|
-};
|
|
|
-
|
|
|
static struct gpio_led gpio_leds[] = {
|
|
|
{
|
|
|
.name = "beagleboard::usr0",
|