2 * Qemu PowerPC 440 board emualtion
4 * Copyright 2007 IBM Corporation.
5 * Authors: Jerone Young <jyoung5@us.ibm.com>
6 * Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
8 * This work is licensed under the GNU GPL license version 2 or later.
17 #define PPC440EP_PCI_CONFIG 0xeec00000
18 #define PPC440EP_PCI_INTACK 0xeed00000
19 #define PPC440EP_PCI_SPECIAL 0xeed00000
20 #define PPC440EP_PCI_REGS 0xef400000
21 #define PPC440EP_PCI_IO 0xe8000000
22 #define PPC440EP_PCI_IOLEN 0x10000
23 #define PPC440EP_PCI_MEM 0xa0000000
24 #define PPC440EP_PCI_MEMLEN 0x20000000
27 void ppc440ep_init(CPUState
*env
,
28 target_phys_addr_t ram_bases
[PPC440_MAX_RAM_SLOTS
],
29 target_phys_addr_t ram_sizes
[PPC440_MAX_RAM_SLOTS
],
40 ppc_dcr_init(env
, NULL
, NULL
);
43 printf("setup mmio\n");
44 mmio
= ppc4xx_mmio_init(env
, 0xEF600000);
46 /* universal controller */
47 printf("setup universal controller\n");
48 irqs
= qemu_mallocz(sizeof(qemu_irq
) * PPCUIC_OUTPUT_NB
);
49 irqs
[PPCUIC_OUTPUT_INT
] =
50 ((qemu_irq
*)env
->irq_inputs
)[PPC40x_INPUT_INT
];
51 irqs
[PPCUIC_OUTPUT_CINT
] =
52 ((qemu_irq
*)env
->irq_inputs
)[PPC40x_INPUT_CINT
];
53 pic
= ppcuic_init(env
, irqs
, 0x0C0, 0, 1);
56 /* SDRAM controller */
57 printf("trying to setup sdram controller\n");
58 /* XXX 440EP's ECC interrupts are on UIC1 */
59 ppc405_sdram_init(env
, pic
[14], nbanks
, ram_bases
, ram_sizes
, do_init
);
62 pci
= ppc4xx_pci_init(env
, pic
,
68 printf("couldn't create PCI controller!\n");
71 isa_mmio_init(PPC440EP_PCI_IO
, PPC440EP_PCI_IOLEN
);
73 /* serial ports on page 126 of 440EP user manual */
75 printf("Initializing first serial port\n");
76 ppc405_serial_init(env
, mmio
,0x300, pic
[0], serial_hds
[0]);
79 printf("Initializing 2nd serial port\n");
80 ppc405_serial_init(env
, mmio
,0x400, pic
[1], serial_hds
[1]);