aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/displays/panel-taal.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/omap2/displays/panel-taal.c')
-rw-r--r--drivers/video/omap2/displays/panel-taal.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c
index 3053399faf9a..2ce9992f403b 100644
--- a/drivers/video/omap2/displays/panel-taal.c
+++ b/drivers/video/omap2/displays/panel-taal.c
@@ -912,6 +912,15 @@ static int taal_probe(struct omap_dss_device *dssdev)
912 912
913 dev_set_drvdata(&dssdev->dev, td); 913 dev_set_drvdata(&dssdev->dev, td);
914 914
915 if (gpio_is_valid(panel_data->reset_gpio)) {
916 r = gpio_request_one(panel_data->reset_gpio, GPIOF_OUT_INIT_LOW,
917 "taal rst");
918 if (r) {
919 dev_err(&dssdev->dev, "failed to request reset gpio\n");
920 goto err_rst_gpio;
921 }
922 }
923
915 taal_hw_reset(dssdev); 924 taal_hw_reset(dssdev);
916 925
917 if (panel_data->use_dsi_backlight) { 926 if (panel_data->use_dsi_backlight) {
@@ -992,6 +1001,9 @@ err_gpio:
992 if (bldev != NULL) 1001 if (bldev != NULL)
993 backlight_device_unregister(bldev); 1002 backlight_device_unregister(bldev);
994err_bl: 1003err_bl:
1004 if (gpio_is_valid(panel_data->reset_gpio))
1005 gpio_free(panel_data->reset_gpio);
1006err_rst_gpio:
995 destroy_workqueue(td->workqueue); 1007 destroy_workqueue(td->workqueue);
996err_wq: 1008err_wq:
997 kfree(td); 1009 kfree(td);
@@ -1030,15 +1042,25 @@ static void __exit taal_remove(struct omap_dss_device *dssdev)
1030 /* reset, to be sure that the panel is in a valid state */ 1042 /* reset, to be sure that the panel is in a valid state */
1031 taal_hw_reset(dssdev); 1043 taal_hw_reset(dssdev);
1032 1044
1045 if (gpio_is_valid(panel_data->reset_gpio))
1046 gpio_free(panel_data->reset_gpio);
1047
1033 kfree(td); 1048 kfree(td);
1034} 1049}
1035 1050
1036static int taal_power_on(struct omap_dss_device *dssdev) 1051static int taal_power_on(struct omap_dss_device *dssdev)
1037{ 1052{
1038 struct taal_data *td = dev_get_drvdata(&dssdev->dev); 1053 struct taal_data *td = dev_get_drvdata(&dssdev->dev);
1054 struct nokia_dsi_panel_data *panel_data = get_panel_data(dssdev);
1039 u8 id1, id2, id3; 1055 u8 id1, id2, id3;
1040 int r; 1056 int r;
1041 1057
1058 r = omapdss_dsi_configure_pins(dssdev, &panel_data->pin_config);
1059 if (r) {
1060 dev_err(&dssdev->dev, "failed to configure DSI pins\n");
1061 goto err0;
1062 };
1063
1042 r = omapdss_dsi_display_enable(dssdev); 1064 r = omapdss_dsi_display_enable(dssdev);
1043 if (r) { 1065 if (r) {
1044 dev_err(&dssdev->dev, "failed to enable DSI\n"); 1066 dev_err(&dssdev->dev, "failed to enable DSI\n");