aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/displays/panel-sharp-lq043t1dg01.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/omap2/displays/panel-sharp-lq043t1dg01.c')
-rw-r--r--drivers/video/omap2/displays/panel-sharp-lq043t1dg01.c67
1 files changed, 53 insertions, 14 deletions
diff --git a/drivers/video/omap2/displays/panel-sharp-lq043t1dg01.c b/drivers/video/omap2/displays/panel-sharp-lq043t1dg01.c
index e75798edbb59..10267461991c 100644
--- a/drivers/video/omap2/displays/panel-sharp-lq043t1dg01.c
+++ b/drivers/video/omap2/displays/panel-sharp-lq043t1dg01.c
@@ -39,6 +39,41 @@ static struct omap_video_timings sharp_lq_timings = {
39 .vbp = 2, 39 .vbp = 2,
40}; 40};
41 41
42static int sharp_lq_panel_power_on(struct omap_dss_device *dssdev)
43{
44 int r;
45
46 r = omapdss_dpi_display_enable(dssdev);
47 if (r)
48 goto err0;
49
50 /* wait couple of vsyncs until enabling the LCD */
51 msleep(50);
52
53 if (dssdev->platform_enable) {
54 r = dssdev->platform_enable(dssdev);
55 if (r)
56 goto err1;
57 }
58
59 return 0;
60err1:
61 omapdss_dpi_display_disable(dssdev);
62err0:
63 return r;
64}
65
66static void sharp_lq_panel_power_off(struct omap_dss_device *dssdev)
67{
68 if (dssdev->platform_disable)
69 dssdev->platform_disable(dssdev);
70
71 /* wait at least 5 vsyncs after disabling the LCD */
72 msleep(100);
73
74 omapdss_dpi_display_disable(dssdev);
75}
76
42static int sharp_lq_panel_probe(struct omap_dss_device *dssdev) 77static int sharp_lq_panel_probe(struct omap_dss_device *dssdev)
43{ 78{
44 79
@@ -58,36 +93,40 @@ static int sharp_lq_panel_enable(struct omap_dss_device *dssdev)
58{ 93{
59 int r = 0; 94 int r = 0;
60 95
96 r = sharp_lq_panel_power_on(dssdev);
97 if (r)
98 return r;
61 99
62 /* wait couple of vsyncs until enabling the LCD */ 100 dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
63 msleep(50);
64
65 if (dssdev->platform_enable)
66 r = dssdev->platform_enable(dssdev);
67 101
68 return r; 102 return 0;
69} 103}
70 104
71static void sharp_lq_panel_disable(struct omap_dss_device *dssdev) 105static void sharp_lq_panel_disable(struct omap_dss_device *dssdev)
72{ 106{
107 sharp_lq_panel_power_off(dssdev);
73 108
74 if (dssdev->platform_disable) 109 dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
75 dssdev->platform_disable(dssdev);
76
77 /* wait at least 5 vsyncs after disabling the LCD */
78
79 msleep(100);
80} 110}
81 111
82static int sharp_lq_panel_suspend(struct omap_dss_device *dssdev) 112static int sharp_lq_panel_suspend(struct omap_dss_device *dssdev)
83{ 113{
84 sharp_lq_panel_disable(dssdev); 114 sharp_lq_panel_power_off(dssdev);
115 dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED;
85 return 0; 116 return 0;
86} 117}
87 118
88static int sharp_lq_panel_resume(struct omap_dss_device *dssdev) 119static int sharp_lq_panel_resume(struct omap_dss_device *dssdev)
89{ 120{
90 return sharp_lq_panel_enable(dssdev); 121 int r = 0;
122
123 r = sharp_lq_panel_power_on(dssdev);
124 if (r)
125 return r;
126
127 dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
128
129 return 0;
91} 130}
92 131
93static struct omap_dss_driver sharp_lq_driver = { 132static struct omap_dss_driver sharp_lq_driver = {