]> git.ipfire.org Git - people/ms/u-boot.git/blame - board/ppmc7xx/ppmc7xx.c
rename CFG_ macros to CONFIG_SYS
[people/ms/u-boot.git] / board / ppmc7xx / ppmc7xx.c
CommitLineData
f5e0d039
HS
1/*
2 * ppmc7xx.c
3 * ---------
b87dfd28 4 *
f5e0d039 5 * Main board-specific routines for Wind River PPMC 7xx/74xx board.
b87dfd28 6 *
f5e0d039
HS
7 * By Richard Danter (richard.danter@windriver.com)
8 * Copyright (C) 2005 Wind River Systems
9 */
10
11#include <common.h>
12#include <command.h>
10efa024 13#include <netdev.h>
f5e0d039
HS
14
15
16/* Define some MPC107 (memory controller) registers */
17#define MPC107_EUMB_GCR 0xfce41020
18#define MPC107_EUMB_IACKR 0xfce600a0
19
20
21/* Function prototypes */
22extern void unlock_ram_in_cache( void );
23extern void _start_warm(void);
24
25
26/*
27 * initdram()
b87dfd28 28 *
f5e0d039
HS
29 * This function normally initialises the (S)DRAM of the system. For this board
30 * the SDRAM was already initialised by board_asm_init (see init.S) so we just
31 * return the size of RAM.
32 */
9973e3c6 33phys_size_t initdram( int board_type )
f5e0d039 34{
6d0f6bcf 35 return CONFIG_SYS_SDRAM_SIZE;
f5e0d039
HS
36}
37
38
39/*
40 * after_reloc()
b87dfd28 41 *
f5e0d039
HS
42 * This is called after U-Boot has been copied from Flash/ROM to RAM. It gives
43 * us an opportunity to do some additional setup before the rest of the system
44 * is initialised. We don't need to do anything, so we just call board_init_r()
45 * which should never return.
b87dfd28 46 */
f5e0d039
HS
47void after_reloc( ulong dest_addr, gd_t* gd )
48{
49 /* Jump to the main U-Boot board init code */
50 board_init_r( gd, dest_addr );
51}
52
53
54/*
55 * checkboard()
b87dfd28 56 *
f5e0d039
HS
57 * We could do some board level checks here, such as working out what version
58 * it is, but for this board we simply display it's name (on the console).
59 */
60int checkboard( void )
61{
62 puts( "Board: Wind River PPMC 7xx/74xx\n" );
63 return 0;
64}
65
66
67/*
68 * misc_init_r
b87dfd28 69 *
f5e0d039
HS
70 * Used for other setup which needs to be done late in the bring-up phase.
71 */
72int misc_init_r( void )
73{
74 /* Reset the EPIC and clear pending interrupts */
75 out32r(MPC107_EUMB_GCR, 0xa0000000);
76 while( in32r( MPC107_EUMB_GCR ) & 0x80000000 );
77 out32r( MPC107_EUMB_GCR, 0x20000000 );
78 while( in32r( MPC107_EUMB_IACKR ) != 0xff );
79
80 /* Enable the I-Cache */
81 icache_enable();
b87dfd28 82
f5e0d039
HS
83 return 0;
84}
85
86
87/*
88 * do_reset()
b87dfd28 89 *
f5e0d039
HS
90 * Shell command to reset the board.
91 */
92void do_reset( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] )
93{
94 printf( "Resetting...\n" );
b87dfd28 95
f5e0d039
HS
96 /* Disabe and invalidate cache */
97 icache_disable();
98 dcache_disable();
99
100 /* Jump to warm start (in RAM) */
101 _start_warm();
b87dfd28 102
f5e0d039
HS
103 /* Should never get here */
104 while(1);
105}
10efa024
BW
106
107int board_eth_init(bd_t *bis)
108{
109 return pci_eth_init(bis);
110}