aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2006-12-11 17:14:11 -0500
committerTony Lindgren <tony@atomide.com>2007-09-20 21:34:49 -0400
commitc72d8950baf737fe4da1982a8fad1f33fecdde2e (patch)
tree948a96f7d44e40a364e3cd51af6b83bbfc3095d3
parent6017e29536f37045f0897c1afdc5500b21af8243 (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.c32
-rw-r--r--arch/arm/mach-omap1/mux.c24
-rw-r--r--include/asm-arm/arch-omap/mux.h23
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)
283MUX_CFG("V10_1610_CF_IREQ", A, 24, 3, 2, 14, 0, 2, 0, 1) 283MUX_CFG("V10_1610_CF_IREQ", A, 24, 3, 2, 14, 0, 2, 0, 1)
284MUX_CFG("W10_1610_CF_RESET", A, 18, 3, 2, 12, 1, 2, 1, 1) 284MUX_CFG("W10_1610_CF_RESET", A, 18, 3, 2, 12, 1, 2, 1, 1)
285MUX_CFG("W11_1610_CF_CD1", 10, 15, 3, 3, 8, 1, 3, 1, 1) 285MUX_CFG("W11_1610_CF_CD1", 10, 15, 3, 3, 8, 1, 3, 1, 1)
286
287/* parallel camera */
288MUX_CFG("J15_1610_CAM_LCLK", 4, 24, 0, 0, 18, 1, 0, 0, 0)
289MUX_CFG("J18_1610_CAM_D7", 4, 27, 0, 0, 19, 1, 0, 0, 0)
290MUX_CFG("J19_1610_CAM_D6", 5, 0, 0, 0, 20, 1, 0, 0, 0)
291MUX_CFG("J14_1610_CAM_D5", 5, 3, 0, 0, 21, 1, 0, 0, 0)
292MUX_CFG("K18_1610_CAM_D4", 5, 6, 0, 0, 22, 1, 0, 0, 0)
293MUX_CFG("K19_1610_CAM_D3", 5, 9, 0, 0, 23, 1, 0, 0, 0)
294MUX_CFG("K15_1610_CAM_D2", 5, 12, 0, 0, 24, 1, 0, 0, 0)
295MUX_CFG("K14_1610_CAM_D1", 5, 15, 0, 0, 25, 1, 0, 0, 0)
296MUX_CFG("L19_1610_CAM_D0", 5, 18, 0, 0, 26, 1, 0, 0, 0)
297MUX_CFG("L18_1610_CAM_VS", 5, 21, 0, 0, 27, 1, 0, 0, 0)
298MUX_CFG("L15_1610_CAM_HS", 5, 24, 0, 0, 28, 1, 0, 0, 0)
299MUX_CFG("M19_1610_CAM_RSTZ", 5, 27, 0, 0, 29, 0, 0, 0, 0)
300MUX_CFG("Y15_1610_CAM_OUTCLK", A, 0, 6, 2, 6, 0, 2, 0, 0)
301
302/* serial camera */
303MUX_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 ... ? */
305MUX_CFG("Y12_1610_CCP_CLKP", 8, 18, 6, 1, 24, 1, 1, 0, 0)
306MUX_CFG("W13_1610_CCP_CLKM", 9, 0, 6, 1, 28, 1, 1, 0, 0)
307MUX_CFG("W14_1610_CCP_DATAP", 9, 24, 6, 2, 4, 1, 2, 0, 0)
308MUX_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
411enum omap24xx_index { 434enum omap24xx_index {