]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/bf533-stamp/bf533-stamp.c
Merge branch 'master' of git://git.denx.de/u-boot-nand-flash
[karo-tx-uboot.git] / board / bf533-stamp / bf533-stamp.c
1 /*
2  * U-boot - main board file
3  *
4  * Copyright (c) 2005-2008 Analog Devices Inc.
5  *
6  * (C) Copyright 2000-2004
7  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
8  *
9  * See file CREDITS for list of people who contributed to this
10  * project.
11  *
12  * This program is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU General Public License as
14  * published by the Free Software Foundation; either version 2 of
15  * the License, or (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, write to the Free Software
24  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
25  * MA 02110-1301 USA
26  */
27
28 #include <common.h>
29 #include <netdev.h>
30 #include <asm/gpio.h>
31
32 DECLARE_GLOBAL_DATA_PTR;
33
34 int checkboard(void)
35 {
36         printf("Board: ADI BF533 Stamp board\n");
37         printf("       Support: http://blackfin.uclinux.org/\n");
38         return 0;
39 }
40
41 /* PF0 and PF1 are used to switch between the ethernet and flash:
42  *         PF0  PF1
43  *  flash:  0    0
44  *  ether:  1    0
45  */
46 void swap_to(int device_id)
47 {
48         gpio_request(GPIO_PF0, "eth_flash_swap");
49         gpio_request(GPIO_PF1, "eth_flash_swap");
50         gpio_direction_output(GPIO_PF0, device_id == ETHERNET);
51         gpio_direction_output(GPIO_PF1, 0);
52         SSYNC();
53 }
54
55 #if defined(CONFIG_MISC_INIT_R)
56 /* miscellaneous platform dependent initialisations */
57 int misc_init_r(void)
58 {
59 #ifdef CONFIG_STAMP_CF
60         cf_ide_init();
61 #endif
62
63         return 0;
64 }
65 #endif
66
67 #ifdef CONFIG_SHOW_BOOT_PROGRESS
68
69 #define STATUS_LED_OFF 0
70 #define STATUS_LED_ON  1
71
72 static int gpio_setup;
73
74 static void stamp_led_set(int LED1, int LED2, int LED3)
75 {
76         if (!gpio_setup) {
77                 gpio_request(GPIO_PF2, "boot_progress");
78                 gpio_request(GPIO_PF3, "boot_progress");
79                 gpio_request(GPIO_PF4, "boot_progress");
80                 gpio_direction_output(GPIO_PF2, LED1);
81                 gpio_direction_output(GPIO_PF3, LED2);
82                 gpio_direction_output(GPIO_PF4, LED3);
83                 gpio_setup = 1;
84         } else {
85                 gpio_set_value(GPIO_PF2, LED1);
86                 gpio_set_value(GPIO_PF3, LED2);
87                 gpio_set_value(GPIO_PF4, LED3);
88         }
89 }
90
91 void show_boot_progress(int status)
92 {
93         switch (status) {
94         case 1:
95                 stamp_led_set(STATUS_LED_OFF, STATUS_LED_OFF, STATUS_LED_ON);
96                 break;
97         case 2:
98                 stamp_led_set(STATUS_LED_OFF, STATUS_LED_ON, STATUS_LED_OFF);
99                 break;
100         case 3:
101                 stamp_led_set(STATUS_LED_OFF, STATUS_LED_ON, STATUS_LED_ON);
102                 break;
103         case 4:
104                 stamp_led_set(STATUS_LED_ON, STATUS_LED_OFF, STATUS_LED_OFF);
105                 break;
106         case 5:
107         case 6:
108                 stamp_led_set(STATUS_LED_ON, STATUS_LED_OFF, STATUS_LED_ON);
109                 break;
110         case 7:
111         case 8:
112                 stamp_led_set(STATUS_LED_ON, STATUS_LED_ON, STATUS_LED_OFF);
113                 break;
114         case 9:
115         case 10:
116         case 11:
117         case 12:
118         case 13:
119         case 14:
120         case 15:
121                 stamp_led_set(STATUS_LED_OFF, STATUS_LED_OFF, STATUS_LED_OFF);
122                 break;
123         default:
124                 stamp_led_set(STATUS_LED_ON, STATUS_LED_ON, STATUS_LED_ON);
125                 break;
126         }
127 }
128 #endif
129
130 #ifdef CONFIG_SMC91111
131 int board_eth_init(bd_t *bis)
132 {
133         return smc91111_initialize(0, CONFIG_SMC91111_BASE);
134 }
135 #endif