xref: /qemu/include/hw/fsi/aspeed_apb2opb.h (revision d64db833d6e3cbe9ea5f36342480f920f3675cea)
1  /*
2   * SPDX-License-Identifier: GPL-2.0-or-later
3   * Copyright (C) 2024 IBM Corp.
4   *
5   * ASPEED APB2OPB Bridge
6   * IBM On-Chip Peripheral Bus
7   */
8  #ifndef FSI_ASPEED_APB2OPB_H
9  #define FSI_ASPEED_APB2OPB_H
10  
11  #include "system/memory.h"
12  #include "hw/fsi/fsi-master.h"
13  #include "hw/sysbus.h"
14  
15  #define TYPE_FSI_OPB "fsi.opb"
16  
17  #define TYPE_OP_BUS "opb"
18  OBJECT_DECLARE_SIMPLE_TYPE(OPBus, OP_BUS)
19  
20  typedef struct OPBus {
21      BusState bus;
22  
23      MemoryRegion mr;
24      AddressSpace as;
25  } OPBus;
26  
27  #define TYPE_ASPEED_APB2OPB "aspeed.apb2opb"
28  OBJECT_DECLARE_SIMPLE_TYPE(AspeedAPB2OPBState, ASPEED_APB2OPB)
29  
30  #define ASPEED_APB2OPB_NR_REGS ((0xe8 >> 2) + 1)
31  
32  #define ASPEED_FSI_NUM 2
33  
34  typedef struct AspeedAPB2OPBState {
35      SysBusDevice parent_obj;
36  
37      MemoryRegion iomem;
38  
39      uint32_t regs[ASPEED_APB2OPB_NR_REGS];
40      qemu_irq irq;
41  
42      OPBus opb[ASPEED_FSI_NUM];
43      FSIMasterState fsi[ASPEED_FSI_NUM];
44  } AspeedAPB2OPBState;
45  
46  #endif /* FSI_ASPEED_APB2OPB_H */
47