xref: /rk3399_rockchip-uboot/board/xilinx/microblaze-generic/microblaze-generic.c (revision 52a822ed9c37a2ea0ed112a26d8ff5a6cb1c6f10)
1*52a822edSMichal Simek /*
2*52a822edSMichal Simek  * (C) Copyright 2007 Michal Simek
3*52a822edSMichal Simek  *
4*52a822edSMichal Simek  * Michal  SIMEK <monstr@monstr.eu>
5*52a822edSMichal Simek  *
6*52a822edSMichal Simek  * See file CREDITS for list of people who contributed to this
7*52a822edSMichal Simek  * project.
8*52a822edSMichal Simek  *
9*52a822edSMichal Simek  * This program is free software; you can redistribute it and/or
10*52a822edSMichal Simek  * modify it under the terms of the GNU General Public License as
11*52a822edSMichal Simek  * published by the Free Software Foundation; either version 2 of
12*52a822edSMichal Simek  * the License, or (at your option) any later version.
13*52a822edSMichal Simek  *
14*52a822edSMichal Simek  * This program is distributed in the hope that it will be useful,
15*52a822edSMichal Simek  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16*52a822edSMichal Simek  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
17*52a822edSMichal Simek  * GNU General Public License for more details.
18*52a822edSMichal Simek  *
19*52a822edSMichal Simek  * You should have received a copy of the GNU General Public License
20*52a822edSMichal Simek  * along with this program; if not, write to the Free Software
21*52a822edSMichal Simek  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
22*52a822edSMichal Simek  * MA 02111-1307 USA
23*52a822edSMichal Simek  */
24*52a822edSMichal Simek 
25*52a822edSMichal Simek /* This is a board specific file.  It's OK to include board specific
26*52a822edSMichal Simek  * header files */
27*52a822edSMichal Simek 
28*52a822edSMichal Simek #include <common.h>
29*52a822edSMichal Simek #include <config.h>
30*52a822edSMichal Simek #include <asm/microblaze_intc.h>
31*52a822edSMichal Simek #include <asm/asm.h>
32*52a822edSMichal Simek 
33*52a822edSMichal Simek void do_reset (void)
34*52a822edSMichal Simek {
35*52a822edSMichal Simek #ifdef CONFIG_SYS_GPIO_0
36*52a822edSMichal Simek 	*((unsigned long *)(CONFIG_SYS_GPIO_0_ADDR)) =
37*52a822edSMichal Simek 	    ++(*((unsigned long *)(CONFIG_SYS_GPIO_0_ADDR)));
38*52a822edSMichal Simek #endif
39*52a822edSMichal Simek #ifdef CONFIG_SYS_RESET_ADDRESS
40*52a822edSMichal Simek 	puts ("Reseting board\n");
41*52a822edSMichal Simek 	asm ("bra r0");
42*52a822edSMichal Simek #endif
43*52a822edSMichal Simek }
44*52a822edSMichal Simek 
45*52a822edSMichal Simek int gpio_init (void)
46*52a822edSMichal Simek {
47*52a822edSMichal Simek #ifdef CONFIG_SYS_GPIO_0
48*52a822edSMichal Simek 	*((unsigned long *)(CONFIG_SYS_GPIO_0_ADDR)) = 0xFFFFFFFF;
49*52a822edSMichal Simek #endif
50*52a822edSMichal Simek 	return 0;
51*52a822edSMichal Simek }
52*52a822edSMichal Simek 
53*52a822edSMichal Simek #ifdef CONFIG_SYS_FSL_2
54*52a822edSMichal Simek void fsl_isr2 (void *arg) {
55*52a822edSMichal Simek 	volatile int num;
56*52a822edSMichal Simek 	*((unsigned int *)(CONFIG_SYS_GPIO_0_ADDR + 0x4)) =
57*52a822edSMichal Simek 	    ++(*((unsigned int *)(CONFIG_SYS_GPIO_0_ADDR + 0x4)));
58*52a822edSMichal Simek 	GET (num, 2);
59*52a822edSMichal Simek 	NGET (num, 2);
60*52a822edSMichal Simek 	puts("*");
61*52a822edSMichal Simek }
62*52a822edSMichal Simek 
63*52a822edSMichal Simek void fsl_init2 (void) {
64*52a822edSMichal Simek 	puts("fsl_init2\n");
65*52a822edSMichal Simek 	install_interrupt_handler (FSL_INTR_2,\
66*52a822edSMichal Simek  fsl_isr2,\
67*52a822edSMichal Simek  NULL);
68*52a822edSMichal Simek }
69*52a822edSMichal Simek #endif
70