3 * Rob Taylor, Flying Pig Systems. robt@flyingpig.com.
5 * See file CREDITS for list of people who contributed to this
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.
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.
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,
30 ulong busfreq
= get_bus_freq(0);
33 printf("Board: A3000 Local Bus at %s MHz\n", strmhz(buf
, busfreq
));
38 long int initdram (int board_type
)
41 volatile uchar
* base
= CFG_SDRAM_BASE
;
42 volatile ulong
* addr
;
46 for (i
=0, cnt
=(CFG_MAX_RAM_SIZE
/ sizeof(long)) >> 1; cnt
> 0; cnt
>>= 1) {
47 addr
= (volatile ulong
*)base
+ cnt
;
52 addr
= (volatile ulong
*)base
;
61 for (cnt
= 1; cnt
<= CFG_MAX_RAM_SIZE
/ sizeof(long); cnt
<<= 1) {
62 addr
= (volatile ulong
*)base
+ cnt
;
66 ulong new_bank0_end
= cnt
* sizeof(long) - 1;
67 ulong mear1
= mpc824x_mpc107_getreg(MEAR1
);
68 ulong emear1
= mpc824x_mpc107_getreg(EMEAR1
);
69 mear1
= (mear1
& 0xFFFFFF00) |
70 ((new_bank0_end
& MICR_ADDR_MASK
) >> MICR_ADDR_SHIFT
);
71 emear1
= (emear1
& 0xFFFFFF00) |
72 ((new_bank0_end
& MICR_ADDR_MASK
) >> MICR_EADDR_SHIFT
);
73 mpc824x_mpc107_setreg(MEAR1
, mear1
);
74 mpc824x_mpc107_setreg(EMEAR1
, emear1
);
76 ret
= cnt
* sizeof(long);
81 ret
= CFG_MAX_RAM_SIZE
;
87 * Initialize PCI Devices
90 #ifndef CONFIG_PCI_PNP
91 static struct pci_config_table pci_a3000_config_table
[] = {
92 { PCI_ANY_ID
, PCI_ANY_ID
, PCI_ANY_ID
,
93 0x0, 0x0, 0x0, /* unknown eth0 divice */
94 pci_cfgfunc_config_device
, { PCI_ENET0_IOADDR
,
98 PCI_COMMAND_MASTER
}},
99 { PCI_ANY_ID
, PCI_ANY_ID
, PCI_ANY_ID
,
100 0x0, 0x0, 0x0, /* unknown eth1 device */
101 pci_cfgfunc_config_device
, { PCI_ENET1_IOADDR
,
105 PCI_COMMAND_MASTER
}},
106 { PCI_ANY_ID
, PCI_ANY_ID
, PCI_ANY_ID
,
107 0x0, 0x0, 0x0, /* unknown eth1 device */
108 pci_cfgfunc_config_device
, { PCI_ENET2_IOADDR
,
112 PCI_COMMAND_MASTER
}},
119 #ifndef CONFIG_PCI_PNP
120 static struct pci_config_table pci_a3000_config_table
[] = {
121 { PCI_ANY_ID
, PCI_ANY_ID
, PCI_ANY_ID
, PCI_ANY_ID
, 0x0f, PCI_ANY_ID
,
122 pci_cfgfunc_config_device
, { PCI_ENET0_IOADDR
,
124 PCI_COMMAND_MEMORY
| PCI_COMMAND_MASTER
}},
125 { PCI_ANY_ID
, PCI_ANY_ID
, PCI_ANY_ID
, PCI_ANY_ID
, 0x10, PCI_ANY_ID
,
126 pci_cfgfunc_config_device
, { PCI_ENET1_IOADDR
,
128 PCI_COMMAND_MEMORY
| PCI_COMMAND_MASTER
}},
135 struct pci_controller hose
= {
136 #ifndef CONFIG_PCI_PNP
137 config_table
: pci_a3000_config_table
,
141 void pci_init_board(void)
143 pci_mpc824x_init(&hose
);