This is just enough to make reboot and poweroff work. Works for linux, u-boot, and the arm trusted firmware. Not tested, but should work for plan9, and bare-metal/hobby OSes, since they seem to generally do what linux does for reset. The watchdog timer functionality is not yet implemented. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/64 Signed-off-by: Nolan Leake <nolan@sigbus.net> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20210625210209.1870217-1-nolan@sigbus.net [PMM: tweaked commit title; fixed region size to 0x200; moved header file to include/] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
		
			
				
	
	
		
			30 lines
		
	
	
		
			663 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			663 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * BCM2835 Power Management emulation
 | 
						|
 *
 | 
						|
 * Copyright (C) 2017 Marcin Chojnacki <marcinch7@gmail.com>
 | 
						|
 * Copyright (C) 2021 Nolan Leake <nolan@sigbus.net>
 | 
						|
 *
 | 
						|
 * 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_POWERMGT_H
 | 
						|
#define BCM2835_POWERMGT_H
 | 
						|
 | 
						|
#include "hw/sysbus.h"
 | 
						|
#include "qom/object.h"
 | 
						|
 | 
						|
#define TYPE_BCM2835_POWERMGT "bcm2835-powermgt"
 | 
						|
OBJECT_DECLARE_SIMPLE_TYPE(BCM2835PowerMgtState, BCM2835_POWERMGT)
 | 
						|
 | 
						|
struct BCM2835PowerMgtState {
 | 
						|
    SysBusDevice busdev;
 | 
						|
    MemoryRegion iomem;
 | 
						|
 | 
						|
    uint32_t rstc;
 | 
						|
    uint32_t rsts;
 | 
						|
    uint32_t wdog;
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |