diff options
Diffstat (limited to 'drivers/video/omap2/displays/panel-taal.c')
-rw-r--r-- | drivers/video/omap2/displays/panel-taal.c | 22 |
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); |
994 | err_bl: | 1003 | err_bl: |
1004 | if (gpio_is_valid(panel_data->reset_gpio)) | ||
1005 | gpio_free(panel_data->reset_gpio); | ||
1006 | err_rst_gpio: | ||
995 | destroy_workqueue(td->workqueue); | 1007 | destroy_workqueue(td->workqueue); |
996 | err_wq: | 1008 | err_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 | ||
1036 | static int taal_power_on(struct omap_dss_device *dssdev) | 1051 | static 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"); |