| 
					
				 | 
			
			
				@@ -0,0 +1,132 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * arch/arm/mach-at91/at91sam9263.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *  Copyright (C) 2007 Atmel Corporation. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * This program is free software; you can redistribute it and/or modify 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * it under the terms of the GNU General Public License as published by 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * the Free Software Foundation; either version 2 of the License, or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * (at your option) any later version. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <linux/module.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/proc-fns.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/irq.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/mach/arch.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/mach/map.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <asm/system_misc.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <mach/at91sam9263.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <mach/at91_pmc.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "at91_aic.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "at91_rstc.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "soc.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "generic.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "clock.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "sam9_smc.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* -------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *  Clocks 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * -------------------------------------------------------------------- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * The peripheral clocks. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk pioA_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "pioA_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_PIOA, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk pioB_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "pioB_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_PIOB, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk pioCDE_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "pioCDE_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_PIOCDE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk usart0_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "usart0_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_US0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk usart1_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "usart1_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_US1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk usart2_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "usart2_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_US2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk mmc0_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "mci0_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_MCI0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk mmc1_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "mci1_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_MCI1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk can_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "can_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_CAN, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk twi_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "twi_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_TWI, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk spi0_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "spi0_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_SPI0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk spi1_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "spi1_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_SPI1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk ssc0_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "ssc0_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_SSC0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk ssc1_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "ssc1_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_SSC1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk ac97_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "ac97_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_AC97C, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk tcb_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "tcb_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_TCB, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk pwm_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "pwm_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_PWMC, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk macb_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "pclk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_EMAC, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk dma_clk = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.name		= "dma_clk", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.pmc_mask	= 1 << AT91SAM9263_ID_DMA, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.type		= CLK_TYPE_PERIPHERAL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static struct clk twodge_clk = { 
			 |