2 * (C) Copyright 2000-2004
8 * SPDX-License-Identifier: GPL-2.0+
13 #include <asm/processor.h>
18 #include <timestamp.h>
24 ulong busfreq = get_bus_freq (0);
27 printf ("Board: eXalion MPC824x - CHRP (MAP B)\n");
28 printf ("Built: %s at %s\n", U_BOOT_DATE, U_BOOT_TIME);
29 printf ("Local Bus: %s MHz\n", strmhz (buf, busfreq));
36 printf ("checkflash\n");
41 phys_size_t initdram (int board_type)
44 volatile uchar *base = CONFIG_SYS_SDRAM_BASE;
49 for (i = 0, cnt = (CONFIG_SYS_MAX_RAM_SIZE / sizeof (long)) >> 1; cnt > 0;
51 addr = (volatile ulong *) base + cnt;
56 addr = (volatile ulong *) base;
65 for (cnt = 1; cnt <= CONFIG_SYS_MAX_RAM_SIZE / sizeof (long); cnt <<= 1) {
66 addr = (volatile ulong *) base + cnt;
70 ulong new_bank0_end = cnt * sizeof (long) - 1;
71 ulong mear1 = mpc824x_mpc107_getreg (MEAR1);
72 ulong emear1 = mpc824x_mpc107_getreg (EMEAR1);
74 mear1 = (mear1 & 0xFFFFFF00) |
75 ((new_bank0_end & MICR_ADDR_MASK) >>
77 emear1 = (emear1 & 0xFFFFFF00) |
78 ((new_bank0_end & MICR_ADDR_MASK) >>
80 mpc824x_mpc107_setreg (MEAR1, mear1);
81 mpc824x_mpc107_setreg (EMEAR1, emear1);
83 ret = cnt * sizeof (long);
88 ret = CONFIG_SYS_MAX_RAM_SIZE;
93 int misc_init_r (void)
100 bdf = pci_find_device (PIIX4_VENDOR_ID, PIIX4_ISA_DEV_ID, 0);
102 puts ("Unable to find PIIX4 ISA bridge !\n");
106 /* set device for normal ISA instead EIO */
107 pci_read_config_dword (bdf, PCI_CFG_PIIX4_GENCFG, &val32);
109 pci_write_config_dword (bdf, PCI_CFG_PIIX4_GENCFG, val32);
110 printf ("PIIX4 ISA bridge (%d,%d,%d)\n", PCI_BUS (bdf),
111 PCI_DEV (bdf), PCI_FUNC (bdf));
114 bdf = pci_find_device (PIIX4_VENDOR_ID, PIIX4_IDE_DEV_ID, 0);
116 puts ("Unable to find PIIX4 IDE controller !\n");
120 /* Init BMIBA register */
121 /* pci_read_config_dword(bdf, PCI_CFG_PIIX4_BMIBA, &val32); */
122 /* val32 |= 0x1000; */
123 /* pci_write_config_dword(bdf, PCI_CFG_PIIX4_BMIBA, val32); */
125 /* Enable BUS master and IO access */
126 val32 = PCI_COMMAND_MASTER | PCI_COMMAND_IO;
127 pci_write_config_dword (bdf, PCI_COMMAND, val32);
130 pci_read_config_byte (bdf, PCI_LATENCY_TIMER, &val8);
132 pci_write_config_byte (bdf, PCI_LATENCY_TIMER, val8);
134 /* Enable Primary ATA/IDE */
135 pci_read_config_dword (bdf, PCI_CFG_PIIX4_IDETIM, &val32);
136 /* val32 = 0xa307a307; */
138 pci_write_config_dword (bdf, PCI_CFG_PIIX4_IDETIM, val32);
141 printf ("PIIX4 IDE controller (%d,%d,%d)\n", PCI_BUS (bdf),
142 PCI_DEV (bdf), PCI_FUNC (bdf));
144 /* Try to get FAT working... */
145 /* fat_register_read(ide_read); */
152 * Show/Init PCI devices on the specified bus number.
155 void pci_eXalion_fixup_irq (struct pci_controller *hose, pci_dev_t dev)
159 switch (PCI_DEV (dev)) {
172 #if defined (CONFIG_MPC8245)
187 pci_hose_write_config_byte (hose, dev, PCI_INTERRUPT_LINE, line);
192 * Initialize PCI Devices, report devices found.
194 #ifndef CONFIG_PCI_PNP
195 #if defined (CONFIG_MPC8240)
196 static struct pci_config_table pci_eXalion_config_table[] = {
198 /* Intel 82559ER ethernet controller */
199 PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 18, 0x00,
200 pci_cfgfunc_config_device, {PCI_ENET0_IOADDR,
203 PCI_COMMAND_MASTER}},
205 /* Intel 82371AB PIIX4 PCI to ISA bridge */
206 PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 20, 0x00,
207 pci_cfgfunc_config_device, {0,
209 PCI_COMMAND_IO | PCI_COMMAND_MASTER}},
211 /* Intel 82371AB PIIX4 IDE controller */
212 PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 20, 0x01,
213 pci_cfgfunc_config_device, {0,
215 PCI_COMMAND_IO | PCI_COMMAND_MASTER}},
218 #elif defined (CONFIG_MPC8245)
219 static struct pci_config_table pci_eXalion_config_table[] = {
221 /* Intel 82559ER ethernet controller */
222 PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 17, 0x00,
223 pci_cfgfunc_config_device, {PCI_ENET0_IOADDR,
226 PCI_COMMAND_MASTER}},
228 /* Intel 82559ER ethernet controller */
229 PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 18, 0x00,
230 pci_cfgfunc_config_device, {PCI_ENET1_IOADDR,
233 PCI_COMMAND_MASTER}},
235 /* Broadcom BCM5690 Gigabit switch */
236 PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 20, 0x00,
237 pci_cfgfunc_config_device, {PCI_ENET2_IOADDR,
240 PCI_COMMAND_MASTER}},
242 /* Broadcom BCM5690 Gigabit switch */
243 PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 21, 0x00,
244 pci_cfgfunc_config_device, {PCI_ENET3_IOADDR,
247 PCI_COMMAND_MASTER}},
249 /* Intel 82371AB PIIX4 PCI to ISA bridge */
250 PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 22, 0x00,
251 pci_cfgfunc_config_device, {0,
253 PCI_COMMAND_IO | PCI_COMMAND_MASTER}},
255 /* Intel 82371AB PIIX4 IDE controller */
256 PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0x00, 22, 0x01,
257 pci_cfgfunc_config_device, {0,
259 PCI_COMMAND_IO | PCI_COMMAND_MASTER}},
263 #error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240)
266 #endif /* #ifndef CONFIG_PCI_PNP */
268 struct pci_controller hose = {
269 #ifndef CONFIG_PCI_PNP
270 config_table:pci_eXalion_config_table,
271 fixup_irq:pci_eXalion_fixup_irq,
275 void pci_init_board (void)
277 pci_mpc824x_init (&hose);
280 int board_eth_init(bd_t *bis)
282 return pci_eth_init(bis);