1 /* 2 * ASPEED LPC Controller 3 * 4 * Copyright (C) 2017-2018 IBM Corp. 5 * 6 * This code is licensed under the GPL version 2 or later. See 7 * the COPYING file in the top-level directory. 8 */ 9 10 #ifndef ASPEED_LPC_H 11 #define ASPEED_LPC_H 12 13 #include "hw/sysbus.h" 14 15 #include <stdint.h> 16 17 #define TYPE_ASPEED_LPC "aspeed.lpc" 18 #define ASPEED_LPC(obj) OBJECT_CHECK(AspeedLPCState, (obj), TYPE_ASPEED_LPC) 19 20 #define ASPEED_LPC_NR_REGS (0x260 >> 2) 21 22 enum aspeed_lpc_subdevice { 23 aspeed_lpc_kcs_1 = 0, 24 aspeed_lpc_kcs_2, 25 aspeed_lpc_kcs_3, 26 aspeed_lpc_kcs_4, 27 aspeed_lpc_ibt, 28 }; 29 30 #define ASPEED_LPC_NR_SUBDEVS 5 31 32 typedef struct AspeedLPCState { 33 /* <private> */ 34 SysBusDevice parent; 35 36 /*< public >*/ 37 MemoryRegion iomem; 38 qemu_irq irq; 39 40 qemu_irq subdevice_irqs[ASPEED_LPC_NR_SUBDEVS]; 41 uint32_t subdevice_irqs_pending; 42 43 uint32_t regs[ASPEED_LPC_NR_REGS]; 44 uint32_t hicr7; 45 } AspeedLPCState; 46 47 #endif /* ASPEED_LPC_H */ 48