xref: /openbmc/qemu/include/hw/arm/bcm2836.h (revision bad56236)
1*bad56236SAndrew Baumann /*
2*bad56236SAndrew Baumann  * Raspberry Pi emulation (c) 2012 Gregory Estrade
3*bad56236SAndrew Baumann  * Upstreaming code cleanup [including bcm2835_*] (c) 2013 Jan Petrous
4*bad56236SAndrew Baumann  *
5*bad56236SAndrew Baumann  * Rasperry Pi 2 emulation and refactoring Copyright (c) 2015, Microsoft
6*bad56236SAndrew Baumann  * Written by Andrew Baumann
7*bad56236SAndrew Baumann  *
8*bad56236SAndrew Baumann  * This code is licensed under the GNU GPLv2 and later.
9*bad56236SAndrew Baumann  */
10*bad56236SAndrew Baumann 
11*bad56236SAndrew Baumann #ifndef BCM2836_H
12*bad56236SAndrew Baumann #define BCM2836_H
13*bad56236SAndrew Baumann 
14*bad56236SAndrew Baumann #include "hw/arm/arm.h"
15*bad56236SAndrew Baumann #include "hw/arm/bcm2835_peripherals.h"
16*bad56236SAndrew Baumann #include "hw/intc/bcm2836_control.h"
17*bad56236SAndrew Baumann 
18*bad56236SAndrew Baumann #define TYPE_BCM2836 "bcm2836"
19*bad56236SAndrew Baumann #define BCM2836(obj) OBJECT_CHECK(BCM2836State, (obj), TYPE_BCM2836)
20*bad56236SAndrew Baumann 
21*bad56236SAndrew Baumann #define BCM2836_NCPUS 4
22*bad56236SAndrew Baumann 
23*bad56236SAndrew Baumann typedef struct BCM2836State {
24*bad56236SAndrew Baumann     /*< private >*/
25*bad56236SAndrew Baumann     DeviceState parent_obj;
26*bad56236SAndrew Baumann     /*< public >*/
27*bad56236SAndrew Baumann 
28*bad56236SAndrew Baumann     uint32_t enabled_cpus;
29*bad56236SAndrew Baumann 
30*bad56236SAndrew Baumann     ARMCPU cpus[BCM2836_NCPUS];
31*bad56236SAndrew Baumann     BCM2836ControlState control;
32*bad56236SAndrew Baumann     BCM2835PeripheralState peripherals;
33*bad56236SAndrew Baumann } BCM2836State;
34*bad56236SAndrew Baumann 
35*bad56236SAndrew Baumann #endif /* BCM2836_H */
36