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