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