OMAPDSS: Taal: move reset gpio handling to taal driver
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 20 Feb 2012 10:18:52 +0000 (12:18 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 9 May 2012 07:53:05 +0000 (10:53 +0300)
The reset GPIO for Taal panel driver is currently requested in the
4430sdp board file. This patch moves the gpio request/free into the Taal
driver, where it should be.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/board-4430sdp.c
drivers/video/omap2/displays/panel-taal.c

index 130ab00..6cbb16f 100644 (file)
@@ -758,21 +758,6 @@ static struct omap_dss_device sdp4430_lcd2_device = {
        .channel                = OMAP_DSS_CHANNEL_LCD2,
 };
 
-static void sdp4430_lcd_init(void)
-{
-       int r;
-
-       r = gpio_request_one(dsi1_panel.reset_gpio, GPIOF_DIR_OUT,
-               "lcd1_reset_gpio");
-       if (r)
-               pr_err("%s: Could not get lcd1_reset_gpio\n", __func__);
-
-       r = gpio_request_one(dsi2_panel.reset_gpio, GPIOF_DIR_OUT,
-               "lcd2_reset_gpio");
-       if (r)
-               pr_err("%s: Could not get lcd2_reset_gpio\n", __func__);
-}
-
 static struct omap_dss_hdmi_data sdp4430_hdmi_data = {
        .hpd_gpio = HDMI_GPIO_HPD,
 };
@@ -858,7 +843,6 @@ static void __init omap_4430sdp_display_init(void)
        if (r)
                pr_err("%s: Could not get display_sel GPIO\n", __func__);
 
-       sdp4430_lcd_init();
        sdp4430_picodlp_init();
        omap_display_init(&sdp4430_dss_data);
        /*
index 0f21fa5..0888162 100644 (file)
@@ -993,6 +993,15 @@ static int taal_probe(struct omap_dss_device *dssdev)
 
        dev_set_drvdata(&dssdev->dev, td);
 
+       if (gpio_is_valid(panel_data->reset_gpio)) {
+               r = gpio_request_one(panel_data->reset_gpio, GPIOF_OUT_INIT_LOW,
+                               "taal rst");
+               if (r) {
+                       dev_err(&dssdev->dev, "failed to request reset gpio\n");
+                       goto err_rst_gpio;
+               }
+       }
+
        taal_hw_reset(dssdev);
 
        if (panel_data->use_dsi_backlight) {
@@ -1073,6 +1082,9 @@ err_gpio:
        if (bldev != NULL)
                backlight_device_unregister(bldev);
 err_bl:
+       if (gpio_is_valid(panel_data->reset_gpio))
+               gpio_free(panel_data->reset_gpio);
+err_rst_gpio:
        destroy_workqueue(td->workqueue);
 err_wq:
        free_regulators(panel_config->regulators, panel_config->num_regulators);
@@ -1116,6 +1128,9 @@ static void __exit taal_remove(struct omap_dss_device *dssdev)
        free_regulators(td->panel_config->regulators,
                        td->panel_config->num_regulators);
 
+       if (gpio_is_valid(panel_data->reset_gpio))
+               gpio_free(panel_data->reset_gpio);
+
        kfree(td);
 }