hw/arm/armsse: Add support for TYPE_SSE_TIMER in ARMSSEDeviceInfo
The SSE-300 has four timers of type TYPE_SSE_TIMER; add support in the code for having these in an ARMSSEDeviceInfo array. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20210219144617.4782-34-peter.maydell@linaro.org
This commit is contained in:
		
							parent
							
								
									9febd17541
								
							
						
					
					
						commit
						f11de23158
					
				| @ -578,6 +578,11 @@ static void armsse_init(Object *obj) | ||||
|             assert(devinfo->index == 0); | ||||
|             object_initialize_child(obj, devinfo->name, &s->dualtimer, | ||||
|                                     TYPE_CMSDK_APB_DUALTIMER); | ||||
|         } else if (!strcmp(devinfo->type, TYPE_SSE_TIMER)) { | ||||
|             assert(devinfo->index < ARRAY_SIZE(s->sse_timer)); | ||||
|             object_initialize_child(obj, devinfo->name, | ||||
|                                     &s->sse_timer[devinfo->index], | ||||
|                                     TYPE_SSE_TIMER); | ||||
|         } else if (!strcmp(devinfo->type, TYPE_CMSDK_APB_WATCHDOG)) { | ||||
|             assert(devinfo->index < ARRAY_SIZE(s->cmsdk_watchdog)); | ||||
|             object_initialize_child(obj, devinfo->name, | ||||
| @ -1058,6 +1063,16 @@ static void armsse_realize(DeviceState *dev, Error **errp) | ||||
|                 return; | ||||
|             } | ||||
|             mr = sysbus_mmio_get_region(sbd, 0); | ||||
|         } else if (!strcmp(devinfo->type, TYPE_SSE_TIMER)) { | ||||
|             sbd = SYS_BUS_DEVICE(&s->sse_timer[devinfo->index]); | ||||
| 
 | ||||
|             assert(info->has_sse_counter); | ||||
|             object_property_set_link(OBJECT(sbd), "counter", | ||||
|                                      OBJECT(&s->sse_counter), &error_abort); | ||||
|             if (!sysbus_realize(sbd, errp)) { | ||||
|                 return; | ||||
|             } | ||||
|             mr = sysbus_mmio_get_region(sbd, 0); | ||||
|         } else if (!strcmp(devinfo->type, TYPE_CMSDK_APB_WATCHDOG)) { | ||||
|             sbd = SYS_BUS_DEVICE(&s->cmsdk_watchdog[devinfo->index]); | ||||
| 
 | ||||
|  | ||||
| @ -98,6 +98,7 @@ | ||||
| #include "hw/timer/cmsdk-apb-timer.h" | ||||
| #include "hw/timer/cmsdk-apb-dualtimer.h" | ||||
| #include "hw/timer/sse-counter.h" | ||||
| #include "hw/timer/sse-timer.h" | ||||
| #include "hw/watchdog/cmsdk-apb-watchdog.h" | ||||
| #include "hw/misc/iotkit-sysctl.h" | ||||
| #include "hw/misc/iotkit-sysinfo.h" | ||||
| @ -166,6 +167,7 @@ struct ARMSSE { | ||||
|     CMSDKAPBWatchdog cmsdk_watchdog[3]; | ||||
| 
 | ||||
|     SSECounter sse_counter; | ||||
|     SSETimer sse_timer[4]; | ||||
| 
 | ||||
|     IoTKitSysCtl sysctl; | ||||
|     IoTKitSysCtl sysinfo; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Peter Maydell
						Peter Maydell