xref: /qemu/hw/ppc/e500.h (revision a8b5c10c7147ebc992de12fdc3f25a219f5c742f)
1 #ifndef PPCE500_H
2 #define PPCE500_H
3 
4 #include "hw/boards.h"
5 #include "hw/platform-bus.h"
6 #include "qom/object.h"
7 
8 #define PLATFORM_CLK_FREQ_HZ (400 * 1000 * 1000)
9 
10 struct PPCE500MachineState {
11     /*< private >*/
12     MachineState parent_obj;
13 
14     /* points to instance of TYPE_PLATFORM_BUS_DEVICE if
15      * board supports dynamic sysbus devices
16      */
17     PlatformBusDevice *pbus_dev;
18 };
19 
20 struct PPCE500MachineClass {
21     /*< private >*/
22     MachineClass parent_class;
23 
24     /* required -- must at least add toplevel board compatible */
25     void (*fixup_devtree)(void *fdt);
26 
27     int pci_first_slot;
28     int pci_nr_slots;
29 
30     int mpic_version;
31     bool has_mpc8xxx_gpio;
32     bool has_esdhc;
33     hwaddr platform_bus_base;
34     hwaddr platform_bus_size;
35     int platform_bus_first_irq;
36     int platform_bus_num_irqs;
37     hwaddr ccsrbar_base;
38     hwaddr pci_pio_base;
39     hwaddr pci_mmio_base;
40     hwaddr pci_mmio_bus_base;
41     hwaddr spin_base;
42     uint32_t clock_freq;
43     uint32_t tb_freq;
44 };
45 
46 void ppce500_init(MachineState *machine);
47 
48 #define TYPE_PPCE500_MACHINE      "ppce500-base-machine"
49 OBJECT_DECLARE_TYPE(PPCE500MachineState, PPCE500MachineClass, PPCE500_MACHINE)
50 
51 #endif
52