- Fix regulator definitions to provide supplies required
  by frame buffer (OMAP DSS2) and touch panel drivers,
- fix LCD and touch panel power handling (as disabling the LCD power
  disabled touch panel as well which meant no more input events...),
- fix power module LED definition,
- update omap3_defconfig, enabling required drivers

Signed-off-by: Pawel Moll <[email protected]>
---
 arch/arm/configs/omap3_defconfig     |    5 +++
 arch/arm/mach-omap2/board-omap3evm.c |   51 +++++++++++++++++++++++++--------
 2 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/arch/arm/configs/omap3_defconfig b/arch/arm/configs/omap3_defconfig
index 5db9a6b..fd5980a 100644
--- a/arch/arm/configs/omap3_defconfig
+++ b/arch/arm/configs/omap3_defconfig
@@ -182,6 +182,7 @@ CONFIG_MENELAUS=y
 CONFIG_TWL4030_CORE=y
 CONFIG_TWL4030_POWER=y
 CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
 CONFIG_REGULATOR_TWL4030=y
 CONFIG_REGULATOR_TPS65023=y
 CONFIG_REGULATOR_TPS6507X=y
@@ -190,6 +191,10 @@ CONFIG_FIRMWARE_EDID=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_TILEBLITTING=y
 CONFIG_FB_OMAP_LCD_VGA=y
+CONFIG_OMAP2_DSS=y
+CONFIG_FB_OMAP2=y
+CONFIG_PANEL_GENERIC=y
+CONFIG_PANEL_SHARP_LS037V7DW01=y
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=y
 CONFIG_LCD_PLATFORM=y
diff --git a/arch/arm/mach-omap2/board-omap3evm.c 
b/arch/arm/mach-omap2/board-omap3evm.c
index 6494dbd..d180be7 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -31,6 +31,7 @@
 #include <linux/smsc911x.h>
 
 #include <linux/regulator/machine.h>
+#include <linux/regulator/fixed.h>
 
 #include <mach/hardware.h>
 #include <asm/mach-types.h>
@@ -157,8 +158,8 @@ static inline void __init omap3evm_init_smsc911x(void) { 
return; }
 #define OMAP3EVM_LCD_PANEL_ENVDD       153
 #define OMAP3EVM_LCD_PANEL_QVGA                154
 #define OMAP3EVM_LCD_PANEL_RESB                155
-#define OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO        210
 #define OMAP3EVM_DVI_PANEL_EN_GPIO     199
+#define OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO        210
 
 static int lcd_enabled;
 static int dvi_enabled;
@@ -243,7 +244,11 @@ static int omap3_evm_enable_lcd(struct omap_dss_device 
*dssdev)
 
 static void omap3_evm_disable_lcd(struct omap_dss_device *dssdev)
 {
+       /* We don't really want to cut off the panel power, as the touch panel
+        * is powered from the same source... */
+#if 0
        gpio_set_value(OMAP3EVM_LCD_PANEL_ENVDD, 1);
+#endif
 
        if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
                gpio_set_value(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
@@ -381,7 +386,7 @@ static struct gpio_led gpio_leds[] = {
        {
                .name                   = "omap3evm::ledb",
                /* normally not visible (board underside) */
-               .default_trigger        = "default-on",
+               .default_trigger        = "heartbeat",
                .gpio                   = -EINVAL,      /* gets replaced */
                .active_low             = true,
        },
@@ -419,15 +424,15 @@ static int omap3evm_twl_gpio_setup(struct device *dev,
         */
 
        /* TWL4030_GPIO_MAX + 0 == ledA, LCD Backlight control */
-       gpio_request(gpio + TWL4030_GPIO_MAX, "EN_LCD_BKL");
-       gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
+       gpio_request(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, "EN_LCD_BKL");
+       gpio_direction_output(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0);
 
        /* gpio + 7 == DVI Enable */
        gpio_request(gpio + 7, "EN_DVI");
        gpio_direction_output(gpio + 7, 0);
 
        /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */
-       gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
+       gpio_leds[0].gpio = gpio + TWL4030_GPIO_MAX + 1;
 
        platform_device_register(&leds_gpio);
 
@@ -493,10 +498,8 @@ static struct twl4030_codec_data omap3evm_codec_data = {
        .audio = &omap3evm_audio_data,
 };
 
-static struct regulator_consumer_supply omap3_evm_vdda_dac_supply = {
-       .supply         = "vdda_dac",
-       .dev            = &omap3_evm_dss_device.dev,
-};
+static struct regulator_consumer_supply omap3_evm_vdda_dac_supply = 
+       REGULATOR_SUPPLY("vdda_dac", "omapdss");
 
 /* VDAC for DSS driving S-Video */
 static struct regulator_init_data omap3_evm_vdac = {
@@ -514,10 +517,8 @@ static struct regulator_init_data omap3_evm_vdac = {
 };
 
 /* VPLL2 for digital video outputs */
-static struct regulator_consumer_supply omap3_evm_vpll2_supply = {
-       .supply         = "vdvi",
-       .dev            = &omap3_evm_lcd_device.dev,
-};
+static struct regulator_consumer_supply omap3_evm_vpll2_supply =
+       REGULATOR_SUPPLY("vdds_dsi", "omapdss");
 
 static struct regulator_init_data omap3_evm_vpll2 = {
        .constraints = {
@@ -573,6 +574,29 @@ static int __init omap3_evm_i2c_init(void)
        return 0;
 }
 
+static struct regulator_consumer_supply ads7846_consumer_supply =
+       REGULATOR_SUPPLY("vcc", "spi1.0");
+
+struct regulator_init_data ads7846_vcc_initdata = {
+       .consumer_supplies = &ads7846_consumer_supply,
+       .num_consumer_supplies = 1,
+};
+
+static struct fixed_voltage_config ads7846_vcc_config = {
+       .supply_name = "VIO_1v8",
+       .microvolts = 1800000,
+       .gpio = -1,
+       .init_data = &ads7846_vcc_initdata,
+};
+
+static struct platform_device omap3_evm_ads7846_vcc_device = {
+       .name   = "reg-fixed-voltage",
+       .id     = -1,
+       .dev    = {
+               .platform_data = &ads7846_vcc_config,
+       },
+};
+
 static void ads7846_dev_init(void)
 {
        if (gpio_request(OMAP3_EVM_TS_GPIO, "ADS7846 pendown") < 0)
@@ -631,6 +655,7 @@ static void __init omap3_evm_init_irq(void)
 }
 
 static struct platform_device *omap3_evm_devices[] __initdata = {
+       &omap3_evm_ads7846_vcc_device,
        &omap3_evm_dss_device,
 };
 
-- 
1.6.3.3

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to