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