xref: /qemu/include/hw/misc/aspeed_lpc.h (revision c59f781e3bcca4a80aef5d229488fd45dbfdbd9a)
12ecf1726SCédric Le Goater /*
22ecf1726SCédric Le Goater  *  ASPEED LPC Controller
32ecf1726SCédric Le Goater  *
42ecf1726SCédric Le Goater  *  Copyright (C) 2017-2018 IBM Corp.
52ecf1726SCédric Le Goater  *
62ecf1726SCédric Le Goater  * This code is licensed under the GPL version 2 or later.  See
72ecf1726SCédric Le Goater  * the COPYING file in the top-level directory.
82ecf1726SCédric Le Goater  */
92ecf1726SCédric Le Goater 
102ecf1726SCédric Le Goater #ifndef ASPEED_LPC_H
112ecf1726SCédric Le Goater #define ASPEED_LPC_H
122ecf1726SCédric Le Goater 
132ecf1726SCédric Le Goater #include "hw/sysbus.h"
142ecf1726SCédric Le Goater 
15*c59f781eSAndrew Jeffery #include <stdint.h>
16*c59f781eSAndrew Jeffery 
172ecf1726SCédric Le Goater #define TYPE_ASPEED_LPC "aspeed.lpc"
182ecf1726SCédric Le Goater #define ASPEED_LPC(obj) OBJECT_CHECK(AspeedLPCState, (obj), TYPE_ASPEED_LPC)
192ecf1726SCédric Le Goater 
202ecf1726SCédric Le Goater #define ASPEED_LPC_NR_REGS      (0x260 >> 2)
212ecf1726SCédric Le Goater 
22*c59f781eSAndrew Jeffery enum aspeed_lpc_subdevice {
23*c59f781eSAndrew Jeffery     aspeed_lpc_kcs_1 = 0,
24*c59f781eSAndrew Jeffery     aspeed_lpc_kcs_2,
25*c59f781eSAndrew Jeffery     aspeed_lpc_kcs_3,
26*c59f781eSAndrew Jeffery     aspeed_lpc_kcs_4,
27*c59f781eSAndrew Jeffery     aspeed_lpc_ibt,
28*c59f781eSAndrew Jeffery };
29*c59f781eSAndrew Jeffery 
30*c59f781eSAndrew Jeffery #define ASPEED_LPC_NR_SUBDEVS   5
31*c59f781eSAndrew Jeffery 
322ecf1726SCédric Le Goater typedef struct AspeedLPCState {
332ecf1726SCédric Le Goater     /* <private> */
342ecf1726SCédric Le Goater     SysBusDevice parent;
352ecf1726SCédric Le Goater 
362ecf1726SCédric Le Goater     /*< public >*/
372ecf1726SCédric Le Goater     MemoryRegion iomem;
382ecf1726SCédric Le Goater     qemu_irq irq;
392ecf1726SCédric Le Goater 
40*c59f781eSAndrew Jeffery     qemu_irq subdevice_irqs[ASPEED_LPC_NR_SUBDEVS];
41*c59f781eSAndrew Jeffery     uint32_t subdevice_irqs_pending;
42*c59f781eSAndrew Jeffery 
432ecf1726SCédric Le Goater     uint32_t regs[ASPEED_LPC_NR_REGS];
442ecf1726SCédric Le Goater     uint32_t hicr7;
452ecf1726SCédric Le Goater } AspeedLPCState;
462ecf1726SCédric Le Goater 
472ecf1726SCédric Le Goater #endif /* _ASPEED_LPC_H_ */
48