| /* |
| * Raspberry Pi emulation (c) 2012 Gregory Estrade |
| * Upstreaming code cleanup [including bcm2835_*] (c) 2013 Jan Petrous |
| * |
| * Rasperry Pi 2 emulation and refactoring Copyright (c) 2015, Microsoft |
| * Written by Andrew Baumann |
| * |
| * This work is licensed under the terms of the GNU GPL, version 2 or later. |
| * See the COPYING file in the top-level directory. |
| */ |
| |
| #ifndef BCM2835_PERIPHERALS_H |
| #define BCM2835_PERIPHERALS_H |
| |
| #include "hw/sysbus.h" |
| #include "hw/char/pl011.h" |
| #include "hw/char/bcm2835_aux.h" |
| #include "hw/display/bcm2835_fb.h" |
| #include "hw/dma/bcm2835_dma.h" |
| #include "hw/or-irq.h" |
| #include "hw/intc/bcm2835_ic.h" |
| #include "hw/misc/bcm2835_property.h" |
| #include "hw/misc/bcm2835_rng.h" |
| #include "hw/misc/bcm2835_mbox.h" |
| #include "hw/misc/bcm2835_mphi.h" |
| #include "hw/misc/bcm2835_thermal.h" |
| #include "hw/misc/bcm2835_cprman.h" |
| #include "hw/misc/bcm2835_powermgt.h" |
| #include "hw/sd/sdhci.h" |
| #include "hw/sd/bcm2835_sdhost.h" |
| #include "hw/gpio/bcm2835_gpio.h" |
| #include "hw/timer/bcm2835_systmr.h" |
| #include "hw/usb/hcd-dwc2.h" |
| #include "hw/ssi/bcm2835_spi.h" |
| #include "hw/i2c/bcm2835_i2c.h" |
| #include "hw/nvram/bcm2835_otp.h" |
| #include "hw/misc/unimp.h" |
| #include "qom/object.h" |
| |
| #define TYPE_BCM_SOC_PERIPHERALS_BASE "bcm-soc-peripherals-base" |
| OBJECT_DECLARE_TYPE(BCMSocPeripheralBaseState, BCMSocPeripheralBaseClass, |
| BCM_SOC_PERIPHERALS_BASE) |
| #define TYPE_BCM2835_PERIPHERALS "bcm2835-peripherals" |
| OBJECT_DECLARE_SIMPLE_TYPE(BCM2835PeripheralState, BCM2835_PERIPHERALS) |
| |
| struct BCMSocPeripheralBaseState { |
| /*< private >*/ |
| SysBusDevice parent_obj; |
| /*< public >*/ |
| |
| MemoryRegion peri_mr, peri_mr_alias, gpu_bus_mr, mbox_mr; |
| MemoryRegion ram_alias[4]; |
| qemu_irq irq, fiq; |
| |
| BCM2835SystemTimerState systmr; |
| BCM2835MphiState mphi; |
| UnimplementedDeviceState txp; |
| UnimplementedDeviceState armtmr; |
| BCM2835PowerMgtState powermgt; |
| BCM2835CprmanState cprman; |
| PL011State uart0; |
| BCM2835AuxState aux; |
| BCM2835FBState fb; |
| BCM2835DMAState dma; |
| OrIRQState orgated_dma_irq; |
| BCM2835ICState ic; |
| BCM2835PropertyState property; |
| BCM2835MboxState mboxes; |
| SDHCIState sdhci; |
| BCM2835SDHostState sdhost; |
| UnimplementedDeviceState i2s; |
| BCM2835SPIState spi[1]; |
| BCM2835I2CState i2c[3]; |
| OrIRQState orgated_i2c_irq; |
| BCM2835OTPState otp; |
| UnimplementedDeviceState dbus; |
| UnimplementedDeviceState ave0; |
| UnimplementedDeviceState v3d; |
| UnimplementedDeviceState bscsl; |
| UnimplementedDeviceState smi; |
| DWC2State dwc2; |
| UnimplementedDeviceState sdramc; |
| }; |
| |
| struct BCMSocPeripheralBaseClass { |
| /*< private >*/ |
| SysBusDeviceClass parent_class; |
| /*< public >*/ |
| uint64_t peri_size; /* Peripheral range size */ |
| }; |
| |
| struct BCM2835PeripheralState { |
| /*< private >*/ |
| BCMSocPeripheralBaseState parent_obj; |
| /*< public >*/ |
| BCM2835RngState rng; |
| Bcm2835ThermalState thermal; |
| BCM2835GpioState gpio; |
| }; |
| |
| void create_unimp(BCMSocPeripheralBaseState *ps, |
| UnimplementedDeviceState *uds, |
| const char *name, hwaddr ofs, hwaddr size); |
| void bcm_soc_peripherals_common_realize(DeviceState *dev, Error **errp); |
| |
| #endif /* BCM2835_PERIPHERALS_H */ |