/* * BCM2838 peripherals emulation * * Copyright (C) 2022 Ovchinnikov Vitalii * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef BCM2838_PERIPHERALS_H #define BCM2838_PERIPHERALS_H #include "hw/arm/bcm2835_peripherals.h" #include "hw/sd/sdhci.h" #include "hw/gpio/bcm2838_gpio.h" /* SPI */ #define GIC_SPI_INTERRUPT_MBOX 33 #define GIC_SPI_INTERRUPT_MPHI 40 #define GIC_SPI_INTERRUPT_DWC2 73 #define GIC_SPI_INTERRUPT_DMA_0 80 #define GIC_SPI_INTERRUPT_DMA_6 86 #define GIC_SPI_INTERRUPT_DMA_7_8 87 #define GIC_SPI_INTERRUPT_DMA_9_10 88 #define GIC_SPI_INTERRUPT_AUX_UART1 93 #define GIC_SPI_INTERRUPT_SDHOST 120 #define GIC_SPI_INTERRUPT_UART0 121 #define GIC_SPI_INTERRUPT_RNG200 125 #define GIC_SPI_INTERRUPT_EMMC_EMMC2 126 #define GIC_SPI_INTERRUPT_PCI_INT_A 143 #define GIC_SPI_INTERRUPT_GENET_A 157 #define GIC_SPI_INTERRUPT_GENET_B 158 /* GPU (legacy) DMA interrupts */ #define GPU_INTERRUPT_DMA0 16 #define GPU_INTERRUPT_DMA1 17 #define GPU_INTERRUPT_DMA2 18 #define GPU_INTERRUPT_DMA3 19 #define GPU_INTERRUPT_DMA4 20 #define GPU_INTERRUPT_DMA5 21 #define GPU_INTERRUPT_DMA6 22 #define GPU_INTERRUPT_DMA7_8 23 #define GPU_INTERRUPT_DMA9_10 24 #define GPU_INTERRUPT_DMA11 25 #define GPU_INTERRUPT_DMA12 26 #define GPU_INTERRUPT_DMA13 27 #define GPU_INTERRUPT_DMA14 28 #define GPU_INTERRUPT_DMA15 31 #define BCM2838_MPHI_OFFSET 0xb200 #define BCM2838_MPHI_SIZE 0x200 #define TYPE_BCM2838_PERIPHERALS "bcm2838-peripherals" OBJECT_DECLARE_TYPE(BCM2838PeripheralState, BCM2838PeripheralClass, BCM2838_PERIPHERALS) struct BCM2838PeripheralState { /*< private >*/ BCMSocPeripheralBaseState parent_obj; /*< public >*/ MemoryRegion peri_low_mr; MemoryRegion peri_low_mr_alias; MemoryRegion mphi_mr_alias; SDHCIState emmc2; BCM2838GpioState gpio; OrIRQState mmc_irq_orgate; OrIRQState dma_7_8_irq_orgate; OrIRQState dma_9_10_irq_orgate; UnimplementedDeviceState asb; UnimplementedDeviceState clkisp; }; struct BCM2838PeripheralClass { /*< private >*/ BCMSocPeripheralBaseClass parent_class; /*< public >*/ uint64_t peri_low_size; /* Peripheral lower range size */ }; #endif /* BCM2838_PERIPHERALS_H */