Commit | Line | Data |
---|---|---|
1a59d1b8 | 1 | // SPDX-License-Identifier: GPL-2.0-or-later |
107cc64b DB |
2 | /* |
3 | * LCD panel support for the TI OMAP OSK board | |
4 | * | |
5 | * Copyright (C) 2004 Nokia Corporation | |
6 | * Author: Imre Deak <imre.deak@nokia.com> | |
7 | * Adapted for OSK by <dirk.behme@de.bosch.com> | |
107cc64b DB |
8 | */ |
9 | ||
10 | #include <linux/module.h> | |
11 | #include <linux/platform_device.h> | |
288e6eaa | 12 | #include <linux/gpio.h> |
0adcbaf7 | 13 | |
804f7f19 AB |
14 | #include <linux/soc/ti/omap1-io.h> |
15 | #include <linux/soc/ti/omap1-mux.h> | |
0adcbaf7 | 16 | |
91773a00 | 17 | #include "omapfb.h" |
107cc64b | 18 | |
107cc64b DB |
19 | static int osk_panel_enable(struct lcd_panel *panel) |
20 | { | |
21 | /* configure PWL pin */ | |
22 | omap_cfg_reg(PWL); | |
23 | ||
24 | /* Enable PWL unit */ | |
25 | omap_writeb(0x01, OMAP_PWL_CLK_ENABLE); | |
26 | ||
27 | /* Set PWL level */ | |
28 | omap_writeb(0xFF, OMAP_PWL_ENABLE); | |
29 | ||
93a22f8b DB |
30 | /* set GPIO2 high (lcd power enabled) */ |
31 | gpio_set_value(2, 1); | |
107cc64b DB |
32 | |
33 | return 0; | |
34 | } | |
35 | ||
36 | static void osk_panel_disable(struct lcd_panel *panel) | |
37 | { | |
38 | /* Set PWL level to zero */ | |
39 | omap_writeb(0x00, OMAP_PWL_ENABLE); | |
40 | ||
41 | /* Disable PWL unit */ | |
42 | omap_writeb(0x00, OMAP_PWL_CLK_ENABLE); | |
43 | ||
44 | /* set GPIO2 low */ | |
93a22f8b | 45 | gpio_set_value(2, 0); |
107cc64b DB |
46 | } |
47 | ||
b2c1e8a7 | 48 | static struct lcd_panel osk_panel = { |
107cc64b DB |
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 | ||
107cc64b DB |
65 | .enable = osk_panel_enable, |
66 | .disable = osk_panel_disable, | |
107cc64b DB |
67 | }; |
68 | ||
69 | static int osk_panel_probe(struct platform_device *pdev) | |
70 | { | |
71 | omapfb_register_panel(&osk_panel); | |
72 | return 0; | |
73 | } | |
74 | ||
f9905441 | 75 | static struct platform_driver osk_panel_driver = { |
107cc64b | 76 | .probe = osk_panel_probe, |
107cc64b DB |
77 | .driver = { |
78 | .name = "lcd_osk", | |
107cc64b DB |
79 | }, |
80 | }; | |
81 | ||
f806f9b6 | 82 | module_platform_driver(osk_panel_driver); |
1bde9f2c AB |
83 | |
84 | MODULE_AUTHOR("Imre Deak"); | |
85 | MODULE_DESCRIPTION("LCD panel support for the TI OMAP OSK board"); | |
86 | MODULE_LICENSE("GPL"); |