diff options
| author | David Brownell <dbrownell@users.sourceforge.net> | 2006-12-11 17:14:11 -0500 |
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2007-09-20 21:34:49 -0400 |
| commit | c72d8950baf737fe4da1982a8fad1f33fecdde2e (patch) | |
| tree | 948a96f7d44e40a364e3cd51af6b83bbfc3095d3 | |
| parent | 6017e29536f37045f0897c1afdc5500b21af8243 (diff) | |
ARM: OMAP: omap camera builds again; Mistral init and mux
Support the camera connector on the OSK Mistral add-on board:
- define muxing for both camera controllers
- mux both of them for Mistral
- teach ov9640 glue about mistral powerup/powerdown
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Tony Lindgren <tony@atomide.com>
| -rw-r--r-- | arch/arm/mach-omap1/board-osk.c | 32 | ||||
| -rw-r--r-- | arch/arm/mach-omap1/mux.c | 24 | ||||
| -rw-r--r-- | include/asm-arm/arch-omap/mux.h | 23 |
3 files changed, 79 insertions, 0 deletions
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index e7130293a03f..2bfa08870664 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
| @@ -342,6 +342,38 @@ static void __init osk_mistral_init(void) | |||
| 342 | * can't talk to the ads or even the i2c eeprom. | 342 | * can't talk to the ads or even the i2c eeprom. |
| 343 | */ | 343 | */ |
| 344 | 344 | ||
| 345 | /* parallel camera interface */ | ||
| 346 | omap_cfg_reg(J15_1610_CAM_LCLK); | ||
| 347 | omap_cfg_reg(J18_1610_CAM_D7); | ||
| 348 | omap_cfg_reg(J19_1610_CAM_D6); | ||
| 349 | omap_cfg_reg(J14_1610_CAM_D5); | ||
| 350 | omap_cfg_reg(K18_1610_CAM_D4); | ||
| 351 | omap_cfg_reg(K19_1610_CAM_D3); | ||
| 352 | omap_cfg_reg(K15_1610_CAM_D2); | ||
| 353 | omap_cfg_reg(K14_1610_CAM_D1); | ||
| 354 | omap_cfg_reg(L19_1610_CAM_D0); | ||
| 355 | omap_cfg_reg(L18_1610_CAM_VS); | ||
| 356 | omap_cfg_reg(L15_1610_CAM_HS); | ||
| 357 | omap_cfg_reg(M19_1610_CAM_RSTZ); | ||
| 358 | omap_cfg_reg(Y15_1610_CAM_OUTCLK); | ||
| 359 | |||
| 360 | /* serial camera interface */ | ||
| 361 | omap_cfg_reg(H19_1610_CAM_EXCLK); | ||
| 362 | omap_cfg_reg(W13_1610_CCP_CLKM); | ||
| 363 | omap_cfg_reg(Y12_1610_CCP_CLKP); | ||
| 364 | /* CCP_DATAM CONFLICTS WITH UART1.TX (and serial console) */ | ||
| 365 | // omap_cfg_reg(Y14_1610_CCP_DATAM); | ||
| 366 | omap_cfg_reg(W14_1610_CCP_DATAP); | ||
| 367 | |||
| 368 | /* CAM_PWDN */ | ||
| 369 | if (omap_request_gpio(11) == 0) { | ||
| 370 | omap_cfg_reg(N20_1610_GPIO11); | ||
| 371 | omap_set_gpio_direction(11, 0 /* out */); | ||
| 372 | omap_set_gpio_dataout(11, 0 /* off */); | ||
| 373 | } else | ||
| 374 | pr_debug("OSK+Mistral: CAM_PWDN is awol\n"); | ||
| 375 | |||
| 376 | |||
| 345 | // omap_cfg_reg(P19_1610_GPIO6); // BUSY | 377 | // omap_cfg_reg(P19_1610_GPIO6); // BUSY |
| 346 | omap_cfg_reg(P20_1610_GPIO4); // PENIRQ | 378 | omap_cfg_reg(P20_1610_GPIO4); // PENIRQ |
| 347 | set_irq_type(OMAP_GPIO_IRQ(4), IRQT_FALLING); | 379 | set_irq_type(OMAP_GPIO_IRQ(4), IRQT_FALLING); |
diff --git a/arch/arm/mach-omap1/mux.c b/arch/arm/mach-omap1/mux.c index 5432335bc493..52c70e5fcf65 100644 --- a/arch/arm/mach-omap1/mux.c +++ b/arch/arm/mach-omap1/mux.c | |||
| @@ -283,6 +283,30 @@ MUX_CFG("R11_1610_CF_IOIS16", B, 0, 3, 2, 16, 1, 2, 1, 1) | |||
| 283 | MUX_CFG("V10_1610_CF_IREQ", A, 24, 3, 2, 14, 0, 2, 0, 1) | 283 | MUX_CFG("V10_1610_CF_IREQ", A, 24, 3, 2, 14, 0, 2, 0, 1) |
| 284 | MUX_CFG("W10_1610_CF_RESET", A, 18, 3, 2, 12, 1, 2, 1, 1) | 284 | MUX_CFG("W10_1610_CF_RESET", A, 18, 3, 2, 12, 1, 2, 1, 1) |
| 285 | MUX_CFG("W11_1610_CF_CD1", 10, 15, 3, 3, 8, 1, 3, 1, 1) | 285 | MUX_CFG("W11_1610_CF_CD1", 10, 15, 3, 3, 8, 1, 3, 1, 1) |
| 286 | |||
| 287 | /* parallel camera */ | ||
| 288 | MUX_CFG("J15_1610_CAM_LCLK", 4, 24, 0, 0, 18, 1, 0, 0, 0) | ||
| 289 | MUX_CFG("J18_1610_CAM_D7", 4, 27, 0, 0, 19, 1, 0, 0, 0) | ||
| 290 | MUX_CFG("J19_1610_CAM_D6", 5, 0, 0, 0, 20, 1, 0, 0, 0) | ||
| 291 | MUX_CFG("J14_1610_CAM_D5", 5, 3, 0, 0, 21, 1, 0, 0, 0) | ||
| 292 | MUX_CFG("K18_1610_CAM_D4", 5, 6, 0, 0, 22, 1, 0, 0, 0) | ||
| 293 | MUX_CFG("K19_1610_CAM_D3", 5, 9, 0, 0, 23, 1, 0, 0, 0) | ||
| 294 | MUX_CFG("K15_1610_CAM_D2", 5, 12, 0, 0, 24, 1, 0, 0, 0) | ||
| 295 | MUX_CFG("K14_1610_CAM_D1", 5, 15, 0, 0, 25, 1, 0, 0, 0) | ||
| 296 | MUX_CFG("L19_1610_CAM_D0", 5, 18, 0, 0, 26, 1, 0, 0, 0) | ||
| 297 | MUX_CFG("L18_1610_CAM_VS", 5, 21, 0, 0, 27, 1, 0, 0, 0) | ||
| 298 | MUX_CFG("L15_1610_CAM_HS", 5, 24, 0, 0, 28, 1, 0, 0, 0) | ||
| 299 | MUX_CFG("M19_1610_CAM_RSTZ", 5, 27, 0, 0, 29, 0, 0, 0, 0) | ||
| 300 | MUX_CFG("Y15_1610_CAM_OUTCLK", A, 0, 6, 2, 6, 0, 2, 0, 0) | ||
| 301 | |||
| 302 | /* serial camera */ | ||
| 303 | MUX_CFG("H19_1610_CAM_EXCLK", 4, 21, 0, 0, 17, 0, 0, 0, 0) | ||
| 304 | /* REVISIT 5912 spec sez CCP_* can't pullup or pulldown ... ? */ | ||
| 305 | MUX_CFG("Y12_1610_CCP_CLKP", 8, 18, 6, 1, 24, 1, 1, 0, 0) | ||
| 306 | MUX_CFG("W13_1610_CCP_CLKM", 9, 0, 6, 1, 28, 1, 1, 0, 0) | ||
| 307 | MUX_CFG("W14_1610_CCP_DATAP", 9, 24, 6, 2, 4, 1, 2, 0, 0) | ||
| 308 | MUX_CFG("Y14_1610_CCP_DATAM", 9, 21, 6, 2, 3, 1, 2, 0, 0) | ||
| 309 | |||
| 286 | }; | 310 | }; |
| 287 | #endif /* CONFIG_ARCH_OMAP15XX || CONFIG_ARCH_OMAP16XX */ | 311 | #endif /* CONFIG_ARCH_OMAP15XX || CONFIG_ARCH_OMAP16XX */ |
| 288 | 312 | ||
diff --git a/include/asm-arm/arch-omap/mux.h b/include/asm-arm/arch-omap/mux.h index f1ec2edd4040..b8fff50e6a87 100644 --- a/include/asm-arm/arch-omap/mux.h +++ b/include/asm-arm/arch-omap/mux.h | |||
| @@ -406,6 +406,29 @@ enum omap1xxx_index { | |||
| 406 | V10_1610_CF_IREQ, | 406 | V10_1610_CF_IREQ, |
| 407 | W10_1610_CF_RESET, | 407 | W10_1610_CF_RESET, |
| 408 | W11_1610_CF_CD1, | 408 | W11_1610_CF_CD1, |
| 409 | |||
| 410 | /* parallel camera */ | ||
| 411 | J15_1610_CAM_LCLK, | ||
| 412 | J18_1610_CAM_D7, | ||
| 413 | J19_1610_CAM_D6, | ||
| 414 | J14_1610_CAM_D5, | ||
| 415 | K18_1610_CAM_D4, | ||
| 416 | K19_1610_CAM_D3, | ||
| 417 | K15_1610_CAM_D2, | ||
| 418 | K14_1610_CAM_D1, | ||
| 419 | L19_1610_CAM_D0, | ||
| 420 | L18_1610_CAM_VS, | ||
| 421 | L15_1610_CAM_HS, | ||
| 422 | M19_1610_CAM_RSTZ, | ||
| 423 | Y15_1610_CAM_OUTCLK, | ||
| 424 | |||
| 425 | /* serial camera */ | ||
| 426 | H19_1610_CAM_EXCLK, | ||
| 427 | Y12_1610_CCP_CLKP, | ||
| 428 | W13_1610_CCP_CLKM, | ||
| 429 | W14_1610_CCP_DATAP, | ||
| 430 | Y14_1610_CCP_DATAM, | ||
| 431 | |||
| 409 | }; | 432 | }; |
| 410 | 433 | ||
| 411 | enum omap24xx_index { | 434 | enum omap24xx_index { |
