| 
					
				 | 
			
			
				@@ -509,3 +509,100 @@ static struct resource lcdc_resources[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	[1] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		.start	= NR_IRQS_LEGACY + AT91SAM9RL_ID_LCDC, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		.end	= NR_IRQS_LEGACY + AT91SAM9RL_ID_LCDC, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device at91_lcdc_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "atmel_lcdfb", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.id		= 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.dev		= { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.dma_mask		= &lcdc_dmamask, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.coherent_dma_mask	= DMA_BIT_MASK(32), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.platform_data		= &lcdc_data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.resource	= lcdc_resources, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.num_resources	= ARRAY_SIZE(lcdc_resources), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (!data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC1, 0);	/* LCDPWR */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_A_periph(AT91_PIN_PC5, 0);	/* LCDHSYNC */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_A_periph(AT91_PIN_PC6, 0);	/* LCDDOTCK */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_A_periph(AT91_PIN_PC7, 0);	/* LCDDEN */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_A_periph(AT91_PIN_PC3, 0);	/* LCDCC */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC9, 0);	/* LCDD3 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC10, 0);	/* LCDD4 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC11, 0);	/* LCDD5 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC12, 0);	/* LCDD6 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC13, 0);	/* LCDD7 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC15, 0);	/* LCDD11 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC16, 0);	/* LCDD12 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC17, 0);	/* LCDD13 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC18, 0);	/* LCDD14 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC19, 0);	/* LCDD15 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC20, 0);	/* LCDD18 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC21, 0);	/* LCDD19 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC22, 0);	/* LCDD20 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC23, 0);	/* LCDD21 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC24, 0);	/* LCDD22 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	at91_set_B_periph(AT91_PIN_PC25, 0);	/* LCDD23 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	lcdc_data = *data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	platform_device_register(&at91_lcdc_device); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* -------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *  Timer/Counter block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * -------------------------------------------------------------------- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef CONFIG_ATMEL_TCLIB 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct resource tcb_resources[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[0] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= AT91SAM9RL_BASE_TCB0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end	= AT91SAM9RL_BASE_TCB0 + SZ_16K - 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_MEM, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[1] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= NR_IRQS_LEGACY + AT91SAM9RL_ID_TC0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end	= NR_IRQS_LEGACY + AT91SAM9RL_ID_TC0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[2] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= NR_IRQS_LEGACY + AT91SAM9RL_ID_TC1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end	= NR_IRQS_LEGACY + AT91SAM9RL_ID_TC1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	[3] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.start	= NR_IRQS_LEGACY + AT91SAM9RL_ID_TC2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.end	= NR_IRQS_LEGACY + AT91SAM9RL_ID_TC2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.flags	= IORESOURCE_IRQ, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct platform_device at91sam9rl_tcb_device = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "atmel_tcb", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.id		= 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.resource	= tcb_resources, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.num_resources	= ARRAY_SIZE(tcb_resources), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static void __init at91_add_device_tc(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	platform_device_register(&at91sam9rl_tcb_device); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static void __init at91_add_device_tc(void) { } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |