aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2013-04-17 20:09:04 -0400
committerTony Lindgren <tony@atomide.com>2013-04-17 20:09:04 -0400
commit4de2a2b4aeabe5c8b11ab8655ad59c55b3d91962 (patch)
tree8ac400520b4d946c9a4735cac27c1a7b8a9d626c
parent07961ac7c0ee8b546658717034fe692fd12eefa9 (diff)
parent29cdecabe22fbf5806ec64d12954b795ba248b77 (diff)
Merge branch '3.10-lo/board-cleanup' of git://gitorious.org/linux-omap-dss2/linux into omap-for-v3.10/dss
-rw-r--r--arch/arm/mach-omap2/board-2430sdp.c45
-rw-r--r--arch/arm/mach-omap2/board-3430sdp.c55
-rw-r--r--arch/arm/mach-omap2/board-am3517evm.c77
-rw-r--r--arch/arm/mach-omap2/board-cm-t35.c63
-rw-r--r--arch/arm/mach-omap2/board-devkit8000.c30
-rw-r--r--arch/arm/mach-omap2/board-h4.c2
-rw-r--r--arch/arm/mach-omap2/board-igep0020.c2
-rw-r--r--arch/arm/mach-omap2/board-ldp.c63
-rw-r--r--arch/arm/mach-omap2/board-omap3beagle.c2
-rw-r--r--arch/arm/mach-omap2/board-omap3evm.c72
-rw-r--r--arch/arm/mach-omap2/board-omap3pandora.c7
-rw-r--r--arch/arm/mach-omap2/board-omap3stalker.c14
-rw-r--r--arch/arm/mach-omap2/board-overo.c61
-rw-r--r--arch/arm/mach-omap2/board-rx51-video.c26
-rw-r--r--arch/arm/mach-omap2/board-zoom-display.c94
-rw-r--r--arch/arm/mach-omap2/board-zoom-peripherals.c53
-rw-r--r--arch/arm/mach-omap2/dss-common.c58
-rw-r--r--drivers/video/omap2/displays/panel-generic-dpi.c2
-rw-r--r--drivers/video/omap2/displays/panel-n8x0.c2
-rw-r--r--drivers/video/omap2/displays/panel-picodlp.c2
-rw-r--r--drivers/video/omap2/displays/panel-taal.c2
-rw-r--r--drivers/video/omap2/displays/panel-tfp410.c2
-rw-r--r--include/video/omap-panel-data.h152
-rw-r--r--include/video/omap-panel-generic-dpi.h37
-rw-r--r--include/video/omap-panel-n8x0.h15
-rw-r--r--include/video/omap-panel-nokia-dsi.h32
-rw-r--r--include/video/omap-panel-picodlp.h23
-rw-r--r--include/video/omap-panel-tfp410.h35
28 files changed, 349 insertions, 679 deletions
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c
index a3e0aaa4886b..e551aae7d5f4 100644
--- a/arch/arm/mach-omap2/board-2430sdp.c
+++ b/arch/arm/mach-omap2/board-2430sdp.c
@@ -38,7 +38,7 @@
38#include "gpmc-smc91x.h" 38#include "gpmc-smc91x.h"
39 39
40#include <video/omapdss.h> 40#include <video/omapdss.h>
41#include <video/omap-panel-generic-dpi.h> 41#include <video/omap-panel-data.h>
42 42
43#include "mux.h" 43#include "mux.h"
44#include "hsmmc.h" 44#include "hsmmc.h"
@@ -108,24 +108,13 @@ static struct platform_device *sdp2430_devices[] __initdata = {
108#define SDP2430_LCD_PANEL_BACKLIGHT_GPIO 91 108#define SDP2430_LCD_PANEL_BACKLIGHT_GPIO 91
109#define SDP2430_LCD_PANEL_ENABLE_GPIO 154 109#define SDP2430_LCD_PANEL_ENABLE_GPIO 154
110 110
111static int sdp2430_panel_enable_lcd(struct omap_dss_device *dssdev)
112{
113 gpio_direction_output(SDP2430_LCD_PANEL_ENABLE_GPIO, 1);
114 gpio_direction_output(SDP2430_LCD_PANEL_BACKLIGHT_GPIO, 1);
115
116 return 0;
117}
118
119static void sdp2430_panel_disable_lcd(struct omap_dss_device *dssdev)
120{
121 gpio_direction_output(SDP2430_LCD_PANEL_ENABLE_GPIO, 0);
122 gpio_direction_output(SDP2430_LCD_PANEL_BACKLIGHT_GPIO, 0);
123}
124
125static struct panel_generic_dpi_data sdp2430_panel_data = { 111static struct panel_generic_dpi_data sdp2430_panel_data = {
126 .name = "nec_nl2432dr22-11b", 112 .name = "nec_nl2432dr22-11b",
127 .platform_enable = sdp2430_panel_enable_lcd, 113 .num_gpios = 2,
128 .platform_disable = sdp2430_panel_disable_lcd, 114 .gpios = {
115 SDP2430_LCD_PANEL_ENABLE_GPIO,
116 SDP2430_LCD_PANEL_BACKLIGHT_GPIO,
117 },
129}; 118};
130 119
131static struct omap_dss_device sdp2430_lcd_device = { 120static struct omap_dss_device sdp2430_lcd_device = {
@@ -146,26 +135,6 @@ static struct omap_dss_board_info sdp2430_dss_data = {
146 .default_device = &sdp2430_lcd_device, 135 .default_device = &sdp2430_lcd_device,
147}; 136};
148 137
149static void __init sdp2430_display_init(void)
150{
151 int r;
152
153 static struct gpio gpios[] __initdata = {
154 { SDP2430_LCD_PANEL_ENABLE_GPIO, GPIOF_OUT_INIT_LOW,
155 "LCD reset" },
156 { SDP2430_LCD_PANEL_BACKLIGHT_GPIO, GPIOF_OUT_INIT_LOW,
157 "LCD Backlight" },
158 };
159
160 r = gpio_request_array(gpios, ARRAY_SIZE(gpios));
161 if (r) {
162 pr_err("Cannot request LCD GPIOs, error %d\n", r);
163 return;
164 }
165
166 omap_display_init(&sdp2430_dss_data);
167}
168
169#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91x_MODULE) 138#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91x_MODULE)
170 139
171static struct omap_smc91x_platform_data board_smc91x_data = { 140static struct omap_smc91x_platform_data board_smc91x_data = {
@@ -273,7 +242,7 @@ static void __init omap_2430sdp_init(void)
273 gpio_request_one(SECONDARY_LCD_GPIO, GPIOF_OUT_INIT_LOW, 242 gpio_request_one(SECONDARY_LCD_GPIO, GPIOF_OUT_INIT_LOW,
274 "Secondary LCD backlight"); 243 "Secondary LCD backlight");
275 244
276 sdp2430_display_init(); 245 omap_display_init(&sdp2430_dss_data);
277} 246}
278 247
279MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board") 248MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
index ce812decfaca..594c6335496e 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -35,7 +35,7 @@
35#include "common.h" 35#include "common.h"
36#include <linux/omap-dma.h> 36#include <linux/omap-dma.h>
37#include <video/omapdss.h> 37#include <video/omapdss.h>
38#include <video/omap-panel-tfp410.h> 38#include <video/omap-panel-data.h>
39 39
40#include "gpmc.h" 40#include "gpmc.h"
41#include "gpmc-smc91x.h" 41#include "gpmc-smc91x.h"
@@ -108,53 +108,38 @@ static struct twl4030_keypad_data sdp3430_kp_data = {
108#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 8 108#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 8
109#define SDP3430_LCD_PANEL_ENABLE_GPIO 5 109#define SDP3430_LCD_PANEL_ENABLE_GPIO 5
110 110
111static struct gpio sdp3430_dss_gpios[] __initdata = {
112 {SDP3430_LCD_PANEL_ENABLE_GPIO, GPIOF_OUT_INIT_LOW, "LCD reset" },
113 {SDP3430_LCD_PANEL_BACKLIGHT_GPIO, GPIOF_OUT_INIT_LOW, "LCD Backlight"},
114};
115
116static void __init sdp3430_display_init(void) 111static void __init sdp3430_display_init(void)
117{ 112{
118 int r; 113 int r;
119 114
120 r = gpio_request_array(sdp3430_dss_gpios, 115 /*
121 ARRAY_SIZE(sdp3430_dss_gpios)); 116 * the backlight GPIO doesn't directly go to the panel, it enables
117 * an internal circuit on 3430sdp to create the signal V_BKL_28V,
118 * this is connected to LED+ pin of the sharp panel. This GPIO
119 * is left enabled in the board file, and not passed to the panel
120 * as platform_data.
121 */
122 r = gpio_request_one(SDP3430_LCD_PANEL_BACKLIGHT_GPIO,
123 GPIOF_OUT_INIT_HIGH, "LCD Backlight");
122 if (r) 124 if (r)
123 printk(KERN_ERR "failed to get LCD control GPIOs\n"); 125 pr_err("failed to get LCD Backlight GPIO\n");
124
125}
126 126
127static int sdp3430_panel_enable_lcd(struct omap_dss_device *dssdev)
128{
129 gpio_direction_output(SDP3430_LCD_PANEL_ENABLE_GPIO, 1);
130 gpio_direction_output(SDP3430_LCD_PANEL_BACKLIGHT_GPIO, 1);
131
132 return 0;
133}
134
135static void sdp3430_panel_disable_lcd(struct omap_dss_device *dssdev)
136{
137 gpio_direction_output(SDP3430_LCD_PANEL_ENABLE_GPIO, 0);
138 gpio_direction_output(SDP3430_LCD_PANEL_BACKLIGHT_GPIO, 0);
139}
140
141static int sdp3430_panel_enable_tv(struct omap_dss_device *dssdev)
142{
143 return 0;
144}
145
146static void sdp3430_panel_disable_tv(struct omap_dss_device *dssdev)
147{
148} 127}
149 128
129static struct panel_sharp_ls037v7dw01_data sdp3430_lcd_data = {
130 .resb_gpio = SDP3430_LCD_PANEL_ENABLE_GPIO,
131 .ini_gpio = -1,
132 .mo_gpio = -1,
133 .lr_gpio = -1,
134 .ud_gpio = -1,
135};
150 136
151static struct omap_dss_device sdp3430_lcd_device = { 137static struct omap_dss_device sdp3430_lcd_device = {
152 .name = "lcd", 138 .name = "lcd",
153 .driver_name = "sharp_ls_panel", 139 .driver_name = "sharp_ls_panel",
154 .type = OMAP_DISPLAY_TYPE_DPI, 140 .type = OMAP_DISPLAY_TYPE_DPI,
155 .phy.dpi.data_lines = 16, 141 .phy.dpi.data_lines = 16,
156 .platform_enable = sdp3430_panel_enable_lcd, 142 .data = &sdp3430_lcd_data,
157 .platform_disable = sdp3430_panel_disable_lcd,
158}; 143};
159 144
160static struct tfp410_platform_data dvi_panel = { 145static struct tfp410_platform_data dvi_panel = {
@@ -175,8 +160,6 @@ static struct omap_dss_device sdp3430_tv_device = {
175 .driver_name = "venc", 160 .driver_name = "venc",
176 .type = OMAP_DISPLAY_TYPE_VENC, 161 .type = OMAP_DISPLAY_TYPE_VENC,
177 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, 162 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
178 .platform_enable = sdp3430_panel_enable_tv,
179 .platform_disable = sdp3430_panel_disable_tv,
180}; 163};
181 164
182 165
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c
index 9fb85908a61e..2b9eb3de7aa6 100644
--- a/arch/arm/mach-omap2/board-am3517evm.c
+++ b/arch/arm/mach-omap2/board-am3517evm.c
@@ -35,8 +35,7 @@
35 35
36#include "common.h" 36#include "common.h"
37#include <video/omapdss.h> 37#include <video/omapdss.h>
38#include <video/omap-panel-generic-dpi.h> 38#include <video/omap-panel-data.h>
39#include <video/omap-panel-tfp410.h>
40 39
41#include "am35xx-emac.h" 40#include "am35xx-emac.h"
42#include "mux.h" 41#include "mux.h"
@@ -121,63 +120,14 @@ static int __init am3517_evm_i2c_init(void)
121 return 0; 120 return 0;
122} 121}
123 122
124static int lcd_enabled;
125static int dvi_enabled;
126
127#if defined(CONFIG_PANEL_SHARP_LQ043T1DG01) || \
128 defined(CONFIG_PANEL_SHARP_LQ043T1DG01_MODULE)
129static struct gpio am3517_evm_dss_gpios[] __initdata = {
130 /* GPIO 182 = LCD Backlight Power */
131 { LCD_PANEL_BKLIGHT_PWR, GPIOF_OUT_INIT_HIGH, "lcd_backlight_pwr" },
132 /* GPIO 181 = LCD Panel PWM */
133 { LCD_PANEL_PWM, GPIOF_OUT_INIT_HIGH, "lcd bl enable" },
134 /* GPIO 176 = LCD Panel Power enable pin */
135 { LCD_PANEL_PWR, GPIOF_OUT_INIT_HIGH, "dvi enable" },
136};
137
138static void __init am3517_evm_display_init(void)
139{
140 int r;
141
142 omap_mux_init_gpio(LCD_PANEL_PWR, OMAP_PIN_INPUT_PULLUP);
143 omap_mux_init_gpio(LCD_PANEL_BKLIGHT_PWR, OMAP_PIN_INPUT_PULLDOWN);
144 omap_mux_init_gpio(LCD_PANEL_PWM, OMAP_PIN_INPUT_PULLDOWN);
145
146 r = gpio_request_array(am3517_evm_dss_gpios,
147 ARRAY_SIZE(am3517_evm_dss_gpios));
148 if (r) {
149 printk(KERN_ERR "failed to get DSS panel control GPIOs\n");
150 return;
151 }
152
153 printk(KERN_INFO "Display initialized successfully\n");
154}
155#else
156static void __init am3517_evm_display_init(void) {}
157#endif
158
159static int am3517_evm_panel_enable_lcd(struct omap_dss_device *dssdev)
160{
161 if (dvi_enabled) {
162 printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
163 return -EINVAL;
164 }
165 gpio_set_value(LCD_PANEL_PWR, 1);
166 lcd_enabled = 1;
167
168 return 0;
169}
170
171static void am3517_evm_panel_disable_lcd(struct omap_dss_device *dssdev)
172{
173 gpio_set_value(LCD_PANEL_PWR, 0);
174 lcd_enabled = 0;
175}
176
177static struct panel_generic_dpi_data lcd_panel = { 123static struct panel_generic_dpi_data lcd_panel = {
178 .name = "sharp_lq", 124 .name = "sharp_lq",
179 .platform_enable = am3517_evm_panel_enable_lcd, 125 .num_gpios = 3,
180 .platform_disable = am3517_evm_panel_disable_lcd, 126 .gpios = {
127 LCD_PANEL_PWR,
128 LCD_PANEL_BKLIGHT_PWR,
129 LCD_PANEL_PWM,
130 },
181}; 131};
182 132
183static struct omap_dss_device am3517_evm_lcd_device = { 133static struct omap_dss_device am3517_evm_lcd_device = {
@@ -188,22 +138,11 @@ static struct omap_dss_device am3517_evm_lcd_device = {
188 .phy.dpi.data_lines = 16, 138 .phy.dpi.data_lines = 16,
189}; 139};
190 140
191static int am3517_evm_panel_enable_tv(struct omap_dss_device *dssdev)
192{
193 return 0;
194}
195
196static void am3517_evm_panel_disable_tv(struct omap_dss_device *dssdev)
197{
198}
199
200static struct omap_dss_device am3517_evm_tv_device = { 141static struct omap_dss_device am3517_evm_tv_device = {
201 .type = OMAP_DISPLAY_TYPE_VENC, 142 .type = OMAP_DISPLAY_TYPE_VENC,
202 .name = "tv", 143 .name = "tv",
203 .driver_name = "venc", 144 .driver_name = "venc",
204 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, 145 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
205 .platform_enable = am3517_evm_panel_enable_tv,
206 .platform_disable = am3517_evm_panel_disable_tv,
207}; 146};
208 147
209static struct tfp410_platform_data dvi_panel = { 148static struct tfp410_platform_data dvi_panel = {
@@ -363,8 +302,6 @@ static void __init am3517_evm_init(void)
363 omap_mux_init_gpio(57, OMAP_PIN_OUTPUT); 302 omap_mux_init_gpio(57, OMAP_PIN_OUTPUT);
364 usbhs_init(&usbhs_bdata); 303 usbhs_init(&usbhs_bdata);
365 am3517_evm_hecc_init(&am3517_evm_hecc_pdata); 304 am3517_evm_hecc_init(&am3517_evm_hecc_pdata);
366 /* DSS */
367 am3517_evm_display_init();
368 305
369 /* RTC - S35390A */ 306 /* RTC - S35390A */
370 am3517_evm_rtc_init(); 307 am3517_evm_rtc_init();
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c
index af2bb219e214..710e99da266c 100644
--- a/arch/arm/mach-omap2/board-cm-t35.c
+++ b/arch/arm/mach-omap2/board-cm-t35.c
@@ -41,8 +41,7 @@
41 41
42#include <linux/platform_data/mtd-nand-omap2.h> 42#include <linux/platform_data/mtd-nand-omap2.h>
43#include <video/omapdss.h> 43#include <video/omapdss.h>
44#include <video/omap-panel-generic-dpi.h> 44#include <video/omap-panel-data.h>
45#include <video/omap-panel-tfp410.h>
46#include <linux/platform_data/spi-omap2-mcspi.h> 45#include <linux/platform_data/spi-omap2-mcspi.h>
47 46
48#include "common.h" 47#include "common.h"
@@ -191,45 +190,12 @@ static inline void cm_t35_init_nand(void) {}
191#define CM_T35_LCD_BL_GPIO 58 190#define CM_T35_LCD_BL_GPIO 58
192#define CM_T35_DVI_EN_GPIO 54 191#define CM_T35_DVI_EN_GPIO 54
193 192
194static int lcd_enabled;
195static int dvi_enabled;
196
197static int cm_t35_panel_enable_lcd(struct omap_dss_device *dssdev)
198{
199 if (dvi_enabled) {
200 printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
201 return -EINVAL;
202 }
203
204 gpio_set_value(CM_T35_LCD_EN_GPIO, 1);
205 gpio_set_value(CM_T35_LCD_BL_GPIO, 1);
206
207 lcd_enabled = 1;
208
209 return 0;
210}
211
212static void cm_t35_panel_disable_lcd(struct omap_dss_device *dssdev)
213{
214 lcd_enabled = 0;
215
216 gpio_set_value(CM_T35_LCD_BL_GPIO, 0);
217 gpio_set_value(CM_T35_LCD_EN_GPIO, 0);
218}
219
220static int cm_t35_panel_enable_tv(struct omap_dss_device *dssdev)
221{
222 return 0;
223}
224
225static void cm_t35_panel_disable_tv(struct omap_dss_device *dssdev)
226{
227}
228
229static struct panel_generic_dpi_data lcd_panel = { 193static struct panel_generic_dpi_data lcd_panel = {
230 .name = "toppoly_tdo35s", 194 .name = "toppoly_tdo35s",
231 .platform_enable = cm_t35_panel_enable_lcd, 195 .num_gpios = 1,
232 .platform_disable = cm_t35_panel_disable_lcd, 196 .gpios = {
197 CM_T35_LCD_BL_GPIO,
198 },
233}; 199};
234 200
235static struct omap_dss_device cm_t35_lcd_device = { 201static struct omap_dss_device cm_t35_lcd_device = {
@@ -258,8 +224,6 @@ static struct omap_dss_device cm_t35_tv_device = {
258 .driver_name = "venc", 224 .driver_name = "venc",
259 .type = OMAP_DISPLAY_TYPE_VENC, 225 .type = OMAP_DISPLAY_TYPE_VENC,
260 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, 226 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
261 .platform_enable = cm_t35_panel_enable_tv,
262 .platform_disable = cm_t35_panel_disable_tv,
263}; 227};
264 228
265static struct omap_dss_device *cm_t35_dss_devices[] = { 229static struct omap_dss_device *cm_t35_dss_devices[] = {
@@ -293,11 +257,6 @@ static struct spi_board_info cm_t35_lcd_spi_board_info[] __initdata = {
293 }, 257 },
294}; 258};
295 259
296static struct gpio cm_t35_dss_gpios[] __initdata = {
297 { CM_T35_LCD_EN_GPIO, GPIOF_OUT_INIT_LOW, "lcd enable" },
298 { CM_T35_LCD_BL_GPIO, GPIOF_OUT_INIT_LOW, "lcd bl enable" },
299};
300
301static void __init cm_t35_init_display(void) 260static void __init cm_t35_init_display(void)
302{ 261{
303 int err; 262 int err;
@@ -305,23 +264,21 @@ static void __init cm_t35_init_display(void)
305 spi_register_board_info(cm_t35_lcd_spi_board_info, 264 spi_register_board_info(cm_t35_lcd_spi_board_info,
306 ARRAY_SIZE(cm_t35_lcd_spi_board_info)); 265 ARRAY_SIZE(cm_t35_lcd_spi_board_info));
307 266
308 err = gpio_request_array(cm_t35_dss_gpios, 267
309 ARRAY_SIZE(cm_t35_dss_gpios)); 268 err = gpio_request_one(CM_T35_LCD_EN_GPIO, GPIOF_OUT_INIT_LOW,
269 "lcd bl enable");
310 if (err) { 270 if (err) {
311 pr_err("CM-T35: failed to request DSS control GPIOs\n"); 271 pr_err("CM-T35: failed to request LCD EN GPIO\n");
312 return; 272 return;
313 } 273 }
314 274
315 gpio_export(CM_T35_LCD_EN_GPIO, 0);
316 gpio_export(CM_T35_LCD_BL_GPIO, 0);
317
318 msleep(50); 275 msleep(50);
319 gpio_set_value(CM_T35_LCD_EN_GPIO, 1); 276 gpio_set_value(CM_T35_LCD_EN_GPIO, 1);
320 277
321 err = omap_display_init(&cm_t35_dss_data); 278 err = omap_display_init(&cm_t35_dss_data);
322 if (err) { 279 if (err) {
323 pr_err("CM-T35: failed to register DSS device\n"); 280 pr_err("CM-T35: failed to register DSS device\n");
324 gpio_free_array(cm_t35_dss_gpios, ARRAY_SIZE(cm_t35_dss_gpios)); 281 gpio_free(CM_T35_LCD_EN_GPIO);
325 } 282 }
326} 283}
327 284
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c
index 53056c3b0836..34944cfdfbd9 100644
--- a/arch/arm/mach-omap2/board-devkit8000.c
+++ b/arch/arm/mach-omap2/board-devkit8000.c
@@ -43,8 +43,7 @@
43#include "gpmc.h" 43#include "gpmc.h"
44#include <linux/platform_data/mtd-nand-omap2.h> 44#include <linux/platform_data/mtd-nand-omap2.h>
45#include <video/omapdss.h> 45#include <video/omapdss.h>
46#include <video/omap-panel-generic-dpi.h> 46#include <video/omap-panel-data.h>
47#include <video/omap-panel-tfp410.h>
48 47
49#include <linux/platform_data/spi-omap2-mcspi.h> 48#include <linux/platform_data/spi-omap2-mcspi.h>
50#include <linux/input/matrix_keypad.h> 49#include <linux/input/matrix_keypad.h>
@@ -104,19 +103,6 @@ static struct omap2_hsmmc_info mmc[] = {
104 {} /* Terminator */ 103 {} /* Terminator */
105}; 104};
106 105
107static int devkit8000_panel_enable_lcd(struct omap_dss_device *dssdev)
108{
109 if (gpio_is_valid(dssdev->reset_gpio))
110 gpio_set_value_cansleep(dssdev->reset_gpio, 1);
111 return 0;
112}
113
114static void devkit8000_panel_disable_lcd(struct omap_dss_device *dssdev)
115{
116 if (gpio_is_valid(dssdev->reset_gpio))
117 gpio_set_value_cansleep(dssdev->reset_gpio, 0);
118}
119
120static struct regulator_consumer_supply devkit8000_vmmc1_supply[] = { 106static struct regulator_consumer_supply devkit8000_vmmc1_supply[] = {
121 REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"), 107 REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
122}; 108};
@@ -128,8 +114,7 @@ static struct regulator_consumer_supply devkit8000_vio_supply[] = {
128 114
129static struct panel_generic_dpi_data lcd_panel = { 115static struct panel_generic_dpi_data lcd_panel = {
130 .name = "innolux_at070tn83", 116 .name = "innolux_at070tn83",
131 .platform_enable = devkit8000_panel_enable_lcd, 117 /* gpios filled in code */
132 .platform_disable = devkit8000_panel_disable_lcd,
133}; 118};
134 119
135static struct omap_dss_device devkit8000_lcd_device = { 120static struct omap_dss_device devkit8000_lcd_device = {
@@ -211,8 +196,6 @@ static struct gpio_led gpio_leds[];
211static int devkit8000_twl_gpio_setup(struct device *dev, 196static int devkit8000_twl_gpio_setup(struct device *dev,
212 unsigned gpio, unsigned ngpio) 197 unsigned gpio, unsigned ngpio)
213{ 198{
214 int ret;
215
216 /* gpio + 0 is "mmc0_cd" (input/IRQ) */ 199 /* gpio + 0 is "mmc0_cd" (input/IRQ) */
217 mmc[0].gpio_cd = gpio + 0; 200 mmc[0].gpio_cd = gpio + 0;
218 omap_hsmmc_late_init(mmc); 201 omap_hsmmc_late_init(mmc);
@@ -221,13 +204,8 @@ static int devkit8000_twl_gpio_setup(struct device *dev,
221 gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; 204 gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
222 205
223 /* TWL4030_GPIO_MAX + 0 is "LCD_PWREN" (out, active high) */ 206 /* TWL4030_GPIO_MAX + 0 is "LCD_PWREN" (out, active high) */
224 devkit8000_lcd_device.reset_gpio = gpio + TWL4030_GPIO_MAX + 0; 207 lcd_panel.num_gpios = 1;
225 ret = gpio_request_one(devkit8000_lcd_device.reset_gpio, 208 lcd_panel.gpios[0] = gpio + TWL4030_GPIO_MAX + 0;
226 GPIOF_OUT_INIT_LOW, "LCD_PWREN");
227 if (ret < 0) {
228 devkit8000_lcd_device.reset_gpio = -EINVAL;
229 printk(KERN_ERR "Failed to request GPIO for LCD_PWRN\n");
230 }
231 209
232 /* gpio + 7 is "DVI_PD" (out, active low) */ 210 /* gpio + 7 is "DVI_PD" (out, active low) */
233 dvi_panel.power_down_gpio = gpio + 7; 211 dvi_panel.power_down_gpio = gpio + 7;
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
index 812c829fa46f..0c1bdd7ee32d 100644
--- a/arch/arm/mach-omap2/board-h4.c
+++ b/arch/arm/mach-omap2/board-h4.c
@@ -34,7 +34,7 @@
34#include <asm/mach/map.h> 34#include <asm/mach/map.h>
35 35
36#include <video/omapdss.h> 36#include <video/omapdss.h>
37#include <video/omap-panel-generic-dpi.h> 37#include <video/omap-panel-data.h>
38 38
39#include "common.h" 39#include "common.h"
40#include "mux.h" 40#include "mux.h"
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index bf92678a01d0..e979d48270c9 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -31,7 +31,7 @@
31#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
32 32
33#include <video/omapdss.h> 33#include <video/omapdss.h>
34#include <video/omap-panel-tfp410.h> 34#include <video/omap-panel-data.h>
35#include <linux/platform_data/mtd-onenand-omap2.h> 35#include <linux/platform_data/mtd-onenand-omap2.h>
36 36
37#include "common.h" 37#include "common.h"
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
index b12fe966a7b9..d0d17bc58d9b 100644
--- a/arch/arm/mach-omap2/board-ldp.c
+++ b/arch/arm/mach-omap2/board-ldp.c
@@ -41,7 +41,7 @@
41#include "gpmc-smsc911x.h" 41#include "gpmc-smsc911x.h"
42 42
43#include <video/omapdss.h> 43#include <video/omapdss.h>
44#include <video/omap-panel-generic-dpi.h> 44#include <video/omap-panel-data.h>
45 45
46#include "board-flash.h" 46#include "board-flash.h"
47#include "mux.h" 47#include "mux.h"
@@ -181,34 +181,13 @@ static inline void __init ldp_init_smsc911x(void)
181 181
182/* LCD */ 182/* LCD */
183 183
184static int ldp_backlight_gpio;
185static int ldp_lcd_enable_gpio;
186
187#define LCD_PANEL_RESET_GPIO 55 184#define LCD_PANEL_RESET_GPIO 55
188#define LCD_PANEL_QVGA_GPIO 56 185#define LCD_PANEL_QVGA_GPIO 56
189 186
190static int ldp_panel_enable_lcd(struct omap_dss_device *dssdev)
191{
192 if (gpio_is_valid(ldp_lcd_enable_gpio))
193 gpio_direction_output(ldp_lcd_enable_gpio, 1);
194 if (gpio_is_valid(ldp_backlight_gpio))
195 gpio_direction_output(ldp_backlight_gpio, 1);
196
197 return 0;
198}
199
200static void ldp_panel_disable_lcd(struct omap_dss_device *dssdev)
201{
202 if (gpio_is_valid(ldp_lcd_enable_gpio))
203 gpio_direction_output(ldp_lcd_enable_gpio, 0);
204 if (gpio_is_valid(ldp_backlight_gpio))
205 gpio_direction_output(ldp_backlight_gpio, 0);
206}
207
208static struct panel_generic_dpi_data ldp_panel_data = { 187static struct panel_generic_dpi_data ldp_panel_data = {
209 .name = "nec_nl2432dr22-11b", 188 .name = "nec_nl2432dr22-11b",
210 .platform_enable = ldp_panel_enable_lcd, 189 .num_gpios = 4,
211 .platform_disable = ldp_panel_disable_lcd, 190 /* gpios filled in code */
212}; 191};
213 192
214static struct omap_dss_device ldp_lcd_device = { 193static struct omap_dss_device ldp_lcd_device = {
@@ -231,41 +210,19 @@ static struct omap_dss_board_info ldp_dss_data = {
231 210
232static void __init ldp_display_init(void) 211static void __init ldp_display_init(void)
233{ 212{
234 int r; 213 ldp_panel_data.gpios[2] = LCD_PANEL_RESET_GPIO;
235 214 ldp_panel_data.gpios[3] = LCD_PANEL_QVGA_GPIO;
236 static struct gpio gpios[] __initdata = {
237 {LCD_PANEL_RESET_GPIO, GPIOF_OUT_INIT_HIGH, "LCD RESET"},
238 {LCD_PANEL_QVGA_GPIO, GPIOF_OUT_INIT_HIGH, "LCD QVGA"},
239 };
240
241 r = gpio_request_array(gpios, ARRAY_SIZE(gpios));
242 if (r) {
243 pr_err("Cannot request LCD GPIOs, error %d\n", r);
244 return;
245 }
246 215
247 omap_display_init(&ldp_dss_data); 216 omap_display_init(&ldp_dss_data);
248} 217}
249 218
250static int ldp_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) 219static int ldp_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio)
251{ 220{
252 int r; 221 ldp_panel_data.gpios[0] = gpio + 7;
253 222 ldp_panel_data.gpio_invert[0] = true;
254 struct gpio gpios[] = { 223
255 {gpio + 7 , GPIOF_OUT_INIT_LOW, "LCD ENABLE"}, 224 ldp_panel_data.gpios[1] = gpio + 15;
256 {gpio + 15, GPIOF_OUT_INIT_LOW, "LCD BACKLIGHT"}, 225 ldp_panel_data.gpio_invert[1] = true;
257 };
258
259 r = gpio_request_array(gpios, ARRAY_SIZE(gpios));
260 if (r) {
261 pr_err("Cannot request LCD GPIOs, error %d\n", r);
262 ldp_backlight_gpio = -EINVAL;
263 ldp_lcd_enable_gpio = -EINVAL;
264 return r;
265 }
266
267 ldp_backlight_gpio = gpio + 15;
268 ldp_lcd_enable_gpio = gpio + 7;
269 226
270 return 0; 227 return 0;
271} 228}
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index c3558f93d42c..0ce91af753fa 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -43,7 +43,7 @@
43#include <asm/mach/flash.h> 43#include <asm/mach/flash.h>
44 44
45#include <video/omapdss.h> 45#include <video/omapdss.h>
46#include <video/omap-panel-tfp410.h> 46#include <video/omap-panel-data.h>
47#include <linux/platform_data/mtd-nand-omap2.h> 47#include <linux/platform_data/mtd-nand-omap2.h>
48 48
49#include "common.h" 49#include "common.h"
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index 48789e0bb915..5eecc178f8bf 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -51,7 +51,7 @@
51#include "common.h" 51#include "common.h"
52#include <linux/platform_data/spi-omap2-mcspi.h> 52#include <linux/platform_data/spi-omap2-mcspi.h>
53#include <video/omapdss.h> 53#include <video/omapdss.h>
54#include <video/omap-panel-tfp410.h> 54#include <video/omap-panel-data.h>
55 55
56#include "soc.h" 56#include "soc.h"
57#include "mux.h" 57#include "mux.h"
@@ -155,61 +155,43 @@ static inline void __init omap3evm_init_smsc911x(void) { return; }
155#define OMAP3EVM_LCD_PANEL_LR 2 155#define OMAP3EVM_LCD_PANEL_LR 2
156#define OMAP3EVM_LCD_PANEL_UD 3 156#define OMAP3EVM_LCD_PANEL_UD 3
157#define OMAP3EVM_LCD_PANEL_INI 152 157#define OMAP3EVM_LCD_PANEL_INI 152
158#define OMAP3EVM_LCD_PANEL_ENVDD 153
159#define OMAP3EVM_LCD_PANEL_QVGA 154 158#define OMAP3EVM_LCD_PANEL_QVGA 154
160#define OMAP3EVM_LCD_PANEL_RESB 155 159#define OMAP3EVM_LCD_PANEL_RESB 155
160
161#define OMAP3EVM_LCD_PANEL_ENVDD 153
161#define OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO 210 162#define OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO 210
163
164/*
165 * OMAP3EVM DVI control signals
166 */
162#define OMAP3EVM_DVI_PANEL_EN_GPIO 199 167#define OMAP3EVM_DVI_PANEL_EN_GPIO 199
163 168
164static struct gpio omap3_evm_dss_gpios[] __initdata = { 169static struct panel_sharp_ls037v7dw01_data omap3_evm_lcd_data = {
165 { OMAP3EVM_LCD_PANEL_RESB, GPIOF_OUT_INIT_HIGH, "lcd_panel_resb" }, 170 .resb_gpio = OMAP3EVM_LCD_PANEL_RESB,
166 { OMAP3EVM_LCD_PANEL_INI, GPIOF_OUT_INIT_HIGH, "lcd_panel_ini" }, 171 .ini_gpio = OMAP3EVM_LCD_PANEL_INI,
167 { OMAP3EVM_LCD_PANEL_QVGA, GPIOF_OUT_INIT_LOW, "lcd_panel_qvga" }, 172 .mo_gpio = OMAP3EVM_LCD_PANEL_QVGA,
168 { OMAP3EVM_LCD_PANEL_LR, GPIOF_OUT_INIT_HIGH, "lcd_panel_lr" }, 173 .lr_gpio = OMAP3EVM_LCD_PANEL_LR,
169 { OMAP3EVM_LCD_PANEL_UD, GPIOF_OUT_INIT_HIGH, "lcd_panel_ud" }, 174 .ud_gpio = OMAP3EVM_LCD_PANEL_UD,
170 { OMAP3EVM_LCD_PANEL_ENVDD, GPIOF_OUT_INIT_LOW, "lcd_panel_envdd" },
171}; 175};
172 176
173static int lcd_enabled;
174static int dvi_enabled;
175
176static void __init omap3_evm_display_init(void) 177static void __init omap3_evm_display_init(void)
177{ 178{
178 int r; 179 int r;
179 180
180 r = gpio_request_array(omap3_evm_dss_gpios, 181 r = gpio_request_one(OMAP3EVM_LCD_PANEL_ENVDD, GPIOF_OUT_INIT_LOW,
181 ARRAY_SIZE(omap3_evm_dss_gpios)); 182 "lcd_panel_envdd");
182 if (r) 183 if (r)
183 printk(KERN_ERR "failed to get lcd_panel_* gpios\n"); 184 pr_err("failed to get lcd_panel_envdd GPIO\n");
184}
185 185
186static int omap3_evm_enable_lcd(struct omap_dss_device *dssdev) 186 r = gpio_request_one(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO,
187{ 187 GPIOF_OUT_INIT_LOW, "lcd_panel_bklight");
188 if (dvi_enabled) { 188 if (r)
189 printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); 189 pr_err("failed to get lcd_panel_bklight GPIO\n");
190 return -EINVAL;
191 }
192 gpio_set_value(OMAP3EVM_LCD_PANEL_ENVDD, 0);
193 190
194 if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) 191 if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
195 gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0); 192 gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0);
196 else 193 else
197 gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1); 194 gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
198
199 lcd_enabled = 1;
200 return 0;
201}
202
203static void omap3_evm_disable_lcd(struct omap_dss_device *dssdev)
204{
205 gpio_set_value(OMAP3EVM_LCD_PANEL_ENVDD, 1);
206
207 if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
208 gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
209 else
210 gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0);
211
212 lcd_enabled = 0;
213} 195}
214 196
215static struct omap_dss_device omap3_evm_lcd_device = { 197static struct omap_dss_device omap3_evm_lcd_device = {
@@ -217,26 +199,14 @@ static struct omap_dss_device omap3_evm_lcd_device = {
217 .driver_name = "sharp_ls_panel", 199 .driver_name = "sharp_ls_panel",
218 .type = OMAP_DISPLAY_TYPE_DPI, 200 .type = OMAP_DISPLAY_TYPE_DPI,
219 .phy.dpi.data_lines = 18, 201 .phy.dpi.data_lines = 18,
220 .platform_enable = omap3_evm_enable_lcd, 202 .data = &omap3_evm_lcd_data,
221 .platform_disable = omap3_evm_disable_lcd,
222}; 203};
223 204
224static int omap3_evm_enable_tv(struct omap_dss_device *dssdev)
225{
226 return 0;
227}
228
229static void omap3_evm_disable_tv(struct omap_dss_device *dssdev)
230{
231}
232
233static struct omap_dss_device omap3_evm_tv_device = { 205static struct omap_dss_device omap3_evm_tv_device = {
234 .name = "tv", 206 .name = "tv",
235 .driver_name = "venc", 207 .driver_name = "venc",
236 .type = OMAP_DISPLAY_TYPE_VENC, 208 .type = OMAP_DISPLAY_TYPE_VENC,
237 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, 209 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
238 .platform_enable = omap3_evm_enable_tv,
239 .platform_disable = omap3_evm_disable_tv,
240}; 210};
241 211
242static struct tfp410_platform_data dvi_panel = { 212static struct tfp410_platform_data dvi_panel = {
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
index 2bba362148a0..533180f8bf41 100644
--- a/arch/arm/mach-omap2/board-omap3pandora.c
+++ b/arch/arm/mach-omap2/board-omap3pandora.c
@@ -44,6 +44,7 @@
44 44
45#include "common.h" 45#include "common.h"
46#include <video/omapdss.h> 46#include <video/omapdss.h>
47#include <video/omap-panel-data.h>
47#include <linux/platform_data/mtd-nand-omap2.h> 48#include <linux/platform_data/mtd-nand-omap2.h>
48 49
49#include "mux.h" 50#include "mux.h"
@@ -230,12 +231,16 @@ static struct twl4030_keypad_data pandora_kp_data = {
230 .rep = 1, 231 .rep = 1,
231}; 232};
232 233
234static struct panel_tpo_td043_data lcd_data = {
235 .nreset_gpio = 157,
236};
237
233static struct omap_dss_device pandora_lcd_device = { 238static struct omap_dss_device pandora_lcd_device = {
234 .name = "lcd", 239 .name = "lcd",
235 .driver_name = "tpo_td043mtea1_panel", 240 .driver_name = "tpo_td043mtea1_panel",
236 .type = OMAP_DISPLAY_TYPE_DPI, 241 .type = OMAP_DISPLAY_TYPE_DPI,
237 .phy.dpi.data_lines = 24, 242 .phy.dpi.data_lines = 24,
238 .reset_gpio = 157, 243 .data = &lcd_data,
239}; 244};
240 245
241static struct omap_dss_device pandora_tv_device = { 246static struct omap_dss_device pandora_tv_device = {
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c
index 95c10b3aa678..5e63f0758cef 100644
--- a/arch/arm/mach-omap2/board-omap3stalker.c
+++ b/arch/arm/mach-omap2/board-omap3stalker.c
@@ -44,8 +44,7 @@
44#include "gpmc.h" 44#include "gpmc.h"
45#include <linux/platform_data/mtd-nand-omap2.h> 45#include <linux/platform_data/mtd-nand-omap2.h>
46#include <video/omapdss.h> 46#include <video/omapdss.h>
47#include <video/omap-panel-generic-dpi.h> 47#include <video/omap-panel-data.h>
48#include <video/omap-panel-tfp410.h>
49 48
50#include <linux/platform_data/spi-omap2-mcspi.h> 49#include <linux/platform_data/spi-omap2-mcspi.h>
51 50
@@ -95,15 +94,6 @@ static void __init omap3_stalker_display_init(void)
95 return; 94 return;
96} 95}
97 96
98static int omap3_stalker_enable_tv(struct omap_dss_device *dssdev)
99{
100 return 0;
101}
102
103static void omap3_stalker_disable_tv(struct omap_dss_device *dssdev)
104{
105}
106
107static struct omap_dss_device omap3_stalker_tv_device = { 97static struct omap_dss_device omap3_stalker_tv_device = {
108 .name = "tv", 98 .name = "tv",
109 .driver_name = "venc", 99 .driver_name = "venc",
@@ -113,8 +103,6 @@ static struct omap_dss_device omap3_stalker_tv_device = {
113#elif defined(CONFIG_OMAP2_VENC_OUT_TYPE_COMPOSITE) 103#elif defined(CONFIG_OMAP2_VENC_OUT_TYPE_COMPOSITE)
114 .u.venc.type = OMAP_DSS_VENC_TYPE_COMPOSITE, 104 .u.venc.type = OMAP_DSS_VENC_TYPE_COMPOSITE,
115#endif 105#endif
116 .platform_enable = omap3_stalker_enable_tv,
117 .platform_disable = omap3_stalker_disable_tv,
118}; 106};
119 107
120static struct tfp410_platform_data dvi_panel = { 108static struct tfp410_platform_data dvi_panel = {
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index 86bab51154ee..f790ce5aaa34 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -47,8 +47,7 @@
47#include <asm/mach/map.h> 47#include <asm/mach/map.h>
48 48
49#include <video/omapdss.h> 49#include <video/omapdss.h>
50#include <video/omap-panel-generic-dpi.h> 50#include <video/omap-panel-data.h>
51#include <video/omap-panel-tfp410.h>
52 51
53#include "common.h" 52#include "common.h"
54#include "mux.h" 53#include "mux.h"
@@ -146,28 +145,9 @@ static inline void __init overo_init_smsc911x(void) { return; }
146#endif 145#endif
147 146
148/* DSS */ 147/* DSS */
149static int lcd_enabled;
150static int dvi_enabled;
151
152#define OVERO_GPIO_LCD_EN 144 148#define OVERO_GPIO_LCD_EN 144
153#define OVERO_GPIO_LCD_BL 145 149#define OVERO_GPIO_LCD_BL 145
154 150
155static struct gpio overo_dss_gpios[] __initdata = {
156 { OVERO_GPIO_LCD_EN, GPIOF_OUT_INIT_HIGH, "OVERO_GPIO_LCD_EN" },
157 { OVERO_GPIO_LCD_BL, GPIOF_OUT_INIT_HIGH, "OVERO_GPIO_LCD_BL" },
158};
159
160static void __init overo_display_init(void)
161{
162 if (gpio_request_array(overo_dss_gpios, ARRAY_SIZE(overo_dss_gpios))) {
163 printk(KERN_ERR "could not obtain DSS control GPIOs\n");
164 return;
165 }
166
167 gpio_export(OVERO_GPIO_LCD_EN, 0);
168 gpio_export(OVERO_GPIO_LCD_BL, 0);
169}
170
171static struct tfp410_platform_data dvi_panel = { 151static struct tfp410_platform_data dvi_panel = {
172 .i2c_bus_num = 3, 152 .i2c_bus_num = 3,
173 .power_down_gpio = -1, 153 .power_down_gpio = -1,
@@ -188,30 +168,13 @@ static struct omap_dss_device overo_tv_device = {
188 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, 168 .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
189}; 169};
190 170
191static int overo_panel_enable_lcd(struct omap_dss_device *dssdev)
192{
193 if (dvi_enabled) {
194 printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
195 return -EINVAL;
196 }
197
198 gpio_set_value(OVERO_GPIO_LCD_EN, 1);
199 gpio_set_value(OVERO_GPIO_LCD_BL, 1);
200 lcd_enabled = 1;
201 return 0;
202}
203
204static void overo_panel_disable_lcd(struct omap_dss_device *dssdev)
205{
206 gpio_set_value(OVERO_GPIO_LCD_EN, 0);
207 gpio_set_value(OVERO_GPIO_LCD_BL, 0);
208 lcd_enabled = 0;
209}
210
211static struct panel_generic_dpi_data lcd43_panel = { 171static struct panel_generic_dpi_data lcd43_panel = {
212 .name = "samsung_lte430wq_f0c", 172 .name = "samsung_lte430wq_f0c",
213 .platform_enable = overo_panel_enable_lcd, 173 .num_gpios = 2,
214 .platform_disable = overo_panel_disable_lcd, 174 .gpios = {
175 OVERO_GPIO_LCD_EN,
176 OVERO_GPIO_LCD_BL
177 },
215}; 178};
216 179
217static struct omap_dss_device overo_lcd43_device = { 180static struct omap_dss_device overo_lcd43_device = {
@@ -224,13 +187,20 @@ static struct omap_dss_device overo_lcd43_device = {
224 187
225#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ 188#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \
226 defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) 189 defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE)
190static struct panel_generic_dpi_data lcd35_panel = {
191 .num_gpios = 2,
192 .gpios = {
193 OVERO_GPIO_LCD_EN,
194 OVERO_GPIO_LCD_BL
195 },
196};
197
227static struct omap_dss_device overo_lcd35_device = { 198static struct omap_dss_device overo_lcd35_device = {
228 .type = OMAP_DISPLAY_TYPE_DPI, 199 .type = OMAP_DISPLAY_TYPE_DPI,
229 .name = "lcd35", 200 .name = "lcd35",
230 .driver_name = "lgphilips_lb035q02_panel", 201 .driver_name = "lgphilips_lb035q02_panel",
231 .phy.dpi.data_lines = 24, 202 .phy.dpi.data_lines = 24,
232 .platform_enable = overo_panel_enable_lcd, 203 .data = &lcd35_panel,
233 .platform_disable = overo_panel_disable_lcd,
234}; 204};
235#endif 205#endif
236 206
@@ -505,7 +475,6 @@ static void __init overo_init(void)
505 usbhs_init(&usbhs_bdata); 475 usbhs_init(&usbhs_bdata);
506 overo_spi_init(); 476 overo_spi_init();
507 overo_init_smsc911x(); 477 overo_init_smsc911x();
508 overo_display_init();
509 overo_init_led(); 478 overo_init_led();
510 overo_init_keys(); 479 overo_init_keys();
511 omap_twl4030_audio_init("overo", NULL); 480 omap_twl4030_audio_init("overo", NULL);
diff --git a/arch/arm/mach-omap2/board-rx51-video.c b/arch/arm/mach-omap2/board-rx51-video.c
index eb667261df08..bd74f9f6063b 100644
--- a/arch/arm/mach-omap2/board-rx51-video.c
+++ b/arch/arm/mach-omap2/board-rx51-video.c
@@ -16,6 +16,8 @@
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <asm/mach-types.h> 17#include <asm/mach-types.h>
18#include <video/omapdss.h> 18#include <video/omapdss.h>
19#include <video/omap-panel-data.h>
20
19#include <linux/platform_data/spi-omap2-mcspi.h> 21#include <linux/platform_data/spi-omap2-mcspi.h>
20 22
21#include "soc.h" 23#include "soc.h"
@@ -27,25 +29,16 @@
27 29
28#if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE) 30#if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE)
29 31
30static int rx51_lcd_enable(struct omap_dss_device *dssdev) 32static struct panel_acx565akm_data lcd_data = {
31{ 33 .reset_gpio = RX51_LCD_RESET_GPIO,
32 gpio_set_value(dssdev->reset_gpio, 1); 34};
33 return 0;
34}
35
36static void rx51_lcd_disable(struct omap_dss_device *dssdev)
37{
38 gpio_set_value(dssdev->reset_gpio, 0);
39}
40 35
41static struct omap_dss_device rx51_lcd_device = { 36static struct omap_dss_device rx51_lcd_device = {
42 .name = "lcd", 37 .name = "lcd",
43 .driver_name = "panel-acx565akm", 38 .driver_name = "panel-acx565akm",
44 .type = OMAP_DISPLAY_TYPE_SDI, 39 .type = OMAP_DISPLAY_TYPE_SDI,
45 .phy.sdi.datapairs = 2, 40 .phy.sdi.datapairs = 2,
46 .reset_gpio = RX51_LCD_RESET_GPIO, 41 .data = &lcd_data,
47 .platform_enable = rx51_lcd_enable,
48 .platform_disable = rx51_lcd_disable,
49}; 42};
50 43
51static struct omap_dss_device rx51_tv_device = { 44static struct omap_dss_device rx51_tv_device = {
@@ -76,13 +69,8 @@ static int __init rx51_video_init(void)
76 return 0; 69 return 0;
77 } 70 }
78 71
79 if (gpio_request_one(RX51_LCD_RESET_GPIO, GPIOF_OUT_INIT_HIGH,
80 "LCD ACX565AKM reset")) {
81 pr_err("%s failed to get LCD Reset GPIO\n", __func__);
82 return 0;
83 }
84
85 omap_display_init(&rx51_dss_board_info); 72 omap_display_init(&rx51_dss_board_info);
73
86 return 0; 74 return 0;
87} 75}
88 76
diff --git a/arch/arm/mach-omap2/board-zoom-display.c b/arch/arm/mach-omap2/board-zoom-display.c
index 8cef477d6b00..c2a079cb76fc 100644
--- a/arch/arm/mach-omap2/board-zoom-display.c
+++ b/arch/arm/mach-omap2/board-zoom-display.c
@@ -12,12 +12,12 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/platform_device.h> 13#include <linux/platform_device.h>
14#include <linux/gpio.h> 14#include <linux/gpio.h>
15#include <linux/i2c/twl.h>
16#include <linux/spi/spi.h> 15#include <linux/spi/spi.h>
17#include <linux/platform_data/spi-omap2-mcspi.h> 16#include <linux/platform_data/spi-omap2-mcspi.h>
18#include <video/omapdss.h> 17#include <video/omapdss.h>
19#include "board-zoom.h" 18#include <video/omap-panel-data.h>
20 19
20#include "board-zoom.h"
21#include "soc.h" 21#include "soc.h"
22#include "common.h" 22#include "common.h"
23 23
@@ -25,92 +25,17 @@
25#define LCD_PANEL_RESET_GPIO_PILOT 55 25#define LCD_PANEL_RESET_GPIO_PILOT 55
26#define LCD_PANEL_QVGA_GPIO 56 26#define LCD_PANEL_QVGA_GPIO 56
27 27
28static struct gpio zoom_lcd_gpios[] __initdata = { 28static struct panel_nec_nl8048_data zoom_lcd_data = {
29 { -EINVAL, GPIOF_OUT_INIT_HIGH, "lcd reset" }, 29 /* res_gpio filled in code */
30 { LCD_PANEL_QVGA_GPIO, GPIOF_OUT_INIT_HIGH, "lcd qvga" }, 30 .qvga_gpio = LCD_PANEL_QVGA_GPIO,
31}; 31};
32 32
33static void __init zoom_lcd_panel_init(void)
34{
35 zoom_lcd_gpios[0].gpio = (omap_rev() > OMAP3430_REV_ES3_0) ?
36 LCD_PANEL_RESET_GPIO_PROD :
37 LCD_PANEL_RESET_GPIO_PILOT;
38
39 if (gpio_request_array(zoom_lcd_gpios, ARRAY_SIZE(zoom_lcd_gpios)))
40 pr_err("%s: Failed to get LCD GPIOs.\n", __func__);
41}
42
43static int zoom_panel_enable_lcd(struct omap_dss_device *dssdev)
44{
45 return 0;
46}
47
48static void zoom_panel_disable_lcd(struct omap_dss_device *dssdev)
49{
50}
51
52/* Register offsets in TWL4030_MODULE_INTBR */
53#define TWL_INTBR_PMBR1 0xD
54#define TWL_INTBR_GPBR1 0xC
55
56/* Register offsets in TWL_MODULE_PWM */
57#define TWL_LED_PWMON 0x3
58#define TWL_LED_PWMOFF 0x4
59
60static int zoom_set_bl_intensity(struct omap_dss_device *dssdev, int level)
61{
62#ifdef CONFIG_TWL4030_CORE
63 unsigned char c;
64 u8 mux_pwm, enb_pwm;
65
66 if (level > 100)
67 return -1;
68
69 twl_i2c_read_u8(TWL4030_MODULE_INTBR, &mux_pwm, TWL_INTBR_PMBR1);
70 twl_i2c_read_u8(TWL4030_MODULE_INTBR, &enb_pwm, TWL_INTBR_GPBR1);
71
72 if (level == 0) {
73 /* disable pwm1 output and clock */
74 enb_pwm = enb_pwm & 0xF5;
75 /* change pwm1 pin to gpio pin */
76 mux_pwm = mux_pwm & 0xCF;
77 twl_i2c_write_u8(TWL4030_MODULE_INTBR,
78 enb_pwm, TWL_INTBR_GPBR1);
79 twl_i2c_write_u8(TWL4030_MODULE_INTBR,
80 mux_pwm, TWL_INTBR_PMBR1);
81 return 0;
82 }
83
84 if (!((enb_pwm & 0xA) && (mux_pwm & 0x30))) {
85 /* change gpio pin to pwm1 pin */
86 mux_pwm = mux_pwm | 0x30;
87 /* enable pwm1 output and clock*/
88 enb_pwm = enb_pwm | 0x0A;
89 twl_i2c_write_u8(TWL4030_MODULE_INTBR,
90 mux_pwm, TWL_INTBR_PMBR1);
91 twl_i2c_write_u8(TWL4030_MODULE_INTBR,
92 enb_pwm, TWL_INTBR_GPBR1);
93 }
94
95 c = ((50 * (100 - level)) / 100) + 1;
96 twl_i2c_write_u8(TWL_MODULE_PWM, 0x7F, TWL_LED_PWMOFF);
97 twl_i2c_write_u8(TWL_MODULE_PWM, c, TWL_LED_PWMON);
98#else
99 pr_warn("Backlight not enabled\n");
100#endif
101
102 return 0;
103}
104
105static struct omap_dss_device zoom_lcd_device = { 33static struct omap_dss_device zoom_lcd_device = {
106 .name = "lcd", 34 .name = "lcd",
107 .driver_name = "NEC_8048_panel", 35 .driver_name = "NEC_8048_panel",
108 .type = OMAP_DISPLAY_TYPE_DPI, 36 .type = OMAP_DISPLAY_TYPE_DPI,
109 .phy.dpi.data_lines = 24, 37 .phy.dpi.data_lines = 24,
110 .platform_enable = zoom_panel_enable_lcd, 38 .data = &zoom_lcd_data,
111 .platform_disable = zoom_panel_disable_lcd,
112 .max_backlight_level = 100,
113 .set_backlight = zoom_set_bl_intensity,
114}; 39};
115 40
116static struct omap_dss_device *zoom_dss_devices[] = { 41static struct omap_dss_device *zoom_dss_devices[] = {
@@ -123,6 +48,13 @@ static struct omap_dss_board_info zoom_dss_data = {
123 .default_device = &zoom_lcd_device, 48 .default_device = &zoom_lcd_device,
124}; 49};
125 50
51static void __init zoom_lcd_panel_init(void)
52{
53 zoom_lcd_data.res_gpio = (omap_rev() > OMAP3430_REV_ES3_0) ?
54 LCD_PANEL_RESET_GPIO_PROD :
55 LCD_PANEL_RESET_GPIO_PILOT;
56}
57
126static struct omap2_mcspi_device_config dss_lcd_mcspi_config = { 58static struct omap2_mcspi_device_config dss_lcd_mcspi_config = {
127 .turbo_mode = 1, 59 .turbo_mode = 1,
128}; 60};
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c
index cdc0c1021863..a90375d5b2b6 100644
--- a/arch/arm/mach-omap2/board-zoom-peripherals.c
+++ b/arch/arm/mach-omap2/board-zoom-peripherals.c
@@ -22,6 +22,9 @@
22#include <linux/platform_data/gpio-omap.h> 22#include <linux/platform_data/gpio-omap.h>
23#include <linux/platform_data/omap-twl4030.h> 23#include <linux/platform_data/omap-twl4030.h>
24#include <linux/usb/phy.h> 24#include <linux/usb/phy.h>
25#include <linux/pwm.h>
26#include <linux/leds_pwm.h>
27#include <linux/pwm_backlight.h>
25 28
26#include <asm/mach-types.h> 29#include <asm/mach-types.h>
27#include <asm/mach/arch.h> 30#include <asm/mach/arch.h>
@@ -193,6 +196,53 @@ static struct platform_device omap_vwlan_device = {
193 }, 196 },
194}; 197};
195 198
199static struct pwm_lookup zoom_pwm_lookup[] = {
200 PWM_LOOKUP("twl-pwm", 0, "leds_pwm", "zoom::keypad"),
201 PWM_LOOKUP("twl-pwm", 1, "pwm-backlight", "backlight"),
202};
203
204static struct led_pwm zoom_pwm_leds[] = {
205 {
206 .name = "zoom::keypad",
207 .max_brightness = 127,
208 .pwm_period_ns = 7812500,
209 },
210};
211
212static struct led_pwm_platform_data zoom_pwm_data = {
213 .num_leds = ARRAY_SIZE(zoom_pwm_leds),
214 .leds = zoom_pwm_leds,
215};
216
217static struct platform_device zoom_leds_pwm = {
218 .name = "leds_pwm",
219 .id = -1,
220 .dev = {
221 .platform_data = &zoom_pwm_data,
222 },
223};
224
225static struct platform_pwm_backlight_data zoom_backlight_data = {
226 .pwm_id = 1,
227 .max_brightness = 127,
228 .dft_brightness = 127,
229 .pwm_period_ns = 7812500,
230};
231
232static struct platform_device zoom_backlight_pwm = {
233 .name = "pwm-backlight",
234 .id = -1,
235 .dev = {
236 .platform_data = &zoom_backlight_data,
237 },
238};
239
240static struct platform_device *zoom_devices[] __initdata = {
241 &omap_vwlan_device,
242 &zoom_leds_pwm,
243 &zoom_backlight_pwm,
244};
245
196static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { 246static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = {
197 .board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */ 247 .board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */
198}; 248};
@@ -301,7 +351,8 @@ void __init zoom_peripherals_init(void)
301 351
302 omap_hsmmc_init(mmc); 352 omap_hsmmc_init(mmc);
303 omap_i2c_init(); 353 omap_i2c_init();
304 platform_device_register(&omap_vwlan_device); 354 pwm_add_table(zoom_pwm_lookup, ARRAY_SIZE(zoom_pwm_lookup));
355 platform_add_devices(zoom_devices, ARRAY_SIZE(zoom_devices));
305 usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb"); 356 usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
306 usb_musb_init(NULL); 357 usb_musb_init(NULL);
307 enable_board_wakeup_source(); 358 enable_board_wakeup_source();
diff --git a/arch/arm/mach-omap2/dss-common.c b/arch/arm/mach-omap2/dss-common.c
index 4be5cfc81ab8..393aeefaebb0 100644
--- a/arch/arm/mach-omap2/dss-common.c
+++ b/arch/arm/mach-omap2/dss-common.c
@@ -27,9 +27,7 @@
27#include <linux/gpio.h> 27#include <linux/gpio.h>
28 28
29#include <video/omapdss.h> 29#include <video/omapdss.h>
30#include <video/omap-panel-tfp410.h> 30#include <video/omap-panel-data.h>
31#include <video/omap-panel-nokia-dsi.h>
32#include <video/omap-panel-picodlp.h>
33 31
34#include "soc.h" 32#include "soc.h"
35#include "dss-common.h" 33#include "dss-common.h"
@@ -54,7 +52,6 @@ static struct omap_dss_device omap4_panda_dvi_device = {
54 .driver_name = "tfp410", 52 .driver_name = "tfp410",
55 .data = &omap4_dvi_panel, 53 .data = &omap4_dvi_panel,
56 .phy.dpi.data_lines = 24, 54 .phy.dpi.data_lines = 24,
57 .reset_gpio = PANDA_DVI_TFP410_POWER_DOWN_GPIO,
58 .channel = OMAP_DSS_CHANNEL_LCD2, 55 .channel = OMAP_DSS_CHANNEL_LCD2,
59}; 56};
60 57
@@ -179,45 +176,12 @@ static struct picodlp_panel_data sdp4430_picodlp_pdata = {
179 .pwrgood_gpio = 45, 176 .pwrgood_gpio = 45,
180}; 177};
181 178
182static void sdp4430_picodlp_init(void)
183{
184 int r;
185 const struct gpio picodlp_gpios[] = {
186 {DLP_POWER_ON_GPIO, GPIOF_OUT_INIT_LOW,
187 "DLP POWER ON"},
188 {sdp4430_picodlp_pdata.emu_done_gpio, GPIOF_IN,
189 "DLP EMU DONE"},
190 {sdp4430_picodlp_pdata.pwrgood_gpio, GPIOF_OUT_INIT_LOW,
191 "DLP PWRGOOD"},
192 };
193
194 r = gpio_request_array(picodlp_gpios, ARRAY_SIZE(picodlp_gpios));
195 if (r)
196 pr_err("Cannot request PicoDLP GPIOs, error %d\n", r);
197}
198
199static int sdp4430_panel_enable_picodlp(struct omap_dss_device *dssdev)
200{
201 gpio_set_value(DISPLAY_SEL_GPIO, 0);
202 gpio_set_value(DLP_POWER_ON_GPIO, 1);
203
204 return 0;
205}
206
207static void sdp4430_panel_disable_picodlp(struct omap_dss_device *dssdev)
208{
209 gpio_set_value(DLP_POWER_ON_GPIO, 0);
210 gpio_set_value(DISPLAY_SEL_GPIO, 1);
211}
212
213static struct omap_dss_device sdp4430_picodlp_device = { 179static struct omap_dss_device sdp4430_picodlp_device = {
214 .name = "picodlp", 180 .name = "picodlp",
215 .driver_name = "picodlp_panel", 181 .driver_name = "picodlp_panel",
216 .type = OMAP_DISPLAY_TYPE_DPI, 182 .type = OMAP_DISPLAY_TYPE_DPI,
217 .phy.dpi.data_lines = 24, 183 .phy.dpi.data_lines = 24,
218 .channel = OMAP_DSS_CHANNEL_LCD2, 184 .channel = OMAP_DSS_CHANNEL_LCD2,
219 .platform_enable = sdp4430_panel_enable_picodlp,
220 .platform_disable = sdp4430_panel_disable_picodlp,
221 .data = &sdp4430_picodlp_pdata, 185 .data = &sdp4430_picodlp_pdata,
222}; 186};
223 187
@@ -234,17 +198,26 @@ static struct omap_dss_board_info sdp4430_dss_data = {
234 .default_device = &sdp4430_lcd_device, 198 .default_device = &sdp4430_lcd_device,
235}; 199};
236 200
201/*
202 * we select LCD2 by default (instead of Pico DLP) by setting DISPLAY_SEL_GPIO.
203 * Setting DLP_POWER_ON gpio enables the VDLP_2V5 VDLP_1V8 and VDLP_1V0 rails
204 * used by picodlp on the 4430sdp platform. Keep this gpio disabled as LCD2 is
205 * selected by default
206 */
237void __init omap_4430sdp_display_init(void) 207void __init omap_4430sdp_display_init(void)
238{ 208{
239 int r; 209 int r;
240 210
241 /* Enable LCD2 by default (instead of Pico DLP) */
242 r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH, 211 r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH,
243 "display_sel"); 212 "display_sel");
244 if (r) 213 if (r)
245 pr_err("%s: Could not get display_sel GPIO\n", __func__); 214 pr_err("%s: Could not get display_sel GPIO\n", __func__);
246 215
247 sdp4430_picodlp_init(); 216 r = gpio_request_one(DLP_POWER_ON_GPIO, GPIOF_OUT_INIT_LOW,
217 "DLP POWER ON");
218 if (r)
219 pr_err("%s: Could not get DLP POWER ON GPIO\n", __func__);
220
248 omap_display_init(&sdp4430_dss_data); 221 omap_display_init(&sdp4430_dss_data);
249 /* 222 /*
250 * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and 223 * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
@@ -264,12 +237,15 @@ void __init omap_4430sdp_display_init_of(void)
264{ 237{
265 int r; 238 int r;
266 239
267 /* Enable LCD2 by default (instead of Pico DLP) */
268 r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH, 240 r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH,
269 "display_sel"); 241 "display_sel");
270 if (r) 242 if (r)
271 pr_err("%s: Could not get display_sel GPIO\n", __func__); 243 pr_err("%s: Could not get display_sel GPIO\n", __func__);
272 244
273 sdp4430_picodlp_init(); 245 r = gpio_request_one(DLP_POWER_ON_GPIO, GPIOF_OUT_INIT_LOW,
246 "DLP POWER ON");
247 if (r)
248 pr_err("%s: Could not get DLP POWER ON GPIO\n", __func__);
249
274 omap_display_init(&sdp4430_dss_data); 250 omap_display_init(&sdp4430_dss_data);
275} 251}
diff --git a/drivers/video/omap2/displays/panel-generic-dpi.c b/drivers/video/omap2/displays/panel-generic-dpi.c
index c904f42d81c1..a0c9396ca43f 100644
--- a/drivers/video/omap2/displays/panel-generic-dpi.c
+++ b/drivers/video/omap2/displays/panel-generic-dpi.c
@@ -35,7 +35,7 @@
35#include <linux/slab.h> 35#include <linux/slab.h>
36#include <video/omapdss.h> 36#include <video/omapdss.h>
37 37
38#include <video/omap-panel-generic-dpi.h> 38#include <video/omap-panel-data.h>
39 39
40struct panel_config { 40struct panel_config {
41 struct omap_video_timings timings; 41 struct omap_video_timings timings;
diff --git a/drivers/video/omap2/displays/panel-n8x0.c b/drivers/video/omap2/displays/panel-n8x0.c
index dd1294750802..9c6b5fafeb2e 100644
--- a/drivers/video/omap2/displays/panel-n8x0.c
+++ b/drivers/video/omap2/displays/panel-n8x0.c
@@ -9,7 +9,7 @@
9#include <linux/fb.h> 9#include <linux/fb.h>
10 10
11#include <video/omapdss.h> 11#include <video/omapdss.h>
12#include <video/omap-panel-n8x0.h> 12#include <video/omap-panel-data.h>
13 13
14#define BLIZZARD_REV_CODE 0x00 14#define BLIZZARD_REV_CODE 0x00
15#define BLIZZARD_CONFIG 0x02 15#define BLIZZARD_CONFIG 0x02
diff --git a/drivers/video/omap2/displays/panel-picodlp.c b/drivers/video/omap2/displays/panel-picodlp.c
index 1b94018aac3e..974ac29236aa 100644
--- a/drivers/video/omap2/displays/panel-picodlp.c
+++ b/drivers/video/omap2/displays/panel-picodlp.c
@@ -31,7 +31,7 @@
31#include <linux/gpio.h> 31#include <linux/gpio.h>
32 32
33#include <video/omapdss.h> 33#include <video/omapdss.h>
34#include <video/omap-panel-picodlp.h> 34#include <video/omap-panel-data.h>
35 35
36#include "panel-picodlp.h" 36#include "panel-picodlp.h"
37 37
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c
index a32407a5735a..031d4069f332 100644
--- a/drivers/video/omap2/displays/panel-taal.c
+++ b/drivers/video/omap2/displays/panel-taal.c
@@ -33,7 +33,7 @@
33#include <linux/mutex.h> 33#include <linux/mutex.h>
34 34
35#include <video/omapdss.h> 35#include <video/omapdss.h>
36#include <video/omap-panel-nokia-dsi.h> 36#include <video/omap-panel-data.h>
37#include <video/mipi_display.h> 37#include <video/mipi_display.h>
38 38
39/* DSI Virtual channel. Hardcoded for now. */ 39/* DSI Virtual channel. Hardcoded for now. */
diff --git a/drivers/video/omap2/displays/panel-tfp410.c b/drivers/video/omap2/displays/panel-tfp410.c
index 8281baafe1ef..a1dba868cef1 100644
--- a/drivers/video/omap2/displays/panel-tfp410.c
+++ b/drivers/video/omap2/displays/panel-tfp410.c
@@ -24,7 +24,7 @@
24#include <linux/gpio.h> 24#include <linux/gpio.h>
25#include <drm/drm_edid.h> 25#include <drm/drm_edid.h>
26 26
27#include <video/omap-panel-tfp410.h> 27#include <video/omap-panel-data.h>
28 28
29static const struct omap_video_timings tfp410_default_timings = { 29static const struct omap_video_timings tfp410_default_timings = {
30 .x_res = 640, 30 .x_res = 640,
diff --git a/include/video/omap-panel-data.h b/include/video/omap-panel-data.h
new file mode 100644
index 000000000000..6b55839b73fc
--- /dev/null
+++ b/include/video/omap-panel-data.h
@@ -0,0 +1,152 @@
1/*
2 * Header containing platform_data structs for omap panels
3 *
4 * Copyright (C) 2013 Texas Instruments
5 * Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
6 * Archit Taneja <archit@ti.com>
7 *
8 * Copyright (C) 2011 Texas Instruments
9 * Author: Mayuresh Janorkar <mayur@ti.com>
10 *
11 * Copyright (C) 2010 Canonical Ltd.
12 * Author: Bryan Wu <bryan.wu@canonical.com>
13 *
14 * This program is free software; you can redistribute it and/or modify it
15 * under the terms of the GNU General Public License version 2 as published by
16 * the Free Software Foundation.
17 *
18 * This program is distributed in the hope that it will be useful, but WITHOUT
19 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
21 * more details.
22 *
23 * You should have received a copy of the GNU General Public License along with
24 * this program. If not, see <http://www.gnu.org/licenses/>.
25 */
26
27#ifndef __OMAP_PANEL_DATA_H
28#define __OMAP_PANEL_DATA_H
29
30struct omap_dss_device;
31
32/**
33 * struct panel_generic_dpi_data - panel driver configuration data
34 * @name: panel name
35 * @platform_enable: platform specific panel enable function
36 * @platform_disable: platform specific panel disable function
37 * @num_gpios: number of gpios connected to panel
38 * @gpios: gpio numbers on the platform
39 * @gpio_invert: configure gpio as active high or low
40 */
41struct panel_generic_dpi_data {
42 const char *name;
43 int (*platform_enable)(struct omap_dss_device *dssdev);
44 void (*platform_disable)(struct omap_dss_device *dssdev);
45
46 int num_gpios;
47 int gpios[10];
48 bool gpio_invert[10];
49};
50
51/**
52 * struct panel_n8x0_data - N800 panel driver configuration data
53 */
54struct panel_n8x0_data {
55 int (*platform_enable)(struct omap_dss_device *dssdev);
56 void (*platform_disable)(struct omap_dss_device *dssdev);
57 int panel_reset;
58 int ctrl_pwrdown;
59
60 int (*set_backlight)(struct omap_dss_device *dssdev, int level);
61};
62
63/**
64 * struct nokia_dsi_panel_data - Nokia DSI panel driver configuration data
65 * @name: panel name
66 * @use_ext_te: use external TE
67 * @ext_te_gpio: external TE GPIO
68 * @esd_interval: interval of ESD checks, 0 = disabled (ms)
69 * @ulps_timeout: time to wait before entering ULPS, 0 = disabled (ms)
70 * @use_dsi_backlight: true if panel uses DSI command to control backlight
71 * @pin_config: DSI pin configuration
72 */
73
74struct nokia_dsi_panel_data {
75 const char *name;
76
77 int reset_gpio;
78
79 bool use_ext_te;
80 int ext_te_gpio;
81
82 unsigned esd_interval;
83 unsigned ulps_timeout;
84
85 bool use_dsi_backlight;
86
87 struct omap_dsi_pin_config pin_config;
88};
89
90/**
91 * struct picodlp_panel_data - picodlp panel driver configuration data
92 * @picodlp_adapter_id: i2c_adapter number for picodlp
93 */
94struct picodlp_panel_data {
95 int picodlp_adapter_id;
96 int emu_done_gpio;
97 int pwrgood_gpio;
98};
99
100/**
101 * struct tfp410_platform_data - tfp410 panel driver configuration data
102 * @i2c_bus_num: i2c bus id for the panel
103 * @power_down_gpio: gpio number for PD pin (or -1 if not available)
104 */
105struct tfp410_platform_data {
106 int i2c_bus_num;
107 int power_down_gpio;
108};
109
110/**
111 * sharp ls panel driver configuration data
112 * @resb_gpio: reset signal
113 * @ini_gpio: power on control
114 * @mo_gpio: selection for resolution(VGA/QVGA)
115 * @lr_gpio: selection for horizontal scanning direction
116 * @ud_gpio: selection for vertical scanning direction
117 */
118struct panel_sharp_ls037v7dw01_data {
119 int resb_gpio;
120 int ini_gpio;
121 int mo_gpio;
122 int lr_gpio;
123 int ud_gpio;
124};
125
126/**
127 * acx565akm panel driver configuration data
128 * @reset_gpio: reset signal
129 */
130struct panel_acx565akm_data {
131 int reset_gpio;
132};
133
134/**
135 * nec nl8048 panel driver configuration data
136 * @res_gpio: reset signal
137 * @qvga_gpio: selection for resolution(QVGA/WVGA)
138 */
139struct panel_nec_nl8048_data {
140 int res_gpio;
141 int qvga_gpio;
142};
143
144/**
145 * tpo td043 panel driver configuration data
146 * @nreset_gpio: reset signal
147 */
148struct panel_tpo_td043_data {
149 int nreset_gpio;
150};
151
152#endif /* __OMAP_PANEL_DATA_H */
diff --git a/include/video/omap-panel-generic-dpi.h b/include/video/omap-panel-generic-dpi.h
deleted file mode 100644
index 127e3f20328e..000000000000
--- a/include/video/omap-panel-generic-dpi.h
+++ /dev/null
@@ -1,37 +0,0 @@
1/*
2 * Header for generic DPI panel driver
3 *
4 * Copyright (C) 2010 Canonical Ltd.
5 * Author: Bryan Wu <bryan.wu@canonical.com>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License version 2 as published by
9 * the Free Software Foundation.
10 *
11 * This program is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * more details.
15 *
16 * You should have received a copy of the GNU General Public License along with
17 * this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef __OMAP_PANEL_GENERIC_DPI_H
21#define __OMAP_PANEL_GENERIC_DPI_H
22
23struct omap_dss_device;
24
25/**
26 * struct panel_generic_dpi_data - panel driver configuration data
27 * @name: panel name
28 * @platform_enable: platform specific panel enable function
29 * @platform_disable: platform specific panel disable function
30 */
31struct panel_generic_dpi_data {
32 const char *name;
33 int (*platform_enable)(struct omap_dss_device *dssdev);
34 void (*platform_disable)(struct omap_dss_device *dssdev);
35};
36
37#endif /* __OMAP_PANEL_GENERIC_DPI_H */
diff --git a/include/video/omap-panel-n8x0.h b/include/video/omap-panel-n8x0.h
deleted file mode 100644
index 50a1302e2cfd..000000000000
--- a/include/video/omap-panel-n8x0.h
+++ /dev/null
@@ -1,15 +0,0 @@
1#ifndef __OMAP_PANEL_N8X0_H
2#define __OMAP_PANEL_N8X0_H
3
4struct omap_dss_device;
5
6struct panel_n8x0_data {
7 int (*platform_enable)(struct omap_dss_device *dssdev);
8 void (*platform_disable)(struct omap_dss_device *dssdev);
9 int panel_reset;
10 int ctrl_pwrdown;
11
12 int (*set_backlight)(struct omap_dss_device *dssdev, int level);
13};
14
15#endif
diff --git a/include/video/omap-panel-nokia-dsi.h b/include/video/omap-panel-nokia-dsi.h
deleted file mode 100644
index 04219a295539..000000000000
--- a/include/video/omap-panel-nokia-dsi.h
+++ /dev/null
@@ -1,32 +0,0 @@
1#ifndef __OMAP_NOKIA_DSI_PANEL_H
2#define __OMAP_NOKIA_DSI_PANEL_H
3
4struct omap_dss_device;
5
6/**
7 * struct nokia_dsi_panel_data - Nokia DSI panel driver configuration
8 * @name: panel name
9 * @use_ext_te: use external TE
10 * @ext_te_gpio: external TE GPIO
11 * @esd_interval: interval of ESD checks, 0 = disabled (ms)
12 * @ulps_timeout: time to wait before entering ULPS, 0 = disabled (ms)
13 * @use_dsi_backlight: true if panel uses DSI command to control backlight
14 * @pin_config: DSI pin configuration
15 */
16struct nokia_dsi_panel_data {
17 const char *name;
18
19 int reset_gpio;
20
21 bool use_ext_te;
22 int ext_te_gpio;
23
24 unsigned esd_interval;
25 unsigned ulps_timeout;
26
27 bool use_dsi_backlight;
28
29 struct omap_dsi_pin_config pin_config;
30};
31
32#endif /* __OMAP_NOKIA_DSI_PANEL_H */
diff --git a/include/video/omap-panel-picodlp.h b/include/video/omap-panel-picodlp.h
deleted file mode 100644
index 1c342ef6f3a1..000000000000
--- a/include/video/omap-panel-picodlp.h
+++ /dev/null
@@ -1,23 +0,0 @@
1/*
2 * panel data for picodlp panel
3 *
4 * Copyright (C) 2011 Texas Instruments
5 *
6 * Author: Mayuresh Janorkar <mayur@ti.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12#ifndef __PANEL_PICODLP_H
13#define __PANEL_PICODLP_H
14/**
15 * struct : picodlp panel data
16 * picodlp_adapter_id: i2c_adapter number for picodlp
17 */
18struct picodlp_panel_data {
19 int picodlp_adapter_id;
20 int emu_done_gpio;
21 int pwrgood_gpio;
22};
23#endif /* __PANEL_PICODLP_H */
diff --git a/include/video/omap-panel-tfp410.h b/include/video/omap-panel-tfp410.h
deleted file mode 100644
index aef35e48bc7e..000000000000
--- a/include/video/omap-panel-tfp410.h
+++ /dev/null
@@ -1,35 +0,0 @@
1/*
2 * Header for TFP410 chip driver
3 *
4 * Copyright (C) 2011 Texas Instruments Inc
5 * Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License version 2 as published by
9 * the Free Software Foundation.
10 *
11 * This program is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * more details.
15 *
16 * You should have received a copy of the GNU General Public License along with
17 * this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef __OMAP_PANEL_TFP410_H
21#define __OMAP_PANEL_TFP410_H
22
23struct omap_dss_device;
24
25/**
26 * struct tfp410_platform_data - panel driver configuration data
27 * @i2c_bus_num: i2c bus id for the panel
28 * @power_down_gpio: gpio number for PD pin (or -1 if not available)
29 */
30struct tfp410_platform_data {
31 int i2c_bus_num;
32 int power_down_gpio;
33};
34
35#endif /* __OMAP_PANEL_TFP410_H */