a9mpcore: Embed A9SCUState
Prepares for QOM realize. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Andreas Färber <andreas.faerber@web.de>
This commit is contained in:
		
							parent
							
								
									9eb39db520
								
							
						
					
					
						commit
						fc719d7741
					
				| @ -10,6 +10,7 @@ | ||||
| 
 | ||||
| #include "hw/sysbus.h" | ||||
| #include "hw/intc/arm_gic.h" | ||||
| #include "hw/misc/a9scu.h" | ||||
| 
 | ||||
| #define TYPE_A9MPCORE_PRIV "a9mpcore_priv" | ||||
| #define A9MPCORE_PRIV(obj) \ | ||||
| @ -24,10 +25,10 @@ typedef struct A9MPPrivState { | ||||
|     MemoryRegion container; | ||||
|     DeviceState *mptimer; | ||||
|     DeviceState *wdt; | ||||
|     DeviceState *scu; | ||||
|     uint32_t num_irq; | ||||
| 
 | ||||
|     GICState gic; | ||||
|     A9SCUState scu; | ||||
| } A9MPPrivState; | ||||
| 
 | ||||
| static void a9mp_priv_set_irq(void *opaque, int irq, int level) | ||||
| @ -46,12 +47,15 @@ static void a9mp_priv_initfn(Object *obj) | ||||
| 
 | ||||
|     object_initialize(&s->gic, sizeof(s->gic), TYPE_ARM_GIC); | ||||
|     qdev_set_parent_bus(DEVICE(&s->gic), sysbus_get_default()); | ||||
| 
 | ||||
|     object_initialize(&s->scu, sizeof(s->scu), TYPE_A9_SCU); | ||||
|     qdev_set_parent_bus(DEVICE(&s->scu), sysbus_get_default()); | ||||
| } | ||||
| 
 | ||||
| static int a9mp_priv_init(SysBusDevice *dev) | ||||
| { | ||||
|     A9MPPrivState *s = A9MPCORE_PRIV(dev); | ||||
|     DeviceState *gicdev; | ||||
|     DeviceState *gicdev, *scudev; | ||||
|     SysBusDevice *timerbusdev, *wdtbusdev, *gicbusdev, *scubusdev; | ||||
|     int i; | ||||
| 
 | ||||
| @ -67,10 +71,10 @@ static int a9mp_priv_init(SysBusDevice *dev) | ||||
|     /* Pass through inbound GPIO lines to the GIC */ | ||||
|     qdev_init_gpio_in(DEVICE(dev), a9mp_priv_set_irq, s->num_irq - 32); | ||||
| 
 | ||||
|     s->scu = qdev_create(NULL, "a9-scu"); | ||||
|     qdev_prop_set_uint32(s->scu, "num-cpu", s->num_cpu); | ||||
|     qdev_init_nofail(s->scu); | ||||
|     scubusdev = SYS_BUS_DEVICE(s->scu); | ||||
|     scudev = DEVICE(&s->scu); | ||||
|     qdev_prop_set_uint32(scudev, "num-cpu", s->num_cpu); | ||||
|     qdev_init_nofail(scudev); | ||||
|     scubusdev = SYS_BUS_DEVICE(&s->scu); | ||||
| 
 | ||||
|     s->mptimer = qdev_create(NULL, "arm_mptimer"); | ||||
|     qdev_prop_set_uint32(s->mptimer, "num-cpu", s->num_cpu); | ||||
|  | ||||
| @ -8,23 +8,7 @@ | ||||
|  * This code is licensed under the GPL. | ||||
|  */ | ||||
| 
 | ||||
| #include "hw/sysbus.h" | ||||
| 
 | ||||
| /* A9MP private memory region.  */ | ||||
| 
 | ||||
| typedef struct A9SCUState { | ||||
|     /*< private >*/ | ||||
|     SysBusDevice parent_obj; | ||||
|     /*< public >*/ | ||||
| 
 | ||||
|     MemoryRegion iomem; | ||||
|     uint32_t control; | ||||
|     uint32_t status; | ||||
|     uint32_t num_cpu; | ||||
| } A9SCUState; | ||||
| 
 | ||||
| #define TYPE_A9_SCU "a9-scu" | ||||
| #define A9_SCU(obj) OBJECT_CHECK(A9SCUState, (obj), TYPE_A9_SCU) | ||||
| #include "hw/misc/a9scu.h" | ||||
| 
 | ||||
| static uint64_t a9_scu_read(void *opaque, hwaddr offset, | ||||
|                             unsigned size) | ||||
|  | ||||
							
								
								
									
										31
									
								
								include/hw/misc/a9scu.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								include/hw/misc/a9scu.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| /*
 | ||||
|  * Cortex-A9MPCore Snoop Control Unit (SCU) emulation. | ||||
|  * | ||||
|  * Copyright (c) 2009 CodeSourcery. | ||||
|  * Copyright (c) 2011 Linaro Limited. | ||||
|  * Written by Paul Brook, Peter Maydell. | ||||
|  * | ||||
|  * This code is licensed under the GPL. | ||||
|  */ | ||||
| #ifndef HW_MISC_A9SCU_H | ||||
| #define HW_MISC_A9SCU_H | ||||
| 
 | ||||
| #include "hw/sysbus.h" | ||||
| 
 | ||||
| /* A9MP private memory region.  */ | ||||
| 
 | ||||
| typedef struct A9SCUState { | ||||
|     /*< private >*/ | ||||
|     SysBusDevice parent_obj; | ||||
|     /*< public >*/ | ||||
| 
 | ||||
|     MemoryRegion iomem; | ||||
|     uint32_t control; | ||||
|     uint32_t status; | ||||
|     uint32_t num_cpu; | ||||
| } A9SCUState; | ||||
| 
 | ||||
| #define TYPE_A9_SCU "a9-scu" | ||||
| #define A9_SCU(obj) OBJECT_CHECK(A9SCUState, (obj), TYPE_A9_SCU) | ||||
| 
 | ||||
| #endif | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Andreas Färber
						Andreas Färber