On 6/25/21 11:02 PM, Nolan Leake wrote: > 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 <no...@sigbus.net> > --- > hw/arm/bcm2835_peripherals.c | 13 ++- > hw/misc/bcm2835_powermgt.c | 160 +++++++++++++++++++++++++++ > hw/misc/meson.build | 1 + > include/hw/arm/bcm2835_peripherals.h | 3 +- > include/hw/misc/bcm2835_powermgt.h | 29 +++++ > 5 files changed, 204 insertions(+), 2 deletions(-) > create mode 100644 hw/misc/bcm2835_powermgt.c > create mode 100644 include/hw/misc/bcm2835_powermgt.h
> create_unimp(s, &s->txp, "bcm2835-txp", TXP_OFFSET, 0x1000); > create_unimp(s, &s->armtmr, "bcm2835-sp804", ARMCTRL_TIMER0_1_OFFSET, > 0x40); > - create_unimp(s, &s->powermgt, "bcm2835-powermgt", PM_OFFSET, 0x114); > create_unimp(s, &s->i2s, "bcm2835-i2s", I2S_OFFSET, 0x100); > create_unimp(s, &s->smi, "bcm2835-smi", SMI_OFFSET, 0x100); > create_unimp(s, &s->spi[0], "bcm2835-spi0", SPI0_OFFSET, 0x20); ... > +static void bcm2835_powermgt_init(Object *obj) > +{ > + BCM2835PowerMgtState *s = BCM2835_POWERMGT(obj); > + > + memory_region_init_io(&s->iomem, obj, &bcm2835_powermgt_ops, s, > + TYPE_BCM2835_POWERMGT, 0x114); In case Peter asks you to resend your patch because can't apply it, please use a region size of 0x200 here. Alternatively you can increase the odds to get your patch merged by resending it properly (I'm still not sure what broke it) before Peter review the ARM patches next week.