mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 06:43:53 -06:00
sparc32_dma: introduce new SPARC32_DMA type container object
Create a new SPARC32_DMA container object (including an appropriate container memory region) and add instances of the SPARC32_ESPDMA_DEVICE and SPARC32_LEDMA_DEVICE as child objects. The benefit is that most of the gpio wiring complexity between esp/espdma and lance/ledma is now hidden within the SPARC32_DMA realize function. Since the sun4m IOMMU is already QOMified we can find a reference to it using object_resolve_path_type() allowing us to completely remove all external references to the iommu pointer. Finally we rework sun4m's sparc32_dma_init() to invoke the new SPARC32_DMA object and wire up the remaining board memory regions/IRQs. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Artyom Tarasenko <atar4qemu@gmail.com> Acked-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
e6ca02a46a
commit
6aa62ed6b8
3 changed files with 114 additions and 34 deletions
|
@ -44,6 +44,18 @@ typedef struct LEDMADeviceState {
|
|||
SysBusPCNetState *lance;
|
||||
} LEDMADeviceState;
|
||||
|
||||
#define TYPE_SPARC32_DMA "sparc32-dma"
|
||||
#define SPARC32_DMA(obj) OBJECT_CHECK(SPARC32DMAState, (obj), \
|
||||
TYPE_SPARC32_DMA)
|
||||
|
||||
typedef struct SPARC32DMAState {
|
||||
SysBusDevice parent_obj;
|
||||
|
||||
MemoryRegion dmamem;
|
||||
ESPDMADeviceState *espdma;
|
||||
LEDMADeviceState *ledma;
|
||||
} SPARC32DMAState;
|
||||
|
||||
/* sparc32_dma.c */
|
||||
void ledma_memory_read(void *opaque, hwaddr addr,
|
||||
uint8_t *buf, int len, int do_bswap);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue