ARM: davinci: da850-evm: switch to using a fixed regulator for lcdc
authorBartosz Golaszewski <bgolaszewski@baylibre.com>
Mon, 22 Jul 2019 13:44:19 +0000 (15:44 +0200)
committerSekhar Nori <nsekhar@ti.com>
Mon, 26 Aug 2019 12:23:57 +0000 (17:53 +0530)
Now that the da8xx fbdev driver supports power control with an actual
regulator, switch to using a fixed power supply for da850-evm.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
arch/arm/mach-davinci/board-da850-evm.c

index ac05d4838f1e9aa48971cdabe183610793715686..5b3549f1236c56ee787b10ec43ef2aac93a4e583 100644 (file)
@@ -803,12 +803,6 @@ static const short da850_evm_mmcsd0_pins[] __initconst = {
        -1
 };
 
-static void da850_panel_power_ctrl(int val)
-{
-       /* lcd power */
-       gpio_set_value(DA850_LCD_PWR_PIN, val);
-}
-
 static struct property_entry da850_lcd_backlight_props[] = {
        PROPERTY_ENTRY_BOOL("default-on"),
        { }
@@ -828,28 +822,61 @@ static const struct platform_device_info da850_lcd_backlight_info = {
        .properties     = da850_lcd_backlight_props,
 };
 
+static struct regulator_consumer_supply da850_lcd_supplies[] = {
+       REGULATOR_SUPPLY("lcd", NULL),
+};
+
+static struct regulator_init_data da850_lcd_supply_data = {
+       .consumer_supplies      = da850_lcd_supplies,
+       .num_consumer_supplies  = ARRAY_SIZE(da850_lcd_supplies),
+       .constraints    = {
+               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
+       },
+};
+
+static struct fixed_voltage_config da850_lcd_supply = {
+       .supply_name            = "lcd",
+       .microvolts             = 33000000,
+       .init_data              = &da850_lcd_supply_data,
+};
+
+static struct platform_device da850_lcd_supply_device = {
+       .name                   = "reg-fixed-voltage",
+       .id                     = 1, /* Dummy fixed regulator is 0 */
+       .dev                    = {
+               .platform_data = &da850_lcd_supply,
+       },
+};
+
+static struct gpiod_lookup_table da850_lcd_supply_gpio_table = {
+       .dev_id                 = "reg-fixed-voltage.1",
+       .table = {
+               GPIO_LOOKUP("davinci_gpio", DA850_LCD_PWR_PIN, NULL, 0),
+               { }
+       },
+};
+
+static struct gpiod_lookup_table *da850_lcd_gpio_lookups[] = {
+       &da850_lcd_backlight_gpio_table,
+       &da850_lcd_supply_gpio_table,
+};
+
 static int da850_lcd_hw_init(void)
 {
        struct platform_device *backlight;
        int status;
 
-       gpiod_add_lookup_table(&da850_lcd_backlight_gpio_table);
+       gpiod_add_lookup_tables(da850_lcd_gpio_lookups,
+                               ARRAY_SIZE(da850_lcd_gpio_lookups));
+
        backlight = platform_device_register_full(&da850_lcd_backlight_info);
        if (IS_ERR(backlight))
                return PTR_ERR(backlight);
 
-       status = gpio_request(DA850_LCD_PWR_PIN, "lcd pwr");
-       if (status < 0)
+       status = platform_device_register(&da850_lcd_supply_device);
+       if (status)
                return status;
 
-       gpio_direction_output(DA850_LCD_PWR_PIN, 0);
-
-       /* Switch off panel power */
-       da850_panel_power_ctrl(0);
-
-       /* Switch on panel power */
-       da850_panel_power_ctrl(1);
-
        return 0;
 }
 
@@ -1459,7 +1486,6 @@ static __init void da850_evm_init(void)
        if (ret)
                pr_warn("%s: LCD initialization failed: %d\n", __func__, ret);
 
-       sharp_lk043t1dg01_pdata.panel_power_ctrl = da850_panel_power_ctrl,
        ret = da8xx_register_lcdc(&sharp_lk043t1dg01_pdata);
        if (ret)
                pr_warn("%s: LCDC registration failed: %d\n", __func__, ret);