xref: /openbmc/qemu/include/hw/misc/iotkit-sysctl.h (revision 394e10d2bb300e4445b0ce37f6d138302f2ff04e)
175750e4dSPeter Maydell /*
275750e4dSPeter Maydell  * ARM IoTKit system control element
375750e4dSPeter Maydell  *
475750e4dSPeter Maydell  * Copyright (c) 2018 Linaro Limited
575750e4dSPeter Maydell  * Written by Peter Maydell
675750e4dSPeter Maydell  *
775750e4dSPeter Maydell  *  This program is free software; you can redistribute it and/or modify
875750e4dSPeter Maydell  *  it under the terms of the GNU General Public License version 2 or
975750e4dSPeter Maydell  *  (at your option) any later version.
1075750e4dSPeter Maydell  */
1175750e4dSPeter Maydell 
1275750e4dSPeter Maydell /*
1375750e4dSPeter Maydell  * This is a model of the "system control element" which is part of the
1475750e4dSPeter Maydell  * Arm IoTKit and documented in
1575750e4dSPeter Maydell  * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ecm0601256/index.html
1675750e4dSPeter Maydell  * Specifically, it implements the "system information block" and
1775750e4dSPeter Maydell  * "system control register" blocks.
1875750e4dSPeter Maydell  *
1975750e4dSPeter Maydell  * QEMU interface:
2075750e4dSPeter Maydell  *  + sysbus MMIO region 0: the system information register bank
2175750e4dSPeter Maydell  *  + sysbus MMIO region 1: the system control register bank
2275750e4dSPeter Maydell  */
2375750e4dSPeter Maydell 
2475750e4dSPeter Maydell #ifndef HW_MISC_IOTKIT_SYSCTL_H
2575750e4dSPeter Maydell #define HW_MISC_IOTKIT_SYSCTL_H
2675750e4dSPeter Maydell 
2775750e4dSPeter Maydell #include "hw/sysbus.h"
2875750e4dSPeter Maydell 
2975750e4dSPeter Maydell #define TYPE_IOTKIT_SYSCTL "iotkit-sysctl"
3075750e4dSPeter Maydell #define IOTKIT_SYSCTL(obj) OBJECT_CHECK(IoTKitSysCtl, (obj), \
3175750e4dSPeter Maydell                                         TYPE_IOTKIT_SYSCTL)
3275750e4dSPeter Maydell 
3375750e4dSPeter Maydell typedef struct IoTKitSysCtl {
3475750e4dSPeter Maydell     /*< private >*/
3575750e4dSPeter Maydell     SysBusDevice parent_obj;
3675750e4dSPeter Maydell 
3775750e4dSPeter Maydell     /*< public >*/
3875750e4dSPeter Maydell     MemoryRegion iomem;
3975750e4dSPeter Maydell 
4075750e4dSPeter Maydell     uint32_t secure_debug;
4175750e4dSPeter Maydell     uint32_t reset_syndrome;
4275750e4dSPeter Maydell     uint32_t reset_mask;
4375750e4dSPeter Maydell     uint32_t gretreg;
44*394e10d2SPeter Maydell     uint32_t initsvtor0;
4575750e4dSPeter Maydell     uint32_t cpuwait;
4675750e4dSPeter Maydell     uint32_t wicctrl;
4775750e4dSPeter Maydell } IoTKitSysCtl;
4875750e4dSPeter Maydell 
4975750e4dSPeter Maydell #endif
50