xref: /openbmc/qemu/include/hw/misc/aspeed_ibt.h (revision 68857fbe4fee5f9fd4f852848f6c3adf08567331)
1*68857fbeSCédric Le Goater /*
2*68857fbeSCédric Le Goater  * ASPEED iBT Device
3*68857fbeSCédric Le Goater  *
4*68857fbeSCédric Le Goater  * Copyright (c) 2016-2021 Cédric Le Goater, IBM Corporation.
5*68857fbeSCédric Le Goater  *
6*68857fbeSCédric Le Goater  * This code is licensed under the GPL version 2 or later.  See
7*68857fbeSCédric Le Goater  * the COPYING file in the top-level directory.
8*68857fbeSCédric Le Goater  */
9*68857fbeSCédric Le Goater #ifndef ASPEED_IBT_H
10*68857fbeSCédric Le Goater #define ASPEED_IBT_H
11*68857fbeSCédric Le Goater 
12*68857fbeSCédric Le Goater #include "hw/sysbus.h"
13*68857fbeSCédric Le Goater #include "chardev/char-fe.h"
14*68857fbeSCédric Le Goater 
15*68857fbeSCédric Le Goater #define TYPE_ASPEED_IBT "aspeed.ibt"
16*68857fbeSCédric Le Goater #define ASPEED_IBT(obj) OBJECT_CHECK(AspeedIBTState, (obj), TYPE_ASPEED_IBT)
17*68857fbeSCédric Le Goater 
18*68857fbeSCédric Le Goater #define ASPEED_IBT_NR_REGS (0x1C >> 2)
19*68857fbeSCédric Le Goater 
20*68857fbeSCédric Le Goater #define ASPEED_IBT_BUFFER_SIZE 64
21*68857fbeSCédric Le Goater 
22*68857fbeSCédric Le Goater typedef struct AspeedIBTState {
23*68857fbeSCédric Le Goater     /*< private >*/
24*68857fbeSCédric Le Goater     SysBusDevice parent_obj;
25*68857fbeSCédric Le Goater 
26*68857fbeSCédric Le Goater     /*< public >*/
27*68857fbeSCédric Le Goater     CharBackend chr;
28*68857fbeSCédric Le Goater     bool connected;
29*68857fbeSCédric Le Goater 
30*68857fbeSCédric Le Goater     uint8_t recv_msg[ASPEED_IBT_BUFFER_SIZE];
31*68857fbeSCédric Le Goater     uint8_t recv_msg_len;
32*68857fbeSCédric Le Goater     int recv_msg_index;
33*68857fbeSCédric Le Goater     int recv_msg_too_many;
34*68857fbeSCédric Le Goater     bool recv_waiting;
35*68857fbeSCédric Le Goater     int in_escape;
36*68857fbeSCédric Le Goater 
37*68857fbeSCédric Le Goater     uint8_t send_msg[ASPEED_IBT_BUFFER_SIZE];
38*68857fbeSCédric Le Goater     uint8_t send_msg_len;
39*68857fbeSCédric Le Goater 
40*68857fbeSCédric Le Goater     MemoryRegion iomem;
41*68857fbeSCédric Le Goater     qemu_irq irq;
42*68857fbeSCédric Le Goater 
43*68857fbeSCédric Le Goater     uint32_t regs[ASPEED_IBT_NR_REGS];
44*68857fbeSCédric Le Goater 
45*68857fbeSCédric Le Goater } AspeedIBTState;
46*68857fbeSCédric Le Goater 
47*68857fbeSCédric Le Goater #endif /* ASPEED_IBT_H */
48