wdt: Add Aspeed watchdog device model
The Aspeed SoC includes a set of watchdog timers using 32-bit decrement counters, which can be based either on the APB clock or a 1 MHz clock. The watchdog timer is designed to prevent system deadlock and, in general, it should be restarted before timeout. When a timeout occurs, different types of signals can be generated, ARM reset, SOC reset, System reset, CPU Interrupt, external signal or boot from alternate block. The current model only performs the system reset function as this is used by U-Boot and Linux. Signed-off-by: Joel Stanley <joel@jms.id.au> Message-id: 1485452251-1593-2-git-send-email-clg@kaod.org [clg: - fixed compile breakage - fixed io region size - added watchdog_perform_action() on timer expiry - wrote a commit log - merged fixes from Andrew Jeffery to scale the reload value ] Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
26d3202207
commit
854123bf8d
3 changed files with 258 additions and 0 deletions
32
include/hw/watchdog/wdt_aspeed.h
Normal file
32
include/hw/watchdog/wdt_aspeed.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* ASPEED Watchdog Controller
|
||||
*
|
||||
* Copyright (C) 2016-2017 IBM Corp.
|
||||
*
|
||||
* This code is licensed under the GPL version 2 or later. See the
|
||||
* COPYING file in the top-level directory.
|
||||
*/
|
||||
#ifndef ASPEED_WDT_H
|
||||
#define ASPEED_WDT_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
|
||||
#define TYPE_ASPEED_WDT "aspeed.wdt"
|
||||
#define ASPEED_WDT(obj) \
|
||||
OBJECT_CHECK(AspeedWDTState, (obj), TYPE_ASPEED_WDT)
|
||||
|
||||
#define ASPEED_WDT_REGS_MAX (0x20 / 4)
|
||||
|
||||
typedef struct AspeedWDTState {
|
||||
/*< private >*/
|
||||
SysBusDevice parent_obj;
|
||||
QEMUTimer *timer;
|
||||
|
||||
/*< public >*/
|
||||
MemoryRegion iomem;
|
||||
uint32_t regs[ASPEED_WDT_REGS_MAX];
|
||||
|
||||
uint32_t pclk_freq;
|
||||
} AspeedWDTState;
|
||||
|
||||
#endif /* ASPEED_WDT_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue