Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 2 | * Host bridge init code for the Marvell/Galileo EV-64260-BP evaluation board |
| 3 | * with a GT64260 onboard. |
| 4 | * |
| 5 | * Author: Mark A. Greer <mgreer@mvista.com> |
| 6 | * |
| 7 | * 2001 (c) MontaVista Software, Inc. This file is licensed under |
| 8 | * the terms of the GNU General Public License version 2. This program |
| 9 | * is licensed "as is" without any warranty of any kind, whether express |
| 10 | * or implied. |
| 11 | */ |
| 12 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 13 | #include <linux/types.h> |
| 14 | #include <asm/reg.h> |
| 15 | #include <asm/io.h> |
| 16 | #include <asm/mv64x60_defs.h> |
| 17 | #include <platforms/ev64260.h> |
| 18 | |
| 19 | #ifdef CONFIG_SERIAL_MPSC_CONSOLE |
| 20 | extern u32 mv64x60_console_baud; |
| 21 | extern u32 mv64x60_mpsc_clk_src; |
| 22 | extern u32 mv64x60_mpsc_clk_freq; |
| 23 | #endif |
| 24 | |
| 25 | void |
| 26 | mv64x60_board_init(void __iomem *old_base, void __iomem *new_base) |
| 27 | { |
| 28 | u32 p, v; |
| 29 | |
| 30 | /* DINK doesn't enable 745x timebase, so enable here (Adrian Cox) */ |
| 31 | p = mfspr(SPRN_PVR); |
| 32 | p >>= 16; |
| 33 | |
| 34 | /* Reasonable SWAG at a 745x PVR value */ |
| 35 | if (((p & 0xfff0) == 0x8000) && (p != 0x800c)) { |
| 36 | v = mfspr(SPRN_HID0); |
| 37 | v |= HID0_TBEN; |
| 38 | mtspr(SPRN_HID0, v); |
| 39 | } |
| 40 | |
| 41 | #ifdef CONFIG_SERIAL_8250_CONSOLE |
| 42 | /* |
| 43 | * Change device bus 2 window so that bootoader can do I/O thru |
| 44 | * 8250/16550 UART that's mapped in that window. |
| 45 | */ |
| 46 | out_le32(new_base + MV64x60_CPU2DEV_2_BASE, EV64260_UART_BASE >> 20); |
| 47 | out_le32(new_base + MV64x60_CPU2DEV_2_SIZE, EV64260_UART_END >> 20); |
| 48 | __asm__ __volatile__("sync"); |
| 49 | #elif defined(CONFIG_SERIAL_MPSC_CONSOLE) |
| 50 | mv64x60_console_baud = EV64260_DEFAULT_BAUD; |
| 51 | mv64x60_mpsc_clk_src = EV64260_MPSC_CLK_SRC; |
| 52 | mv64x60_mpsc_clk_freq = EV64260_MPSC_CLK_FREQ; |
| 53 | #endif |
| 54 | } |