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 { |