summaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0005-DSS2-Add-panel-drivers.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0005-DSS2-Add-panel-drivers.patch')
-rw-r--r--meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0005-DSS2-Add-panel-drivers.patch396
1 files changed, 396 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0005-DSS2-Add-panel-drivers.patch b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0005-DSS2-Add-panel-drivers.patch
new file mode 100644
index 0000000000..d12586ca2f
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0005-DSS2-Add-panel-drivers.patch
@@ -0,0 +1,396 @@
1From 4cc0368574f587f448231ccd121266bed4bf9729 Mon Sep 17 00:00:00 2001
2From: Tomi Valkeinen <tomi.valkeinen@nokia.com>
3Date: Thu, 2 Apr 2009 10:29:56 +0300
4Subject: [PATCH] DSS2: Add panel drivers
5
6- Generic panel
7- Samsung LTE430WQ-F0C LCD Panel
8- Sharp LS037V7DW01 LCD Panel
9
10Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
11---
12 drivers/video/omap2/displays/Kconfig | 21 ++++
13 drivers/video/omap2/displays/Makefile | 3 +
14 drivers/video/omap2/displays/panel-generic.c | 96 +++++++++++++++++
15 .../omap2/displays/panel-samsung-lte430wq-f0c.c | 108 +++++++++++++++++++
16 .../video/omap2/displays/panel-sharp-ls037v7dw01.c | 112 ++++++++++++++++++++
17 5 files changed, 340 insertions(+), 0 deletions(-)
18 create mode 100644 drivers/video/omap2/displays/Kconfig
19 create mode 100644 drivers/video/omap2/displays/Makefile
20 create mode 100644 drivers/video/omap2/displays/panel-generic.c
21 create mode 100644 drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c
22 create mode 100644 drivers/video/omap2/displays/panel-sharp-ls037v7dw01.c
23
24diff --git a/drivers/video/omap2/displays/Kconfig b/drivers/video/omap2/displays/Kconfig
25new file mode 100644
26index 0000000..0419ec8
27--- /dev/null
28+++ b/drivers/video/omap2/displays/Kconfig
29@@ -0,0 +1,21 @@
30+menu "OMAP2/3 Display Device Drivers"
31+ depends on OMAP2_DSS
32+
33+config PANEL_GENERIC
34+ tristate "Generic Panel"
35+ help
36+ Generic panel driver.
37+ Used for DVI output for Beagle and OMAP3 SDP.
38+
39+config PANEL_SAMSUNG_LTE430WQ_F0C
40+ tristate "Samsung LTE430WQ-F0C LCD Panel"
41+ depends on OMAP2_DSS
42+ help
43+ LCD Panel used on Overo Palo43
44+
45+config PANEL_SHARP_LS037V7DW01
46+ tristate "Sharp LS037V7DW01 LCD Panel"
47+ depends on OMAP2_DSS
48+ help
49+ LCD Panel used in TI's SDP3430 and EVM boards
50+endmenu
51diff --git a/drivers/video/omap2/displays/Makefile b/drivers/video/omap2/displays/Makefile
52new file mode 100644
53index 0000000..a26bbd2
54--- /dev/null
55+++ b/drivers/video/omap2/displays/Makefile
56@@ -0,0 +1,3 @@
57+obj-$(CONFIG_PANEL_GENERIC) += panel-generic.o
58+obj-$(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) += panel-samsung-lte430wq-f0c.o
59+obj-$(CONFIG_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o
60diff --git a/drivers/video/omap2/displays/panel-generic.c b/drivers/video/omap2/displays/panel-generic.c
61new file mode 100644
62index 0000000..8382acb
63--- /dev/null
64+++ b/drivers/video/omap2/displays/panel-generic.c
65@@ -0,0 +1,96 @@
66+/*
67+ * Generic panel support
68+ *
69+ * Copyright (C) 2008 Nokia Corporation
70+ * Author: Tomi Valkeinen <tomi.valkeinen@nokia.com>
71+ *
72+ * This program is free software; you can redistribute it and/or modify it
73+ * under the terms of the GNU General Public License version 2 as published by
74+ * the Free Software Foundation.
75+ *
76+ * This program is distributed in the hope that it will be useful, but WITHOUT
77+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
79+ * more details.
80+ *
81+ * You should have received a copy of the GNU General Public License along with
82+ * this program. If not, see <http://www.gnu.org/licenses/>.
83+ */
84+
85+#include <linux/module.h>
86+#include <linux/delay.h>
87+
88+#include <mach/display.h>
89+
90+static int generic_panel_init(struct omap_display *display)
91+{
92+ return 0;
93+}
94+
95+static int generic_panel_enable(struct omap_display *display)
96+{
97+ int r = 0;
98+
99+ if (display->hw_config.panel_enable)
100+ r = display->hw_config.panel_enable(display);
101+
102+ return r;
103+}
104+
105+static void generic_panel_disable(struct omap_display *display)
106+{
107+ if (display->hw_config.panel_disable)
108+ display->hw_config.panel_disable(display);
109+}
110+
111+static int generic_panel_suspend(struct omap_display *display)
112+{
113+ generic_panel_disable(display);
114+ return 0;
115+}
116+
117+static int generic_panel_resume(struct omap_display *display)
118+{
119+ return generic_panel_enable(display);
120+}
121+
122+static struct omap_panel generic_panel = {
123+ .owner = THIS_MODULE,
124+ .name = "panel-generic",
125+ .init = generic_panel_init,
126+ .enable = generic_panel_enable,
127+ .disable = generic_panel_disable,
128+ .suspend = generic_panel_suspend,
129+ .resume = generic_panel_resume,
130+
131+ .timings = {
132+ /* 640 x 480 @ 60 Hz Reduced blanking VESA CVT 0.31M3-R */
133+ .x_res = 640,
134+ .y_res = 480,
135+ .pixel_clock = 23500,
136+ .hfp = 48,
137+ .hsw = 32,
138+ .hbp = 80,
139+ .vfp = 3,
140+ .vsw = 4,
141+ .vbp = 7,
142+ },
143+
144+ .config = OMAP_DSS_LCD_TFT,
145+};
146+
147+
148+static int __init generic_panel_drv_init(void)
149+{
150+ omap_dss_register_panel(&generic_panel);
151+ return 0;
152+}
153+
154+static void __exit generic_panel_drv_exit(void)
155+{
156+ omap_dss_unregister_panel(&generic_panel);
157+}
158+
159+module_init(generic_panel_drv_init);
160+module_exit(generic_panel_drv_exit);
161+MODULE_LICENSE("GPL");
162diff --git a/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c b/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c
163new file mode 100644
164index 0000000..e4bb781
165--- /dev/null
166+++ b/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c
167@@ -0,0 +1,108 @@
168+/*
169+ * LCD panel driver for Samsung LTE430WQ-F0C
170+ *
171+ * Author: Steve Sakoman <steve@sakoman.com>
172+ *
173+ * This program is free software; you can redistribute it and/or modify it
174+ * under the terms of the GNU General Public License version 2 as published by
175+ * the Free Software Foundation.
176+ *
177+ * This program is distributed in the hope that it will be useful, but WITHOUT
178+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
179+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
180+ * more details.
181+ *
182+ * You should have received a copy of the GNU General Public License along with
183+ * this program. If not, see <http://www.gnu.org/licenses/>.
184+ */
185+
186+#include <linux/module.h>
187+#include <linux/delay.h>
188+
189+#include <mach/display.h>
190+
191+static int samsung_lte_panel_init(struct omap_display *display)
192+{
193+ return 0;
194+}
195+
196+static void samsung_lte_panel_cleanup(struct omap_display *display)
197+{
198+}
199+
200+static int samsung_lte_panel_enable(struct omap_display *display)
201+{
202+ int r = 0;
203+
204+ /* wait couple of vsyncs until enabling the LCD */
205+ msleep(50);
206+
207+ if (display->hw_config.panel_enable)
208+ r = display->hw_config.panel_enable(display);
209+
210+ return r;
211+}
212+
213+static void samsung_lte_panel_disable(struct omap_display *display)
214+{
215+ if (display->hw_config.panel_disable)
216+ display->hw_config.panel_disable(display);
217+
218+ /* wait at least 5 vsyncs after disabling the LCD */
219+ msleep(100);
220+}
221+
222+static int samsung_lte_panel_suspend(struct omap_display *display)
223+{
224+ samsung_lte_panel_disable(display);
225+ return 0;
226+}
227+
228+static int samsung_lte_panel_resume(struct omap_display *display)
229+{
230+ return samsung_lte_panel_enable(display);
231+}
232+
233+static struct omap_panel samsung_lte_panel = {
234+ .owner = THIS_MODULE,
235+ .name = "samsung-lte430wq-f0c",
236+ .init = samsung_lte_panel_init,
237+ .cleanup = samsung_lte_panel_cleanup,
238+ .enable = samsung_lte_panel_enable,
239+ .disable = samsung_lte_panel_disable,
240+ .suspend = samsung_lte_panel_suspend,
241+ .resume = samsung_lte_panel_resume,
242+
243+ .timings = {
244+ .x_res = 480,
245+ .y_res = 272,
246+
247+ .pixel_clock = 9200,
248+
249+ .hsw = 41,
250+ .hfp = 8,
251+ .hbp = 45-41,
252+
253+ .vsw = 10,
254+ .vfp = 4,
255+ .vbp = 12-10,
256+ },
257+ .recommended_bpp = 16,
258+ .config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IVS,
259+};
260+
261+
262+static int __init samsung_lte_panel_drv_init(void)
263+{
264+ omap_dss_register_panel(&samsung_lte_panel);
265+ return 0;
266+}
267+
268+static void __exit samsung_lte_panel_drv_exit(void)
269+{
270+ omap_dss_unregister_panel(&samsung_lte_panel);
271+}
272+
273+module_init(samsung_lte_panel_drv_init);
274+module_exit(samsung_lte_panel_drv_exit);
275+MODULE_LICENSE("GPL");
276diff --git a/drivers/video/omap2/displays/panel-sharp-ls037v7dw01.c b/drivers/video/omap2/displays/panel-sharp-ls037v7dw01.c
277new file mode 100644
278index 0000000..1f99150
279--- /dev/null
280+++ b/drivers/video/omap2/displays/panel-sharp-ls037v7dw01.c
281@@ -0,0 +1,112 @@
282+/*
283+ * LCD panel driver for Sharp LS037V7DW01
284+ *
285+ * Copyright (C) 2008 Nokia Corporation
286+ * Author: Tomi Valkeinen <tomi.valkeinen@nokia.com>
287+ *
288+ * This program is free software; you can redistribute it and/or modify it
289+ * under the terms of the GNU General Public License version 2 as published by
290+ * the Free Software Foundation.
291+ *
292+ * This program is distributed in the hope that it will be useful, but WITHOUT
293+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
294+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
295+ * more details.
296+ *
297+ * You should have received a copy of the GNU General Public License along with
298+ * this program. If not, see <http://www.gnu.org/licenses/>.
299+ */
300+
301+#include <linux/module.h>
302+#include <linux/delay.h>
303+
304+#include <mach/display.h>
305+
306+static int sharp_ls_panel_init(struct omap_display *display)
307+{
308+ return 0;
309+}
310+
311+static void sharp_ls_panel_cleanup(struct omap_display *display)
312+{
313+}
314+
315+static int sharp_ls_panel_enable(struct omap_display *display)
316+{
317+ int r = 0;
318+
319+ /* wait couple of vsyncs until enabling the LCD */
320+ msleep(50);
321+
322+ if (display->hw_config.panel_enable)
323+ r = display->hw_config.panel_enable(display);
324+
325+ return r;
326+}
327+
328+static void sharp_ls_panel_disable(struct omap_display *display)
329+{
330+ if (display->hw_config.panel_disable)
331+ display->hw_config.panel_disable(display);
332+
333+ /* wait at least 5 vsyncs after disabling the LCD */
334+
335+ msleep(100);
336+}
337+
338+static int sharp_ls_panel_suspend(struct omap_display *display)
339+{
340+ sharp_ls_panel_disable(display);
341+ return 0;
342+}
343+
344+static int sharp_ls_panel_resume(struct omap_display *display)
345+{
346+ return sharp_ls_panel_enable(display);
347+}
348+
349+static struct omap_panel sharp_ls_panel = {
350+ .owner = THIS_MODULE,
351+ .name = "sharp-ls037v7dw01",
352+ .init = sharp_ls_panel_init,
353+ .cleanup = sharp_ls_panel_cleanup,
354+ .enable = sharp_ls_panel_enable,
355+ .disable = sharp_ls_panel_disable,
356+ .suspend = sharp_ls_panel_suspend,
357+ .resume = sharp_ls_panel_resume,
358+
359+ .timings = {
360+ .x_res = 480,
361+ .y_res = 640,
362+
363+ .pixel_clock = 19200,
364+
365+ .hsw = 2,
366+ .hfp = 1,
367+ .hbp = 28,
368+
369+ .vsw = 1,
370+ .vfp = 1,
371+ .vbp = 1,
372+ },
373+
374+ .acb = 0x28,
375+
376+ .config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | OMAP_DSS_LCD_IHS,
377+};
378+
379+
380+static int __init sharp_ls_panel_drv_init(void)
381+{
382+ omap_dss_register_panel(&sharp_ls_panel);
383+ return 0;
384+}
385+
386+static void __exit sharp_ls_panel_drv_exit(void)
387+{
388+ omap_dss_unregister_panel(&sharp_ls_panel);
389+}
390+
391+module_init(sharp_ls_panel_drv_init);
392+module_exit(sharp_ls_panel_drv_exit);
393+MODULE_LICENSE("GPL");
394--
3951.5.6.5
396