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