OLD | NEW |
1 /* | 1 /* |
2 * (C) Copyright 2010,2011 | 2 * (C) Copyright 2010,2011 |
3 * NVIDIA Corporation <www.nvidia.com> | 3 * NVIDIA Corporation <www.nvidia.com> |
4 * | 4 * |
5 * See file CREDITS for list of people who contributed to this | 5 * See file CREDITS for list of people who contributed to this |
6 * project. | 6 * project. |
7 * | 7 * |
8 * This program is free software; you can redistribute it and/or | 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 | 9 * modify it under the terms of the GNU General Public License as |
10 * published by the Free Software Foundation; either version 2 of | 10 * published by the Free Software Foundation; either version 2 of |
(...skipping 10 matching lines...) Expand all Loading... |
21 * MA 02111-1307 USA | 21 * MA 02111-1307 USA |
22 */ | 22 */ |
23 | 23 |
24 #include <common.h> | 24 #include <common.h> |
25 #include <ns16550.h> | 25 #include <ns16550.h> |
26 #include <asm/io.h> | 26 #include <asm/io.h> |
27 #include <asm/arch/tegra2.h> | 27 #include <asm/arch/tegra2.h> |
28 #include <asm/arch/sys_proto.h> | 28 #include <asm/arch/sys_proto.h> |
29 | 29 |
30 #include <asm/arch/clk_rst.h> | 30 #include <asm/arch/clk_rst.h> |
| 31 #include <asm/arch/clock.h> |
31 #include <asm/arch/pinmux.h> | 32 #include <asm/arch/pinmux.h> |
32 #include <asm/arch/uart.h> | 33 #include <asm/arch/uart.h> |
33 #include "board.h" | 34 #include "board.h" |
34 | 35 |
35 DECLARE_GLOBAL_DATA_PTR; | 36 DECLARE_GLOBAL_DATA_PTR; |
36 | 37 |
37 const struct tegra2_sysinfo sysinfo = { | 38 const struct tegra2_sysinfo sysinfo = { |
38 CONFIG_TEGRA2_BOARD_STRING | 39 CONFIG_TEGRA2_BOARD_STRING |
39 }; | 40 }; |
40 | 41 |
(...skipping 25 matching lines...) Expand all Loading... |
66 return 0; | 67 return 0; |
67 } | 68 } |
68 | 69 |
69 /* | 70 /* |
70 * Routine: clock_init_uart | 71 * Routine: clock_init_uart |
71 * Description: init the PLL and clock for the UART(s) | 72 * Description: init the PLL and clock for the UART(s) |
72 */ | 73 */ |
73 static void clock_init_uart(void) | 74 static void clock_init_uart(void) |
74 { | 75 { |
75 struct clk_rst_ctlr *clkrst = (struct clk_rst_ctlr *)NV_PA_CLK_RST_BASE; | 76 struct clk_rst_ctlr *clkrst = (struct clk_rst_ctlr *)NV_PA_CLK_RST_BASE; |
| 77 struct clk_pll *pll = &clkrst->crc_pll[CLOCK_PLL_ID_PERIPH]; |
76 u32 reg; | 78 u32 reg; |
77 | 79 |
78 » reg = readl(&clkrst->crc_pllp_base); | 80 » reg = readl(&pll->pll_base); |
79 » if (!(reg & PLL_BASE_OVRRIDE)) { | 81 » if (!(reg & PLL_BASE_OVRRIDE_BIT)) { |
80 /* Override pllp setup for 216MHz operation. */ | 82 /* Override pllp setup for 216MHz operation. */ |
81 » » reg = (PLL_BYPASS | PLL_BASE_OVRRIDE | PLL_DIVP); | 83 » » reg = (PLL_BYPASS_BIT | PLL_BASE_OVRRIDE_BIT | PLL_DIVP_VALUE); |
82 » » reg |= (((NVRM_PLLP_FIXED_FREQ_KHZ/500) << 8) | PLL_DIVM); | 84 » » reg |= (((NVRM_PLLP_FIXED_FREQ_KHZ/500) << 8) | PLL_DIVM_VALUE); |
83 » » writel(reg, &clkrst->crc_pllp_base); | 85 » » writel(reg, &pll->pll_base); |
84 | 86 |
85 » » reg |= PLL_ENABLE; | 87 » » reg |= PLL_ENABLE_BIT; |
86 » » writel(reg, &clkrst->crc_pllp_base); | 88 » » writel(reg, &pll->pll_base); |
87 | 89 |
88 » » reg &= ~PLL_BYPASS; | 90 » » reg &= ~PLL_BYPASS_BIT; |
89 » » writel(reg, &clkrst->crc_pllp_base); | 91 » » writel(reg, &pll->pll_base); |
90 } | 92 } |
91 | 93 |
92 /* Now do the UART reset/clock enable */ | 94 /* Now do the UART reset/clock enable */ |
93 #if defined(CONFIG_TEGRA2_ENABLE_UARTA) | 95 #if defined(CONFIG_TEGRA2_ENABLE_UARTA) |
94 » /* Assert Reset to UART */ | 96 » /* Assert UART reset and enable clock */ |
95 » reg = readl(&clkrst->crc_rst_dev_l); | 97 » reset_set_enable(PERIPH_ID_UART1, 1); |
96 » reg |= SWR_UARTA_RST;» » /* SWR_UARTA_RST = 1 */ | 98 » clock_enable(PERIPH_ID_UART1); |
97 » writel(reg, &clkrst->crc_rst_dev_l); | |
98 | |
99 » /* Enable clk to UART */ | |
100 » reg = readl(&clkrst->crc_clk_out_enb_l); | |
101 » reg |= CLK_ENB_UARTA;» » /* CLK_ENB_UARTA = 1 */ | |
102 » writel(reg, &clkrst->crc_clk_out_enb_l); | |
103 | 99 |
104 /* Enable pllp_out0 to UART */ | 100 /* Enable pllp_out0 to UART */ |
105 reg = readl(&clkrst->crc_clk_src_uarta); | 101 reg = readl(&clkrst->crc_clk_src_uarta); |
106 reg &= 0x3FFFFFFF; /* UARTA_CLK_SRC = 00, PLLP_OUT0 */ | 102 reg &= 0x3FFFFFFF; /* UARTA_CLK_SRC = 00, PLLP_OUT0 */ |
107 writel(reg, &clkrst->crc_clk_src_uarta); | 103 writel(reg, &clkrst->crc_clk_src_uarta); |
108 | 104 |
109 /* wait for 2us */ | 105 /* wait for 2us */ |
110 udelay(2); | 106 udelay(2); |
111 | 107 |
112 /* De-assert reset to UART */ | 108 /* De-assert reset to UART */ |
113 » reg = readl(&clkrst->crc_rst_dev_l); | 109 » reset_set_enable(PERIPH_ID_UART1, 0); |
114 » reg &= ~SWR_UARTA_RST;» » /* SWR_UARTA_RST = 0 */ | |
115 » writel(reg, &clkrst->crc_rst_dev_l); | |
116 #endif /* CONFIG_TEGRA2_ENABLE_UARTA */ | 110 #endif /* CONFIG_TEGRA2_ENABLE_UARTA */ |
117 #if defined(CONFIG_TEGRA2_ENABLE_UARTD) | 111 #if defined(CONFIG_TEGRA2_ENABLE_UARTD) |
118 » /* Assert Reset to UART */ | 112 » /* Assert UART reset and enable clock */ |
119 » reg = readl(&clkrst->crc_rst_dev_u); | 113 » reset_set_enable(PERIPH_ID_UART4, 1); |
120 » reg |= SWR_UARTD_RST;» » /* SWR_UARTD_RST = 1 */ | 114 » clock_enable(PERIPH_ID_UART4); |
121 » writel(reg, &clkrst->crc_rst_dev_u); | |
122 | |
123 » /* Enable clk to UART */ | |
124 » reg = readl(&clkrst->crc_clk_out_enb_u); | |
125 » reg |= CLK_ENB_UARTD;» » /* CLK_ENB_UARTD = 1 */ | |
126 » writel(reg, &clkrst->crc_clk_out_enb_u); | |
127 | 115 |
128 /* Enable pllp_out0 to UART */ | 116 /* Enable pllp_out0 to UART */ |
129 reg = readl(&clkrst->crc_clk_src_uartd); | 117 reg = readl(&clkrst->crc_clk_src_uartd); |
130 reg &= 0x3FFFFFFF; /* UARTD_CLK_SRC = 00, PLLP_OUT0 */ | 118 reg &= 0x3FFFFFFF; /* UARTD_CLK_SRC = 00, PLLP_OUT0 */ |
131 writel(reg, &clkrst->crc_clk_src_uartd); | 119 writel(reg, &clkrst->crc_clk_src_uartd); |
132 | 120 |
133 /* wait for 2us */ | 121 /* wait for 2us */ |
134 udelay(2); | 122 udelay(2); |
135 | 123 |
136 /* De-assert reset to UART */ | 124 /* De-assert reset to UART */ |
137 » reg = readl(&clkrst->crc_rst_dev_u); | 125 » reset_set_enable(PERIPH_ID_UART4, 0); |
138 » reg &= ~SWR_UARTD_RST;» » /* SWR_UARTD_RST = 0 */ | |
139 » writel(reg, &clkrst->crc_rst_dev_u); | |
140 #endif /* CONFIG_TEGRA2_ENABLE_UARTD */ | 126 #endif /* CONFIG_TEGRA2_ENABLE_UARTD */ |
141 } | 127 } |
142 | 128 |
143 /* | 129 /* |
144 * Routine: pin_mux_uart | 130 * Routine: pin_mux_uart |
145 * Description: setup the pin muxes/tristate values for the UART(s) | 131 * Description: setup the pin muxes/tristate values for the UART(s) |
146 */ | 132 */ |
147 static void pin_mux_uart(void) | 133 static void pin_mux_uart(void) |
148 { | 134 { |
149 struct pmux_tri_ctlr *pmt = (struct pmux_tri_ctlr *)NV_PA_APB_MISC_BASE; | 135 struct pmux_tri_ctlr *pmt = (struct pmux_tri_ctlr *)NV_PA_APB_MISC_BASE; |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 */ | 189 */ |
204 int board_init(void) | 190 int board_init(void) |
205 { | 191 { |
206 /* boot param addr */ | 192 /* boot param addr */ |
207 gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100); | 193 gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100); |
208 /* board id for Linux */ | 194 /* board id for Linux */ |
209 gd->bd->bi_arch_number = CONFIG_MACH_TYPE; | 195 gd->bd->bi_arch_number = CONFIG_MACH_TYPE; |
210 | 196 |
211 return 0; | 197 return 0; |
212 } | 198 } |
OLD | NEW |