1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun * Copyright (C) 2014 Atmel
3*4882a593Smuzhiyun * Bo Shen <voice.shen@atmel.com>
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+
6*4882a593Smuzhiyun */
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun #include <common.h>
9*4882a593Smuzhiyun #include <asm/io.h>
10*4882a593Smuzhiyun #include <asm/arch/at91_common.h>
11*4882a593Smuzhiyun #include <asm/arch/at91_rstc.h>
12*4882a593Smuzhiyun #include <asm/arch/atmel_mpddrc.h>
13*4882a593Smuzhiyun #include <asm/arch/gpio.h>
14*4882a593Smuzhiyun #include <asm/arch/clk.h>
15*4882a593Smuzhiyun #include <asm/arch/sama5d3_smc.h>
16*4882a593Smuzhiyun #include <asm/arch/sama5d4.h>
17*4882a593Smuzhiyun #include <atmel_hlcdc.h>
18*4882a593Smuzhiyun #include <debug_uart.h>
19*4882a593Smuzhiyun #include <lcd.h>
20*4882a593Smuzhiyun #include <nand.h>
21*4882a593Smuzhiyun #include <version.h>
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun DECLARE_GLOBAL_DATA_PTR;
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun #ifdef CONFIG_NAND_ATMEL
sama5d4ek_nand_hw_init(void)26*4882a593Smuzhiyun static void sama5d4ek_nand_hw_init(void)
27*4882a593Smuzhiyun {
28*4882a593Smuzhiyun struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun at91_periph_clk_enable(ATMEL_ID_SMC);
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun /* Configure SMC CS3 for NAND */
33*4882a593Smuzhiyun writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(1) |
34*4882a593Smuzhiyun AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(1),
35*4882a593Smuzhiyun &smc->cs[3].setup);
36*4882a593Smuzhiyun writel(AT91_SMC_PULSE_NWE(2) | AT91_SMC_PULSE_NCS_WR(3) |
37*4882a593Smuzhiyun AT91_SMC_PULSE_NRD(2) | AT91_SMC_PULSE_NCS_RD(3),
38*4882a593Smuzhiyun &smc->cs[3].pulse);
39*4882a593Smuzhiyun writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
40*4882a593Smuzhiyun &smc->cs[3].cycle);
41*4882a593Smuzhiyun writel(AT91_SMC_TIMINGS_TCLR(2) | AT91_SMC_TIMINGS_TADL(7) |
42*4882a593Smuzhiyun AT91_SMC_TIMINGS_TAR(2) | AT91_SMC_TIMINGS_TRR(3) |
43*4882a593Smuzhiyun AT91_SMC_TIMINGS_TWB(7) | AT91_SMC_TIMINGS_RBNSEL(3)|
44*4882a593Smuzhiyun AT91_SMC_TIMINGS_NFSEL(1), &smc->cs[3].timings);
45*4882a593Smuzhiyun writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
46*4882a593Smuzhiyun AT91_SMC_MODE_EXNW_DISABLE |
47*4882a593Smuzhiyun AT91_SMC_MODE_DBW_8 |
48*4882a593Smuzhiyun AT91_SMC_MODE_TDF_CYCLE(3),
49*4882a593Smuzhiyun &smc->cs[3].mode);
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 5, 0); /* D0 */
52*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 6, 0); /* D1 */
53*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 7, 0); /* D2 */
54*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 8, 0); /* D3 */
55*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 9, 0); /* D4 */
56*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 10, 0); /* D5 */
57*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 11, 0); /* D6 */
58*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 12, 0); /* D7 */
59*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 13, 0); /* RE */
60*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 14, 0); /* WE */
61*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 15, 1); /* NCS */
62*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 16, 1); /* RDY */
63*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 17, 1); /* ALE */
64*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTC, 18, 1); /* CLE */
65*4882a593Smuzhiyun }
66*4882a593Smuzhiyun #endif
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun #ifdef CONFIG_CMD_USB
sama5d4ek_usb_hw_init(void)69*4882a593Smuzhiyun static void sama5d4ek_usb_hw_init(void)
70*4882a593Smuzhiyun {
71*4882a593Smuzhiyun at91_set_pio_output(AT91_PIO_PORTE, 11, 0);
72*4882a593Smuzhiyun at91_set_pio_output(AT91_PIO_PORTE, 12, 0);
73*4882a593Smuzhiyun at91_set_pio_output(AT91_PIO_PORTE, 10, 0);
74*4882a593Smuzhiyun }
75*4882a593Smuzhiyun #endif
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun #ifdef CONFIG_LCD
78*4882a593Smuzhiyun vidinfo_t panel_info = {
79*4882a593Smuzhiyun .vl_col = 800,
80*4882a593Smuzhiyun .vl_row = 480,
81*4882a593Smuzhiyun .vl_clk = 33260000,
82*4882a593Smuzhiyun .vl_bpix = LCD_BPP,
83*4882a593Smuzhiyun .vl_tft = 1,
84*4882a593Smuzhiyun .vl_hsync_len = 5,
85*4882a593Smuzhiyun .vl_left_margin = 128,
86*4882a593Smuzhiyun .vl_right_margin = 0,
87*4882a593Smuzhiyun .vl_vsync_len = 5,
88*4882a593Smuzhiyun .vl_upper_margin = 23,
89*4882a593Smuzhiyun .vl_lower_margin = 22,
90*4882a593Smuzhiyun .mmio = ATMEL_BASE_LCDC,
91*4882a593Smuzhiyun };
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun /* No power up/down pin for the LCD pannel */
lcd_enable(void)94*4882a593Smuzhiyun void lcd_enable(void) { /* Empty! */ }
lcd_disable(void)95*4882a593Smuzhiyun void lcd_disable(void) { /* Empty! */ }
96*4882a593Smuzhiyun
has_lcdc(void)97*4882a593Smuzhiyun unsigned int has_lcdc(void)
98*4882a593Smuzhiyun {
99*4882a593Smuzhiyun return 1;
100*4882a593Smuzhiyun }
101*4882a593Smuzhiyun
sama5d4ek_lcd_hw_init(void)102*4882a593Smuzhiyun static void sama5d4ek_lcd_hw_init(void)
103*4882a593Smuzhiyun {
104*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 24, 0); /* LCDPWM */
105*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 25, 0); /* LCDDISP */
106*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 26, 0); /* LCDVSYNC */
107*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 27, 0); /* LCDHSYNC */
108*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 28, 0); /* LCDDOTCK */
109*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 29, 0); /* LCDDEN */
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 2, 0); /* LCDD2 */
112*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 3, 0); /* LCDD3 */
113*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 4, 0); /* LCDD4 */
114*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 5, 0); /* LCDD5 */
115*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 6, 0); /* LCDD6 */
116*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 7, 0); /* LCDD7 */
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 10, 0); /* LCDD10 */
119*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 11, 0); /* LCDD11 */
120*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 12, 0); /* LCDD12 */
121*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 13, 0); /* LCDD13 */
122*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 14, 0); /* LCDD14 */
123*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 15, 0); /* LCDD15 */
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 18, 0); /* LCDD18 */
126*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 19, 0); /* LCDD19 */
127*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 20, 0); /* LCDD20 */
128*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 21, 0); /* LCDD21 */
129*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 22, 0); /* LCDD22 */
130*4882a593Smuzhiyun at91_pio3_set_a_periph(AT91_PIO_PORTA, 23, 0); /* LCDD23 */
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun /* Enable clock */
133*4882a593Smuzhiyun at91_periph_clk_enable(ATMEL_ID_LCDC);
134*4882a593Smuzhiyun }
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun #ifdef CONFIG_LCD_INFO
lcd_show_board_info(void)137*4882a593Smuzhiyun void lcd_show_board_info(void)
138*4882a593Smuzhiyun {
139*4882a593Smuzhiyun ulong dram_size, nand_size;
140*4882a593Smuzhiyun int i;
141*4882a593Smuzhiyun char temp[32];
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun lcd_printf("%s\n", U_BOOT_VERSION);
144*4882a593Smuzhiyun lcd_printf("2014 ATMEL Corp\n");
145*4882a593Smuzhiyun lcd_printf("at91@atmel.com\n");
146*4882a593Smuzhiyun lcd_printf("%s CPU at %s MHz\n", get_cpu_name(),
147*4882a593Smuzhiyun strmhz(temp, get_cpu_clk_rate()));
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun dram_size = 0;
150*4882a593Smuzhiyun for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
151*4882a593Smuzhiyun dram_size += gd->bd->bi_dram[i].size;
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun nand_size = 0;
154*4882a593Smuzhiyun #ifdef CONFIG_NAND_ATMEL
155*4882a593Smuzhiyun for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
156*4882a593Smuzhiyun nand_size += get_nand_dev_by_index(i)->size;
157*4882a593Smuzhiyun #endif
158*4882a593Smuzhiyun lcd_printf("%ld MB SDRAM, %ld MB NAND\n",
159*4882a593Smuzhiyun dram_size >> 20, nand_size >> 20);
160*4882a593Smuzhiyun }
161*4882a593Smuzhiyun #endif /* CONFIG_LCD_INFO */
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun #endif /* CONFIG_LCD */
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun #ifdef CONFIG_DEBUG_UART_BOARD_INIT
sama5d4ek_serial3_hw_init(void)166*4882a593Smuzhiyun static void sama5d4ek_serial3_hw_init(void)
167*4882a593Smuzhiyun {
168*4882a593Smuzhiyun at91_pio3_set_b_periph(AT91_PIO_PORTE, 17, 1); /* TXD3 */
169*4882a593Smuzhiyun at91_pio3_set_b_periph(AT91_PIO_PORTE, 16, 0); /* RXD3 */
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun /* Enable clock */
172*4882a593Smuzhiyun at91_periph_clk_enable(ATMEL_ID_USART3);
173*4882a593Smuzhiyun }
174*4882a593Smuzhiyun
board_debug_uart_init(void)175*4882a593Smuzhiyun void board_debug_uart_init(void)
176*4882a593Smuzhiyun {
177*4882a593Smuzhiyun sama5d4ek_serial3_hw_init();
178*4882a593Smuzhiyun }
179*4882a593Smuzhiyun #endif
180*4882a593Smuzhiyun
181*4882a593Smuzhiyun #ifdef CONFIG_BOARD_EARLY_INIT_F
board_early_init_f(void)182*4882a593Smuzhiyun int board_early_init_f(void)
183*4882a593Smuzhiyun {
184*4882a593Smuzhiyun #ifdef CONFIG_DEBUG_UART
185*4882a593Smuzhiyun debug_uart_init();
186*4882a593Smuzhiyun #endif
187*4882a593Smuzhiyun return 0;
188*4882a593Smuzhiyun }
189*4882a593Smuzhiyun #endif
190*4882a593Smuzhiyun
board_init(void)191*4882a593Smuzhiyun int board_init(void)
192*4882a593Smuzhiyun {
193*4882a593Smuzhiyun /* adress of boot parameters */
194*4882a593Smuzhiyun gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun #ifdef CONFIG_NAND_ATMEL
197*4882a593Smuzhiyun sama5d4ek_nand_hw_init();
198*4882a593Smuzhiyun #endif
199*4882a593Smuzhiyun #ifdef CONFIG_LCD
200*4882a593Smuzhiyun sama5d4ek_lcd_hw_init();
201*4882a593Smuzhiyun #endif
202*4882a593Smuzhiyun #ifdef CONFIG_CMD_USB
203*4882a593Smuzhiyun sama5d4ek_usb_hw_init();
204*4882a593Smuzhiyun #endif
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun return 0;
207*4882a593Smuzhiyun }
208*4882a593Smuzhiyun
dram_init(void)209*4882a593Smuzhiyun int dram_init(void)
210*4882a593Smuzhiyun {
211*4882a593Smuzhiyun gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
212*4882a593Smuzhiyun CONFIG_SYS_SDRAM_SIZE);
213*4882a593Smuzhiyun return 0;
214*4882a593Smuzhiyun }
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun /* SPL */
217*4882a593Smuzhiyun #ifdef CONFIG_SPL_BUILD
spl_board_init(void)218*4882a593Smuzhiyun void spl_board_init(void)
219*4882a593Smuzhiyun {
220*4882a593Smuzhiyun #if CONFIG_SYS_USE_NANDFLASH
221*4882a593Smuzhiyun sama5d4ek_nand_hw_init();
222*4882a593Smuzhiyun #endif
223*4882a593Smuzhiyun }
224*4882a593Smuzhiyun
ddr2_conf(struct atmel_mpddrc_config * ddr2)225*4882a593Smuzhiyun static void ddr2_conf(struct atmel_mpddrc_config *ddr2)
226*4882a593Smuzhiyun {
227*4882a593Smuzhiyun ddr2->md = (ATMEL_MPDDRC_MD_DBW_32_BITS | ATMEL_MPDDRC_MD_DDR2_SDRAM);
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun ddr2->cr = (ATMEL_MPDDRC_CR_NC_COL_10 |
230*4882a593Smuzhiyun ATMEL_MPDDRC_CR_NR_ROW_14 |
231*4882a593Smuzhiyun ATMEL_MPDDRC_CR_CAS_DDR_CAS3 |
232*4882a593Smuzhiyun ATMEL_MPDDRC_CR_NB_8BANKS |
233*4882a593Smuzhiyun ATMEL_MPDDRC_CR_DECOD_INTERLEAVED |
234*4882a593Smuzhiyun ATMEL_MPDDRC_CR_UNAL_SUPPORTED);
235*4882a593Smuzhiyun
236*4882a593Smuzhiyun ddr2->rtr = 0x2b0;
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun ddr2->tpr0 = (8 << ATMEL_MPDDRC_TPR0_TRAS_OFFSET |
239*4882a593Smuzhiyun 3 << ATMEL_MPDDRC_TPR0_TRCD_OFFSET |
240*4882a593Smuzhiyun 3 << ATMEL_MPDDRC_TPR0_TWR_OFFSET |
241*4882a593Smuzhiyun 10 << ATMEL_MPDDRC_TPR0_TRC_OFFSET |
242*4882a593Smuzhiyun 3 << ATMEL_MPDDRC_TPR0_TRP_OFFSET |
243*4882a593Smuzhiyun 2 << ATMEL_MPDDRC_TPR0_TRRD_OFFSET |
244*4882a593Smuzhiyun 2 << ATMEL_MPDDRC_TPR0_TWTR_OFFSET |
245*4882a593Smuzhiyun 2 << ATMEL_MPDDRC_TPR0_TMRD_OFFSET);
246*4882a593Smuzhiyun
247*4882a593Smuzhiyun ddr2->tpr1 = (2 << ATMEL_MPDDRC_TPR1_TXP_OFFSET |
248*4882a593Smuzhiyun 200 << ATMEL_MPDDRC_TPR1_TXSRD_OFFSET |
249*4882a593Smuzhiyun 25 << ATMEL_MPDDRC_TPR1_TXSNR_OFFSET |
250*4882a593Smuzhiyun 23 << ATMEL_MPDDRC_TPR1_TRFC_OFFSET);
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun ddr2->tpr2 = (7 << ATMEL_MPDDRC_TPR2_TFAW_OFFSET |
253*4882a593Smuzhiyun 2 << ATMEL_MPDDRC_TPR2_TRTP_OFFSET |
254*4882a593Smuzhiyun 3 << ATMEL_MPDDRC_TPR2_TRPA_OFFSET |
255*4882a593Smuzhiyun 2 << ATMEL_MPDDRC_TPR2_TXARDS_OFFSET |
256*4882a593Smuzhiyun 8 << ATMEL_MPDDRC_TPR2_TXARD_OFFSET);
257*4882a593Smuzhiyun }
258*4882a593Smuzhiyun
mem_init(void)259*4882a593Smuzhiyun void mem_init(void)
260*4882a593Smuzhiyun {
261*4882a593Smuzhiyun struct atmel_mpddrc_config ddr2;
262*4882a593Smuzhiyun const struct atmel_mpddr *mpddr = (struct atmel_mpddr *)ATMEL_BASE_MPDDRC;
263*4882a593Smuzhiyun u32 tmp;
264*4882a593Smuzhiyun
265*4882a593Smuzhiyun ddr2_conf(&ddr2);
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun /* Enable MPDDR clock */
268*4882a593Smuzhiyun at91_periph_clk_enable(ATMEL_ID_MPDDRC);
269*4882a593Smuzhiyun at91_system_clk_enable(AT91_PMC_DDR);
270*4882a593Smuzhiyun
271*4882a593Smuzhiyun tmp = ATMEL_MPDDRC_RD_DATA_PATH_SHIFT_ONE_CYCLE;
272*4882a593Smuzhiyun writel(tmp, &mpddr->rd_data_path);
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun tmp = readl(&mpddr->io_calibr);
275*4882a593Smuzhiyun tmp = (tmp & ~(ATMEL_MPDDRC_IO_CALIBR_RDIV |
276*4882a593Smuzhiyun ATMEL_MPDDRC_IO_CALIBR_TZQIO |
277*4882a593Smuzhiyun ATMEL_MPDDRC_IO_CALIBR_CALCODEP |
278*4882a593Smuzhiyun ATMEL_MPDDRC_IO_CALIBR_CALCODEN)) |
279*4882a593Smuzhiyun ATMEL_MPDDRC_IO_CALIBR_DDR2_RZQ_52 |
280*4882a593Smuzhiyun ATMEL_MPDDRC_IO_CALIBR_TZQIO_(8) |
281*4882a593Smuzhiyun ATMEL_MPDDRC_IO_CALIBR_EN_CALIB;
282*4882a593Smuzhiyun writel(tmp, &mpddr->io_calibr);
283*4882a593Smuzhiyun
284*4882a593Smuzhiyun /* DDRAM2 Controller initialize */
285*4882a593Smuzhiyun ddr2_init(ATMEL_BASE_MPDDRC, ATMEL_BASE_DDRCS, &ddr2);
286*4882a593Smuzhiyun }
287*4882a593Smuzhiyun
at91_pmc_init(void)288*4882a593Smuzhiyun void at91_pmc_init(void)
289*4882a593Smuzhiyun {
290*4882a593Smuzhiyun u32 tmp;
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun tmp = AT91_PMC_PLLAR_29 |
293*4882a593Smuzhiyun AT91_PMC_PLLXR_PLLCOUNT(0x3f) |
294*4882a593Smuzhiyun AT91_PMC_PLLXR_MUL(87) |
295*4882a593Smuzhiyun AT91_PMC_PLLXR_DIV(1);
296*4882a593Smuzhiyun at91_plla_init(tmp);
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun at91_pllicpr_init(AT91_PMC_IPLL_PLLA(0x0));
299*4882a593Smuzhiyun
300*4882a593Smuzhiyun tmp = AT91_PMC_MCKR_H32MXDIV |
301*4882a593Smuzhiyun AT91_PMC_MCKR_PLLADIV_2 |
302*4882a593Smuzhiyun AT91_PMC_MCKR_MDIV_3 |
303*4882a593Smuzhiyun AT91_PMC_MCKR_CSS_PLLA;
304*4882a593Smuzhiyun at91_mck_init(tmp);
305*4882a593Smuzhiyun }
306*4882a593Smuzhiyun #endif
307