|
@@ -176,3 +176,127 @@ static struct clk vdec_clk = {
|
|
|
.pmc_mask = 1 << AT91SAM9G45_ID_VDEC,
|
|
|
.type = CLK_TYPE_PERIPHERAL,
|
|
|
};
|
|
|
+
|
|
|
+static struct clk adc_op_clk = {
|
|
|
+ .name = "adc_op_clk",
|
|
|
+ .type = CLK_TYPE_PERIPHERAL,
|
|
|
+ .rate_hz = 13200000,
|
|
|
+};
|
|
|
+
|
|
|
+/* AES/TDES/SHA clock - Only for sam9m11/sam9g56 */
|
|
|
+static struct clk aestdessha_clk = {
|
|
|
+ .name = "aestdessha_clk",
|
|
|
+ .pmc_mask = 1 << AT91SAM9G45_ID_AESTDESSHA,
|
|
|
+ .type = CLK_TYPE_PERIPHERAL,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk *periph_clocks[] __initdata = {
|
|
|
+ &pioA_clk,
|
|
|
+ &pioB_clk,
|
|
|
+ &pioC_clk,
|
|
|
+ &pioDE_clk,
|
|
|
+ &trng_clk,
|
|
|
+ &usart0_clk,
|
|
|
+ &usart1_clk,
|
|
|
+ &usart2_clk,
|
|
|
+ &usart3_clk,
|
|
|
+ &mmc0_clk,
|
|
|
+ &twi0_clk,
|
|
|
+ &twi1_clk,
|
|
|
+ &spi0_clk,
|
|
|
+ &spi1_clk,
|
|
|
+ &ssc0_clk,
|
|
|
+ &ssc1_clk,
|
|
|
+ &tcb0_clk,
|
|
|
+ &pwm_clk,
|
|
|
+ &tsc_clk,
|
|
|
+ &dma_clk,
|
|
|
+ &uhphs_clk,
|
|
|
+ &lcdc_clk,
|
|
|
+ &ac97_clk,
|
|
|
+ &macb_clk,
|
|
|
+ &isi_clk,
|
|
|
+ &udphs_clk,
|
|
|
+ &mmc1_clk,
|
|
|
+ &adc_op_clk,
|
|
|
+ &aestdessha_clk,
|
|
|
+ // irq0
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk_lookup periph_clocks_lookups[] = {
|
|
|
+ /* One additional fake clock for macb_hclk */
|
|
|
+ CLKDEV_CON_ID("hclk", &macb_clk),
|
|
|
+ /* One additional fake clock for ohci */
|
|
|
+ CLKDEV_CON_ID("ohci_clk", &uhphs_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("ehci_clk", "atmel-ehci", &uhphs_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("hclk", "atmel_usba_udc", &utmi_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("pclk", "atmel_usba_udc", &udphs_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("mci_clk", "atmel_mci.0", &mmc0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("mci_clk", "atmel_mci.1", &mmc1_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tcb0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.1", &tcb0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9g10.0", &twi0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9g10.1", &twi1_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("pclk", "at91sam9g45_ssc.0", &ssc0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("pclk", "at91sam9g45_ssc.1", &ssc1_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("pclk", "fff9c000.ssc", &ssc0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("pclk", "fffa0000.ssc", &ssc1_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "atmel-trng", &trng_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "atmel_sha", &aestdessha_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "atmel_tdes", &aestdessha_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "atmel_aes", &aestdessha_clk),
|
|
|
+ /* more usart lookup table for DT entries */
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "ffffee00.serial", &mck),
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "fff8c000.serial", &usart0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "fff90000.serial", &usart1_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "fff94000.serial", &usart2_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "fff98000.serial", &usart3_clk),
|
|
|
+ /* more tc lookup table for DT entries */
|
|
|
+ CLKDEV_CON_DEV_ID("t0_clk", "fff7c000.timer", &tcb0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("t0_clk", "fffd4000.timer", &tcb0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("hclk", "700000.ohci", &uhphs_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("ehci_clk", "800000.ehci", &uhphs_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("mci_clk", "fff80000.mmc", &mmc0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("mci_clk", "fffd0000.mmc", &mmc1_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "fff84000.i2c", &twi0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi1_clk),
|
|
|
+ /* fake hclk clock */
|
|
|
+ CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &uhphs_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "fffff200.gpio", &pioA_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioB_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioC_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioDE_clk),
|
|
|
+ CLKDEV_CON_DEV_ID(NULL, "fffffa00.gpio", &pioDE_clk),
|
|
|
+
|
|
|
+ CLKDEV_CON_ID("pioA", &pioA_clk),
|
|
|
+ CLKDEV_CON_ID("pioB", &pioB_clk),
|
|
|
+ CLKDEV_CON_ID("pioC", &pioC_clk),
|
|
|
+ CLKDEV_CON_ID("pioD", &pioDE_clk),
|
|
|
+ CLKDEV_CON_ID("pioE", &pioDE_clk),
|
|
|
+ /* Fake adc clock */
|
|
|
+ CLKDEV_CON_ID("adc_clk", &tsc_clk),
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk_lookup usart_clocks_lookups[] = {
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "atmel_usart.0", &mck),
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "atmel_usart.1", &usart0_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "atmel_usart.2", &usart1_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "atmel_usart.3", &usart2_clk),
|
|
|
+ CLKDEV_CON_DEV_ID("usart", "atmel_usart.4", &usart3_clk),
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * The two programmable clocks.
|
|
|
+ * You must configure pin multiplexing to bring these signals out.
|
|
|
+ */
|
|
|
+static struct clk pck0 = {
|
|
|
+ .name = "pck0",
|
|
|
+ .pmc_mask = AT91_PMC_PCK0,
|
|
|
+ .type = CLK_TYPE_PROGRAMMABLE,
|
|
|
+ .id = 0,
|
|
|
+};
|
|
|
+static struct clk pck1 = {
|
|
|
+ .name = "pck1",
|
|
|
+ .pmc_mask = AT91_PMC_PCK1,
|