1
2
3
4
5
6
7
8
9
10#include <linux/module.h>
11#include <linux/platform_device.h>
12#include <linux/gpio.h>
13
14#include <mach/hardware.h>
15#include <mach/mux.h>
16
17#include "omapfb.h"
18
19static int osk_panel_enable(struct lcd_panel *panel)
20{
21
22 omap_cfg_reg(PWL);
23
24
25 omap_writeb(0x01, OMAP_PWL_CLK_ENABLE);
26
27
28 omap_writeb(0xFF, OMAP_PWL_ENABLE);
29
30
31 gpio_set_value(2, 1);
32
33 return 0;
34}
35
36static void osk_panel_disable(struct lcd_panel *panel)
37{
38
39 omap_writeb(0x00, OMAP_PWL_ENABLE);
40
41
42 omap_writeb(0x00, OMAP_PWL_CLK_ENABLE);
43
44
45 gpio_set_value(2, 0);
46}
47
48static struct lcd_panel osk_panel = {
49 .name = "osk",
50 .config = OMAP_LCDC_PANEL_TFT,
51
52 .bpp = 16,
53 .data_lines = 16,
54 .x_res = 240,
55 .y_res = 320,
56 .pixel_clock = 12500,
57 .hsw = 40,
58 .hfp = 40,
59 .hbp = 72,
60 .vsw = 1,
61 .vfp = 1,
62 .vbp = 0,
63 .pcd = 12,
64
65 .enable = osk_panel_enable,
66 .disable = osk_panel_disable,
67};
68
69static int osk_panel_probe(struct platform_device *pdev)
70{
71 omapfb_register_panel(&osk_panel);
72 return 0;
73}
74
75static struct platform_driver osk_panel_driver = {
76 .probe = osk_panel_probe,
77 .driver = {
78 .name = "lcd_osk",
79 },
80};
81
82module_platform_driver(osk_panel_driver);
83
84MODULE_AUTHOR("Imre Deak");
85MODULE_DESCRIPTION("LCD panel support for the TI OMAP OSK board");
86MODULE_LICENSE("GPL");
87