]>
Commit | Line | Data |
---|---|---|
3f82b1d3 TW |
1 | /* |
2 | * (C) Copyright 2010,2011 | |
3 | * NVIDIA Corporation <www.nvidia.com> | |
4 | * | |
5 | * See file CREDITS for list of people who contributed to this | |
6 | * project. | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or | |
9 | * modify it under the terms of the GNU General Public License as | |
10 | * published by the Free Software Foundation; either version 2 of | |
11 | * the License, or (at your option) any later version. | |
12 | * | |
13 | * This program is distributed in the hope that it will be useful, | |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | * GNU General Public License for more details. | |
17 | * | |
18 | * You should have received a copy of the GNU General Public License | |
19 | * along with this program; if not, write to the Free Software | |
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | * MA 02111-1307 USA | |
22 | */ | |
23 | ||
24 | #include <common.h> | |
25 | #include <ns16550.h> | |
26 | #include <asm/io.h> | |
27 | #include <asm/arch/tegra2.h> | |
28 | #include <asm/arch/sys_proto.h> | |
29 | ||
f46a9456 | 30 | #include <asm/arch/board.h> |
3f82b1d3 | 31 | #include <asm/arch/clk_rst.h> |
b4ba2be8 | 32 | #include <asm/arch/clock.h> |
3f82b1d3 TW |
33 | #include <asm/arch/pinmux.h> |
34 | #include <asm/arch/uart.h> | |
9112ef8d | 35 | #include <spi.h> |
f10393e5 | 36 | #include <asm/arch/usb.h> |
cb445fb4 | 37 | #include <i2c.h> |
74652cf6 | 38 | #include "board.h" |
3f82b1d3 TW |
39 | |
40 | DECLARE_GLOBAL_DATA_PTR; | |
41 | ||
42 | const struct tegra2_sysinfo sysinfo = { | |
43 | CONFIG_TEGRA2_BOARD_STRING | |
44 | }; | |
45 | ||
46 | /* | |
47 | * Routine: timer_init | |
48 | * Description: init the timestamp and lastinc value | |
49 | */ | |
50 | int timer_init(void) | |
51 | { | |
3f82b1d3 TW |
52 | return 0; |
53 | } | |
54 | ||
f10393e5 SG |
55 | void __pin_mux_usb(void) |
56 | { | |
57 | } | |
58 | ||
59 | void pin_mux_usb(void) __attribute__((weak, alias("__pin_mux_usb"))); | |
60 | ||
3f82b1d3 TW |
61 | /* |
62 | * Routine: board_init | |
63 | * Description: Early hardware init. | |
64 | */ | |
65 | int board_init(void) | |
66 | { | |
a04eba99 | 67 | /* Do clocks and UART first so that printf() works */ |
4ed59e70 SG |
68 | clock_init(); |
69 | clock_verify(); | |
70 | ||
a04eba99 SG |
71 | #ifdef CONFIG_SPI_UART_SWITCH |
72 | gpio_config_uart(); | |
73 | #endif | |
9112ef8d TW |
74 | #ifdef CONFIG_TEGRA2_SPI |
75 | spi_init(); | |
76 | #endif | |
3f82b1d3 TW |
77 | /* boot param addr */ |
78 | gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100); | |
cb445fb4 SG |
79 | #ifdef CONFIG_TEGRA_I2C |
80 | #ifndef CONFIG_SYS_I2C_INIT_BOARD | |
81 | #error "You must define CONFIG_SYS_I2C_INIT_BOARD to use i2c on Nvidia boards" | |
82 | #endif | |
83 | i2c_init_board(); | |
84 | #endif | |
3f82b1d3 | 85 | |
f10393e5 SG |
86 | #ifdef CONFIG_USB_EHCI_TEGRA |
87 | pin_mux_usb(); | |
88 | board_usb_init(gd->fdt_blob); | |
89 | #endif | |
90 | ||
3f82b1d3 TW |
91 | return 0; |
92 | } | |
21ef6a10 | 93 | |
3e00dbdf SG |
94 | #ifdef CONFIG_BOARD_EARLY_INIT_F |
95 | int board_early_init_f(void) | |
96 | { | |
f46a9456 | 97 | board_init_uart_f(); |
3e00dbdf SG |
98 | |
99 | /* Initialize periph GPIOs */ | |
a04eba99 SG |
100 | #ifdef CONFIG_SPI_UART_SWITCH |
101 | gpio_early_init_uart(); | |
102 | #else | |
3e00dbdf | 103 | gpio_config_uart(); |
a04eba99 | 104 | #endif |
3e00dbdf SG |
105 | return 0; |
106 | } | |
107 | #endif /* EARLY_INIT */ |