/* LCD */
 
-static int ldp_backlight_gpio;
-static int ldp_lcd_enable_gpio;
-
 #define LCD_PANEL_RESET_GPIO           55
 #define LCD_PANEL_QVGA_GPIO            56
 
-static int ldp_panel_enable_lcd(struct omap_dss_device *dssdev)
-{
-       if (gpio_is_valid(ldp_lcd_enable_gpio))
-               gpio_direction_output(ldp_lcd_enable_gpio, 1);
-       if (gpio_is_valid(ldp_backlight_gpio))
-               gpio_direction_output(ldp_backlight_gpio, 1);
-
-       return 0;
-}
-
-static void ldp_panel_disable_lcd(struct omap_dss_device *dssdev)
-{
-       if (gpio_is_valid(ldp_lcd_enable_gpio))
-               gpio_direction_output(ldp_lcd_enable_gpio, 0);
-       if (gpio_is_valid(ldp_backlight_gpio))
-               gpio_direction_output(ldp_backlight_gpio, 0);
-}
-
 static struct panel_generic_dpi_data ldp_panel_data = {
        .name                   = "nec_nl2432dr22-11b",
-       .platform_enable        = ldp_panel_enable_lcd,
-       .platform_disable       = ldp_panel_disable_lcd,
+       .num_gpios              = 4,
+       /* gpios filled in code */
 };
 
 static struct omap_dss_device ldp_lcd_device = {
 
 static void __init ldp_display_init(void)
 {
-       int r;
-
-       static struct gpio gpios[] __initdata = {
-               {LCD_PANEL_RESET_GPIO, GPIOF_OUT_INIT_HIGH, "LCD RESET"},
-               {LCD_PANEL_QVGA_GPIO, GPIOF_OUT_INIT_HIGH, "LCD QVGA"},
-       };
-
-       r = gpio_request_array(gpios, ARRAY_SIZE(gpios));
-       if (r) {
-               pr_err("Cannot request LCD GPIOs, error %d\n", r);
-               return;
-       }
+       ldp_panel_data.gpios[2] = LCD_PANEL_RESET_GPIO;
+       ldp_panel_data.gpios[3] = LCD_PANEL_QVGA_GPIO;
 
        omap_display_init(&ldp_dss_data);
 }
 
 static int ldp_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio)
 {
-       int r;
-
-       struct gpio gpios[] = {
-               {gpio + 7 , GPIOF_OUT_INIT_LOW, "LCD ENABLE"},
-               {gpio + 15, GPIOF_OUT_INIT_LOW, "LCD BACKLIGHT"},
-       };
-
-       r = gpio_request_array(gpios, ARRAY_SIZE(gpios));
-       if (r) {
-               pr_err("Cannot request LCD GPIOs, error %d\n", r);
-               ldp_backlight_gpio = -EINVAL;
-               ldp_lcd_enable_gpio = -EINVAL;
-               return r;
-       }
-
-       ldp_backlight_gpio = gpio + 15;
-       ldp_lcd_enable_gpio = gpio + 7;
+       ldp_panel_data.gpios[0] = gpio + 7;
+       ldp_panel_data.gpio_invert[0] = true;
+
+       ldp_panel_data.gpios[1] = gpio + 15;
+       ldp_panel_data.gpio_invert[1] = true;
 
        return 0;
 }