[ARM] 4751/1: [AT91] ISI peripheral on SAM9263
authorAndrew Victor <linux@maxim.org.za>
Tue, 22 Jan 2008 10:43:26 +0000 (11:43 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 26 Jan 2008 15:00:31 +0000 (15:00 +0000)
Add support for the Image Sensor Interface (ISI) peripheral integrated
in the Atmel AT91SAM9263 processor.

Patch from MaLiK

Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-at91/at91sam9263_devices.c
include/asm-arm/arch-at91/board.h

index ac329a9..d50a8df 100644 (file)
@@ -731,6 +731,56 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
 #endif
 
 
+/* --------------------------------------------------------------------
+ *  Image Sensor Interface
+ * -------------------------------------------------------------------- */
+
+#if defined(CONFIG_VIDEO_AT91_ISI) || defined(CONFIG_VIDEO_AT91_ISI_MODULE)
+
+struct resource isi_resources[] = {
+       [0] = {
+               .start  = AT91SAM9263_BASE_ISI,
+               .end    = AT91SAM9263_BASE_ISI + SZ_16K - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = AT91SAM9263_ID_ISI,
+               .end    = AT91SAM9263_ID_ISI,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device at91sam9263_isi_device = {
+       .name           = "at91_isi",
+       .id             = -1,
+       .resource       = isi_resources,
+       .num_resources  = ARRAY_SIZE(isi_resources),
+};
+
+void __init at91_add_device_isi(void)
+{
+       at91_set_A_periph(AT91_PIN_PE0, 0);     /* ISI_D0 */
+       at91_set_A_periph(AT91_PIN_PE1, 0);     /* ISI_D1 */
+       at91_set_A_periph(AT91_PIN_PE2, 0);     /* ISI_D2 */
+       at91_set_A_periph(AT91_PIN_PE3, 0);     /* ISI_D3 */
+       at91_set_A_periph(AT91_PIN_PE4, 0);     /* ISI_D4 */
+       at91_set_A_periph(AT91_PIN_PE5, 0);     /* ISI_D5 */
+       at91_set_A_periph(AT91_PIN_PE6, 0);     /* ISI_D6 */
+       at91_set_A_periph(AT91_PIN_PE7, 0);     /* ISI_D7 */
+       at91_set_A_periph(AT91_PIN_PE8, 0);     /* ISI_PCK */
+       at91_set_A_periph(AT91_PIN_PE9, 0);     /* ISI_HSYNC */
+       at91_set_A_periph(AT91_PIN_PE10, 0);    /* ISI_VSYNC */
+       at91_set_B_periph(AT91_PIN_PE11, 0);    /* ISI_MCK (PCK3) */
+       at91_set_B_periph(AT91_PIN_PE12, 0);    /* ISI_PD8 */
+       at91_set_B_periph(AT91_PIN_PE13, 0);    /* ISI_PD9 */
+       at91_set_B_periph(AT91_PIN_PE14, 0);    /* ISI_PD10 */
+       at91_set_B_periph(AT91_PIN_PE15, 0);    /* ISI_PD11 */
+}
+#else
+void __init at91_add_device_isi(void) {}
+#endif
+
+
 /* --------------------------------------------------------------------
  *  LEDs
  * -------------------------------------------------------------------- */
index 7905496..762148c 100644 (file)
@@ -126,6 +126,9 @@ struct atmel_ac97_data {
 };
 extern void __init at91_add_device_ac97(struct atmel_ac97_data *data);
 
+ /* ISI */
+extern void __init at91_add_device_isi(void);
+
  /* LEDs */
 extern u8 at91_leds_cpu;
 extern u8 at91_leds_timer;