2021-03-09 12:01:28 +01:00
|
|
|
/*
|
|
|
|
* ASPEED LPC Controller
|
|
|
|
*
|
|
|
|
* Copyright (C) 2017-2018 IBM Corp.
|
|
|
|
*
|
|
|
|
* This code is licensed under the GPL version 2 or later. See
|
|
|
|
* the COPYING file in the top-level directory.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef ASPEED_LPC_H
|
|
|
|
#define ASPEED_LPC_H
|
|
|
|
|
|
|
|
#include "hw/sysbus.h"
|
|
|
|
|
2021-03-09 12:01:28 +01:00
|
|
|
#include <stdint.h>
|
|
|
|
|
2021-03-09 12:01:28 +01:00
|
|
|
#define TYPE_ASPEED_LPC "aspeed.lpc"
|
|
|
|
#define ASPEED_LPC(obj) OBJECT_CHECK(AspeedLPCState, (obj), TYPE_ASPEED_LPC)
|
|
|
|
|
2021-03-09 12:01:28 +01:00
|
|
|
#define ASPEED_LPC_NR_REGS (0x260 >> 2)
|
|
|
|
|
|
|
|
enum aspeed_lpc_subdevice {
|
|
|
|
aspeed_lpc_kcs_1 = 0,
|
|
|
|
aspeed_lpc_kcs_2,
|
|
|
|
aspeed_lpc_kcs_3,
|
|
|
|
aspeed_lpc_kcs_4,
|
|
|
|
aspeed_lpc_ibt,
|
|
|
|
};
|
|
|
|
|
|
|
|
#define ASPEED_LPC_NR_SUBDEVS 5
|
2021-03-09 12:01:28 +01:00
|
|
|
|
|
|
|
typedef struct AspeedLPCState {
|
|
|
|
/* <private> */
|
|
|
|
SysBusDevice parent;
|
|
|
|
|
|
|
|
/*< public >*/
|
|
|
|
MemoryRegion iomem;
|
|
|
|
qemu_irq irq;
|
|
|
|
|
2021-03-09 12:01:28 +01:00
|
|
|
qemu_irq subdevice_irqs[ASPEED_LPC_NR_SUBDEVS];
|
|
|
|
uint32_t subdevice_irqs_pending;
|
|
|
|
|
2021-03-09 12:01:28 +01:00
|
|
|
uint32_t regs[ASPEED_LPC_NR_REGS];
|
|
|
|
uint32_t hicr7;
|
|
|
|
} AspeedLPCState;
|
|
|
|
|
|
|
|
#endif /* _ASPEED_LPC_H_ */
|