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