diff options
Diffstat (limited to 'arch/arm/mach-omap1/board-osk.c')
| -rw-r--r-- | arch/arm/mach-omap1/board-osk.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index a61bf455ee02..5db182da322b 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | #include <linux/kernel.h> | 29 | #include <linux/kernel.h> |
| 30 | #include <linux/init.h> | 30 | #include <linux/init.h> |
| 31 | #include <linux/platform_device.h> | 31 | #include <linux/platform_device.h> |
| 32 | #include <linux/interrupt.h> | ||
| 32 | #include <linux/irq.h> | 33 | #include <linux/irq.h> |
| 33 | #include <linux/interrupt.h> | 34 | #include <linux/interrupt.h> |
| 34 | #include <linux/i2c.h> | 35 | #include <linux/i2c.h> |
| @@ -308,6 +309,18 @@ static struct platform_device osk5912_kp_device = { | |||
| 308 | .resource = osk5912_kp_resources, | 309 | .resource = osk5912_kp_resources, |
| 309 | }; | 310 | }; |
| 310 | 311 | ||
| 312 | static struct omap_backlight_config mistral_bl_data = { | ||
| 313 | .default_intensity = 0xa0, | ||
| 314 | }; | ||
| 315 | |||
| 316 | static struct platform_device mistral_bl_device = { | ||
| 317 | .name = "omap-bl", | ||
| 318 | .id = -1, | ||
| 319 | .dev = { | ||
| 320 | .platform_data = &mistral_bl_data, | ||
| 321 | }, | ||
| 322 | }; | ||
| 323 | |||
| 311 | static struct platform_device osk5912_lcd_device = { | 324 | static struct platform_device osk5912_lcd_device = { |
| 312 | .name = "lcd_osk", | 325 | .name = "lcd_osk", |
| 313 | .id = -1, | 326 | .id = -1, |
| @@ -315,6 +328,7 @@ static struct platform_device osk5912_lcd_device = { | |||
| 315 | 328 | ||
| 316 | static struct platform_device *mistral_devices[] __initdata = { | 329 | static struct platform_device *mistral_devices[] __initdata = { |
| 317 | &osk5912_kp_device, | 330 | &osk5912_kp_device, |
| 331 | &mistral_bl_device, | ||
| 318 | &osk5912_lcd_device, | 332 | &osk5912_lcd_device, |
| 319 | }; | 333 | }; |
| 320 | 334 | ||
| @@ -358,6 +372,38 @@ static void __init osk_mistral_init(void) | |||
| 358 | * can't talk to the ads or even the i2c eeprom. | 372 | * can't talk to the ads or even the i2c eeprom. |
| 359 | */ | 373 | */ |
| 360 | 374 | ||
| 375 | /* parallel camera interface */ | ||
| 376 | omap_cfg_reg(J15_1610_CAM_LCLK); | ||
| 377 | omap_cfg_reg(J18_1610_CAM_D7); | ||
| 378 | omap_cfg_reg(J19_1610_CAM_D6); | ||
| 379 | omap_cfg_reg(J14_1610_CAM_D5); | ||
| 380 | omap_cfg_reg(K18_1610_CAM_D4); | ||
| 381 | omap_cfg_reg(K19_1610_CAM_D3); | ||
| 382 | omap_cfg_reg(K15_1610_CAM_D2); | ||
| 383 | omap_cfg_reg(K14_1610_CAM_D1); | ||
| 384 | omap_cfg_reg(L19_1610_CAM_D0); | ||
| 385 | omap_cfg_reg(L18_1610_CAM_VS); | ||
| 386 | omap_cfg_reg(L15_1610_CAM_HS); | ||
| 387 | omap_cfg_reg(M19_1610_CAM_RSTZ); | ||
| 388 | omap_cfg_reg(Y15_1610_CAM_OUTCLK); | ||
| 389 | |||
| 390 | /* serial camera interface */ | ||
| 391 | omap_cfg_reg(H19_1610_CAM_EXCLK); | ||
| 392 | omap_cfg_reg(W13_1610_CCP_CLKM); | ||
| 393 | omap_cfg_reg(Y12_1610_CCP_CLKP); | ||
| 394 | /* CCP_DATAM CONFLICTS WITH UART1.TX (and serial console) */ | ||
| 395 | // omap_cfg_reg(Y14_1610_CCP_DATAM); | ||
| 396 | omap_cfg_reg(W14_1610_CCP_DATAP); | ||
| 397 | |||
| 398 | /* CAM_PWDN */ | ||
| 399 | if (omap_request_gpio(11) == 0) { | ||
| 400 | omap_cfg_reg(N20_1610_GPIO11); | ||
| 401 | omap_set_gpio_direction(11, 0 /* out */); | ||
| 402 | omap_set_gpio_dataout(11, 0 /* off */); | ||
| 403 | } else | ||
| 404 | pr_debug("OSK+Mistral: CAM_PWDN is awol\n"); | ||
| 405 | |||
| 406 | |||
| 361 | // omap_cfg_reg(P19_1610_GPIO6); // BUSY | 407 | // omap_cfg_reg(P19_1610_GPIO6); // BUSY |
| 362 | omap_cfg_reg(P20_1610_GPIO4); // PENIRQ | 408 | omap_cfg_reg(P20_1610_GPIO4); // PENIRQ |
| 363 | set_irq_type(OMAP_GPIO_IRQ(4), IRQT_FALLING); | 409 | set_irq_type(OMAP_GPIO_IRQ(4), IRQT_FALLING); |
| @@ -388,6 +434,15 @@ static void __init osk_mistral_init(void) | |||
| 388 | } else | 434 | } else |
| 389 | printk(KERN_ERR "OSK+Mistral: wakeup button is awol\n"); | 435 | printk(KERN_ERR "OSK+Mistral: wakeup button is awol\n"); |
| 390 | 436 | ||
| 437 | /* LCD: backlight, and power; power controls other devices on the | ||
| 438 | * board, like the touchscreen, EEPROM, and wakeup (!) switch. | ||
| 439 | */ | ||
| 440 | omap_cfg_reg(PWL); | ||
| 441 | if (omap_request_gpio(2) == 0) { | ||
| 442 | omap_set_gpio_direction(2, 0 /* out */); | ||
| 443 | omap_set_gpio_dataout(2, 1 /* on */); | ||
| 444 | } | ||
| 445 | |||
| 391 | platform_add_devices(mistral_devices, ARRAY_SIZE(mistral_devices)); | 446 | platform_add_devices(mistral_devices, ARRAY_SIZE(mistral_devices)); |
| 392 | } | 447 | } |
| 393 | #else | 448 | #else |
