]>
Commit | Line | Data |
---|---|---|
6cb142fa | 1 | /* |
23fd959e | 2 | * U-boot - main board file |
6cb142fa | 3 | * |
23fd959e | 4 | * Copyright (c) 2005-2008 Analog Devices Inc. |
6cb142fa WD |
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 | |
155fd766 AL |
24 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, |
25 | * MA 02110-1301 USA | |
6cb142fa WD |
26 | */ |
27 | ||
28 | #include <common.h> | |
7194ab80 | 29 | #include <netdev.h> |
8440bb14 | 30 | #include <asm/io.h> |
3f0606ad | 31 | #include "bf533-stamp.h" |
d87080b7 | 32 | |
1218abf1 WD |
33 | DECLARE_GLOBAL_DATA_PTR; |
34 | ||
3f0606ad | 35 | int checkboard(void) |
6cb142fa | 36 | { |
3f0606ad AL |
37 | printf("Board: ADI BF533 Stamp board\n"); |
38 | printf(" Support: http://blackfin.uclinux.org/\n"); | |
6cb142fa WD |
39 | return 0; |
40 | } | |
41 | ||
1f75d6f0 MF |
42 | /* PF0 and PF1 are used to switch between the ethernet and flash: |
43 | * PF0 PF1 | |
44 | * flash: 0 0 | |
45 | * ether: 1 0 | |
46 | */ | |
3f0606ad | 47 | void swap_to(int device_id) |
6cb142fa | 48 | { |
1f75d6f0 MF |
49 | bfin_write_FIO_DIR(bfin_read_FIO_DIR() | PF1 | PF0); |
50 | SSYNC(); | |
51 | bfin_write_FIO_FLAG_C(PF1); | |
52 | if (device_id == ETHERNET) | |
53 | bfin_write_FIO_FLAG_S(PF0); | |
54 | else if (device_id == FLASH) | |
55 | bfin_write_FIO_FLAG_C(PF0); | |
56 | else | |
57 | printf("Unknown device to switch\n"); | |
58 | SSYNC(); | |
6cb142fa WD |
59 | } |
60 | ||
61 | #if defined(CONFIG_MISC_INIT_R) | |
62 | /* miscellaneous platform dependent initialisations */ | |
3f0606ad | 63 | int misc_init_r(void) |
6cb142fa | 64 | { |
6cb142fa | 65 | #ifdef CONFIG_STAMP_CF |
5f79644d MF |
66 | cf_ide_init(); |
67 | #endif | |
6cb142fa | 68 | |
5f79644d | 69 | return 0; |
6cb142fa WD |
70 | } |
71 | #endif | |
72 | ||
23fd959e MF |
73 | #ifdef CONFIG_SHOW_BOOT_PROGRESS |
74 | ||
75 | #define STATUS_LED_OFF 0 | |
76 | #define STATUS_LED_ON 1 | |
77 | ||
78 | static void stamp_led_set(int LED1, int LED2, int LED3) | |
6cb142fa | 79 | { |
23fd959e MF |
80 | bfin_write_FIO_INEN(bfin_read_FIO_INEN() & ~(PF2 | PF3 | PF4)); |
81 | bfin_write_FIO_DIR(bfin_read_FIO_DIR() | (PF2 | PF3 | PF4)); | |
8e7b703a WD |
82 | |
83 | if (LED1 == STATUS_LED_OFF) | |
6cb142fa WD |
84 | *pFIO_FLAG_S = PF2; |
85 | else | |
86 | *pFIO_FLAG_C = PF2; | |
8e7b703a | 87 | if (LED2 == STATUS_LED_OFF) |
6cb142fa WD |
88 | *pFIO_FLAG_S = PF3; |
89 | else | |
90 | *pFIO_FLAG_C = PF3; | |
8e7b703a | 91 | if (LED3 == STATUS_LED_OFF) |
6cb142fa WD |
92 | *pFIO_FLAG_S = PF4; |
93 | else | |
94 | *pFIO_FLAG_C = PF4; | |
d4d77308 | 95 | SSYNC(); |
6cb142fa WD |
96 | } |
97 | ||
3f0606ad | 98 | void show_boot_progress(int status) |
6cb142fa | 99 | { |
8e7b703a WD |
100 | switch (status) { |
101 | case 1: | |
3f0606ad | 102 | stamp_led_set(STATUS_LED_OFF, STATUS_LED_OFF, STATUS_LED_ON); |
8e7b703a WD |
103 | break; |
104 | case 2: | |
3f0606ad | 105 | stamp_led_set(STATUS_LED_OFF, STATUS_LED_ON, STATUS_LED_OFF); |
8e7b703a WD |
106 | break; |
107 | case 3: | |
3f0606ad | 108 | stamp_led_set(STATUS_LED_OFF, STATUS_LED_ON, STATUS_LED_ON); |
8e7b703a WD |
109 | break; |
110 | case 4: | |
3f0606ad | 111 | stamp_led_set(STATUS_LED_ON, STATUS_LED_OFF, STATUS_LED_OFF); |
8e7b703a WD |
112 | break; |
113 | case 5: | |
114 | case 6: | |
3f0606ad | 115 | stamp_led_set(STATUS_LED_ON, STATUS_LED_OFF, STATUS_LED_ON); |
8e7b703a WD |
116 | break; |
117 | case 7: | |
118 | case 8: | |
3f0606ad | 119 | stamp_led_set(STATUS_LED_ON, STATUS_LED_ON, STATUS_LED_OFF); |
8e7b703a WD |
120 | break; |
121 | case 9: | |
122 | case 10: | |
123 | case 11: | |
124 | case 12: | |
125 | case 13: | |
126 | case 14: | |
127 | case 15: | |
3f0606ad | 128 | stamp_led_set(STATUS_LED_OFF, STATUS_LED_OFF, STATUS_LED_OFF); |
8e7b703a WD |
129 | break; |
130 | default: | |
3f0606ad | 131 | stamp_led_set(STATUS_LED_ON, STATUS_LED_ON, STATUS_LED_ON); |
8e7b703a | 132 | break; |
6cb142fa WD |
133 | } |
134 | } | |
23fd959e MF |
135 | #endif |
136 | ||
137 | #ifdef CONFIG_STATUS_LED | |
138 | #include <status_led.h> | |
139 | ||
140 | static void set_led(int pf, int state) | |
141 | { | |
142 | switch (state) { | |
143 | case STATUS_LED_OFF: bfin_write_FIO_FLAG_S(pf); break; | |
144 | case STATUS_LED_BLINKING: bfin_write_FIO_FLAG_T(pf); break; | |
145 | case STATUS_LED_ON: bfin_write_FIO_FLAG_C(pf); break; | |
146 | } | |
147 | } | |
148 | ||
149 | static void set_leds(led_id_t mask, int state) | |
150 | { | |
151 | if (mask & 0x1) set_led(PF2, state); | |
152 | if (mask & 0x2) set_led(PF3, state); | |
153 | if (mask & 0x4) set_led(PF4, state); | |
154 | } | |
155 | ||
156 | void __led_init(led_id_t mask, int state) | |
157 | { | |
158 | bfin_write_FIO_INEN(bfin_read_FIO_INEN() & ~(PF2 | PF3 | PF4)); | |
159 | bfin_write_FIO_DIR(bfin_read_FIO_DIR() | (PF2 | PF3 | PF4)); | |
160 | } | |
161 | ||
162 | void __led_set(led_id_t mask, int state) | |
163 | { | |
164 | set_leds(mask, state); | |
165 | } | |
166 | ||
167 | void __led_toggle(led_id_t mask) | |
168 | { | |
169 | set_leds(mask, STATUS_LED_BLINKING); | |
170 | } | |
171 | ||
172 | #endif | |
7194ab80 BW |
173 | |
174 | #ifdef CONFIG_SMC91111 | |
175 | int board_eth_init(bd_t *bis) | |
176 | { | |
177 | return smc91111_initialize(0, CONFIG_SMC91111_BASE); | |
178 | } | |
179 | #endif |